금일 진행사항
1. git 명령어 학습
- reset
- revert
- branch
- remote
- merge
- rebase
- push
각 진행사항별 상세내용
1. git 명령어 학습
(1) reset : commit 되돌리기
git reset --hard "특정해시값"
ex.
git reset --hard 284b187
- git log 명령어를 이용해서 해시값 확인 (해시값 전체 입력 혹은 7자 까지만 입력해도 됨)
* git log --oneline 명령어를 사용하면 해시값 7자리까지만 표시해 줌.
[reset 특징]
- reset 명령어를 사용하면 삭제 이력이 남지 않음. 언제 누가 왜 삭제했는지 알 수 없음
(존재 조차 모르게 됨? reflog 하면 알 수 있긴 함?)
- 그래서 보통 혼자 작업할 때 reset 명령어를 사용함
[reset 장점]
- 모든 이력이 삭제 되기 때문에 log 기록이 깔끔함.
[reset 주의점]
- 협업의 경우 완전 깔끔하게 없어져도 될 경우 사용해도 무방하나,
- 그 외의 경우에는 웬만하면 commit을 되돌릴 때는 revert 명령어를 사용하길 권장함.
[reset 되돌리기]
a. git reflog를 이용해서 이력 확인 → 복구 시점 해시값 확인
git reflog
b. git reflog를 이용해서 이력 확인 → 복구 시점 해시값 확인
git reset --hard 해시값
c. 다시 되돌림
reset 명령어는 commit을 삭제하거나 삭제한 것을 되돌림
즉, ''해당 해시값으로 가라' 정도로 이해하면 될 것 같음
(2) revert : commit 되돌리기
git revert 해시값
[revert 특징]
- 위 이미지와 같이 "Revert~ "이하로 이력이 표시됨.
명령어 / 특징 | reset | revert |
이력 | 없음 | 있음 |
사용 | 개인 프로젝트 | 협업 프로젝트 |
→ reset은 말 그대로 존재하기 이전 으로 되돌아감 그래서 이력이랄게 없음.
시간을 아예 특정 시간대로 가는 것. 덮어쓰기 한 느낌?
revert는 현재에 있으면서 과거의 특정 사건으로 감. 그래서 나는 과거의 어느 시점으로 가겠다 라는 이력이 남음.
취소선을 긋고 수정한 내용을 적은 느낌?
정도로 이해함... 명확하게 이해되도록 구글링 많이 해봐야겠다.
(3) branch : 독립적인 코드 생성
- 하나의 코드를 두고 독립적으로 작업하기 위함. (사본 만들기?)
- 예를 들어 버그수정용, 신규기능 추가용, 메인코드 등등으로 나누어서
독립적으로 작업하고 업데이트 되는 내용들에 한해서 추후 merge 하기 위함
- 독립적이기 때문에 branch된 코드는 메인 코드 및 서로다른 branch에 영향을 주지 않음!
- branch 생성
git branch [branch명]
ex.
git branch test_update
- branch 생성
git branch
- branch 이동
git switch [branch명]
ex.
git switch test_update
- branch 생성 및 이동
git switch -c [branch명]
ex.
git switch -c test_update
(4) remote : 주소록 추가
git remote add origin https://github.com/username/oz_git_test.git
- 주소록에 http:// 이하 주소를 origin 이라는 이름으로 추가한다 는 뜻
(5) push : git에 업로드
git push -u origin main
- origin에 main branch 업로드 함
- '-u(upstream) : 경로를 설정해준 것. 내가 이곳으로만 업로드하겠다는 것. 즉 초기화
위 라인 최초 입력 후 다음 업로드 부터는 git push 만 해줘도 됨
글을 정리하며...
이전 회사에서 퇴근하기 전에 항상 하던 작업이 git 업로드였었다. 이번 학습으로 느낀건데, 그때 진짜 급하게 git 익히고 막 사용했었네...
중간에 git 충돌나면 그냥 새로 내려받고 다시 작업했었다. 왜냐하면 그게 훨씬 효율적이였기 때문에. 헿
이틀간 git, github에 대해서 학습을 했는데 아직 헷갈리는게 많고 익히지 못 한 명령어들이 많다.
당장엔 init, add, commit, push 정도만 많이 사용할 것 같긴한데, 저장소에 테스트폴더 하나 만들어서 이것저것 해봐야겠다.
'TIL' 카테고리의 다른 글
[TIL] 2025.01.06(월) - python 학습 (0) | 2025.01.12 |
---|---|
[TIL] 2025.01.03(금) - python 학습 (0) | 2025.01.05 |
[TIL] 2025.01.03(금) - git 학습 보충 (0) | 2025.01.04 |
[TIL] 2025.01.02(목) - python (0) | 2025.01.04 |
[TIL] 2024.12.30(월) - Homebrew 설치 및 git (0) | 2024.12.31 |
댓글