git reset --hard [돌아가길 원하는 커밋 해시값]
reset --hard를 하면 이전 커밋으로 되돌린 후 이후 커밋 이력을 모두 삭제
reset --soft는 커밋 이력이 지워지지 않고 stage에 올라가 있어 언제든지 다시 commit을 진행 할 수 있는 상태가 됨
reset은 혼자서 하는 프로젝트에서만 사용하고 되도록 revert를 사용하는게 좋음!
git revert [되돌리길 원하는 커밋 해시값]
revert 사용 시 별도 옵션을 사용하지 않았다면 자동으로 되돌린 지점의 commit 메시지가 커밋 메시지로 들어감
revert했을 때 터미널에 vim 모드가 떴을 경우 콜론(:) 누른 후 wq를 입력해 나오면 됨
브랜치는 여러 개발자가 동시에 작업을 진행 할 때 독립적으로 어떤 작업을 할 수 있게 해주는 것
브랜치를 이용하면 각자 독립적인 공간에서 소스코드를 변경할 수 있고 이렇게 분리된 작업 영역에서 변경된 내용들을 나중에 원래의 버전과 비교해 다시 하나의 버전을 만들어 낼 수도 있음
또한 branch로 작업하면서 기록을 남기므로 나중에 합쳤을 때도 어디서 문제가 발생했는지 쉽게 알 수 있음
# 브랜치 생성
git branch [브랜치 명]
예) git branch oz
# 브랜치 목록 확인
git branch
# 생성한 Branch로 이동
git switch [브랜치 명]
예) git switch oz
# 브랜치 생성과 동시에 이동하기
git switch -c oz
# 브랜치 삭제하기
git branch -d (삭제할 브랜치명)
예) git branch -d oz
# 브랜치 이름 바꾸기
git branch -m (기본 브랜치명) (새 브랜치명)
예) git branch -m oz oz_new
주의할 점!!!
branch를 생성하면 생성한 브랜치의 모든 내용을 복사하므로 내가 어떤 브랜치에 있고 어떤 브랜치로 가서 생성을 해야되는지 잘 생각해야 함
예를 들어, main에 기능을 추가해야 되면 main으로 가서 branch를 생성해야 함
branch 생성 후, 각각 commit을 했을 때 log
Head -> 가 가리키는게 현재 내가 있는 branch
소스트리로 봤을 때
생성한 브랜치의 내용을 합치는 방법은 merge와 rebase 두 가지가 있는데 merge는 머지한 것과 이전 커밋 내역들이 모두 남지만 rebase는 커밋 내역이 남지 않음
git merge [합치고 싶은 branch 명]
주의!! merge 전에 main branch로 이동 후 merge를 해야함!
Rebase는 merge와는 다르게 합치고 싶은 브랜치에서 Rebase를 진행 후 main에서 merge를 진행해야 함
#합치려는 branch로 이동하는 명령어
git switch [이동을 원하는 branch]
#합치려는 branch의 커밋 이력을 합칠때 사용하는 명령어
git rebase main
#main branch로 이동
git switch main
#main에서 main branch와 합치고자하는 branch를 merge 진행
git merge [합치고자하는 branch명]
merge는 reset으로 되돌리기 가능
- merge도 하나의 커밋
- reset을 하면 merge 하기 전 해당 브랜치의 마지막 시점으로 이동
git switch new-teams
git rebase main
git switch main
git merge new-teams
소스트리로 봤을 때
new-teams의 커밋이력이 마치 원래 main의 이력이였던것 처럼 하나로 합쳐짐