Git commit 합체!

김재현·2022년 8월 11일
0

GitHub

목록 보기
6/8

What is HEAD

HEAD란 무엇인가?

  • 현재 체크아웃된 커밋. 내 현재 위치는 어디인가?
    Git 커밋 해시를 이용하여 체크아웃을 하면 해당 커밋으로 이동하고, 체크아웃 한 상태로 브런치를 만들어주면 해당 커밋에 브랜치가 생긴다.
    하지만 이 경우 커밋을 잃어버릴 수 있기 때문에, 웬만하면 HEAD는 특정 브랜치에 합쳐져 있는 것이 안전하다.
  • git commit은 코드가 어떻게 변화했는지 잘 보여줘야하기 때문에 의미 없는 커밋은 없애는 것이 맞다!
    git rebase -i HEAD~6
    HEAD부터 6개의 커밋을 합친다는 뜻.
    어떤 커밋을 메인으로 사용할건지, 어떤 커밋 기록을 합칠건지 골라줘야한다.
    pick : 메인으로 사용할 커밋.
    S : 합쳐질 커밋
  • 가장 오래된 커밋이 항상 pick, 즉 첫번째 줄에 있는 커밋이 pick이어야한다.

cherry-pick

  • 자유분방하게 브랜드 머지가 되어있을 때, 필요한 커밋만 따서 깔끔하게 바꿀수는 없을까?
  • 특정 커밋만 따오는 명령어 git cherry-pick 가져올커밋
  • 커밋로그가 어지러워지기 전 분기점으로 이동 > 해당 위치에서 브랜치 생성

git 브랜치 강제 이동

  • 깔끔하게 브랜치를 하나 새로 만들었다면 이제 메인 브랜치를 linear브랜치와 맞춰줘야한다.
  • 하지만 이미 너무나도 달라져버려 평화로운 merge 방법으로는 해결할 수 없다.
    강제로 main브랜치를 linear 브랜치로 바꾸어야한다.
    git branch -f 브랜치명 (branch명)을 현재 HEAD로 바꿔버린다.
  • 굉장히 위험한 방법이니까, force명령어를 사용할 때는 두번 생각해보자.

0개의 댓글