VSCode Extension인 Git Graph에는 Amend 기능이 아직 없는 것 같아 Sourcetree로 실습할 것을 권장한다.
Commit을 하나 만들었는데 추가할 파일을 깜빡했을 때, Amend라는 명령어를 사용하여 Commit을 수정할 수 있다.
원격 Repository에 Push했어도 수정 가능.
Branch 전략 : 여러 개발자가 협업할 때 Branch를 효과적으로 관리하기 위한 Workflow
ex)
- Main Branch에서 각자 'feat/func'으로 Branch를 따서 개발
- 개발이 끝난 Branch는 Merge into Main Branch
- Main Branch 코드는 자동으로 test.itshirt.com에 배포되어 항상 최신 개발 버전을 볼 수 있다.
- Main Branch에서 굵직한 개발이 끝나면 Merge into Latest Branch, 이를 실제 서버인 itshirt.com에 Realease
Realease한 코드가 담긴 Lastest Branch에 당장 고쳐야 하는 버그가 있다는 것을 늦게 알았다.
Main Branch에서 Fix/Text-bug Branch를 따서 고치고 Merge into Main Branch하여 Latest Branch에 반영해야 하는데, Main Branch에 있는 다른 변경 사항 말고 버그를 고친 Commit만 반영하려 한다.
이때 Cherry-Pick을 사용
Reset[Mixed Mode] = 작업 상태는 그대로 두지만 Index는 Reset, 원하는 Commit으로 Branch를 되돌리면서도 변경 사항은 Commit하기 전 상태로 남겨 두는 기능, 변경 사항을 Stage 아래로 둬서 다시 무엇을 Stage로 올릴 지 고민할 수 있다.
변경 사항이 Stage 아래에 살아났기 때문에 맘대로 다시 수정이 가능하다.
마치 과거로 돌아갔지만 복권 번호는 기억하는 것과 같다.
복권을 살지, 몇 장을 살지는 본인 맘대로 다시 정할 수 있는 것이다.
Reset[Soft Mode] = 모든 Local 변경 사항을 유지, Mixed Mode랑 똑같지만 변경 사항을 Stage에 두기 때문에 다시 Commit을 바로 할 수 있다는 차이점이 존재.
Reset[Hard Mode] = 모든 작업 상태 내 변경 사항을 버림, Checkout이 어디에 있든지, 변경 사항 여부와 상관 없이 어디로든 깔끔하게 이동할 수 있다.
마치 과거로 돌아갔는데 머릿속도 과거의 기억으로 돌아간 것이다.
Commit의 변경 사항을 없애고 싶은데, 깔끔하게 돌아가는 Reset과는 다르게 Revert는 돌아갔다는 흔적을 새로운 Commit으로 남기면서 돌아가는 것.
Stash = Commit하기 전의 여러 파일의 변경 사항들을 임시로 저장할 수 있는 기능
Git Graph로 예시를 들자면, 최상단의 "Uncommitted Changes (x)"가 잠시 사라지는 것.
그 상태에서 변경된 파일에 신경 쓰지 않고 자유롭게 Pull, Checkout 등의 다른 작업이 가능해진다.
참고로 Stash에는 한 번이라도 Add했던 파일들(Tracked Status)만 들어간다.
따라서 새로 만든 파일은 Untracked Status이므로 들어가지 않는다.