똑같은 커밋이 중복으로 생긴 원인..이 뭘까?
일단.. 커밋 해시가 달랐다. 똑같은 메시지인데, 커밋 해시만 차이가 있다.
내 커밋 돌려줘~!
가설
1. push를 한 결과 원격에 이미 커밋 기록이 있는데, 내가 rebase를 해서 그런가?
2. stash 해서..?
3. rebase를 하게되면 커밋 해시가 새로운 걸로 바뀐다고 알고있다.
일단 중복 커밋을 삭제하기 위해 reset --hard를 할 시간이다..
너무 무섭다.. 마음의 준비를 하자....
문제1
rebase를 하며 로컬에서 커밋이 합쳐져서, 커밋이 중복으로 생성됐다.(해시값만 다르고 커밋 메시지는 동일)
해결 방법:
그냥 이후에 생긴 커밋은 없애기 위해 원하는 commit으로 head를 돌린다.
git reset --hard [해시값]
그런데 rebase를 하면서 그래프가 이렇게 그려졌다.
가설 1. 아마 내가 origin/main 또는 main 둘중에 하나로 rebase를 하는 과정에서 발생한 것 같은데.. 뒷부분이 안보여서 어떤 브랜치인지 확인이 안되니, 추후 다시 실험해보려고 한다.
파랑색에 머지되는 예쁜 산봉우리같은 모습이어야 하는데, 자주색에 가지가 뻗어서 평행사변형(?)같은 모양이 되어버렸다..
PR을 하고 현재 브랜치랑 합치면 저 모양이 유지될 것 같아서, 다시 origin/main을 rebase를 했는데
git rebase origin/main 의 결과~
악! 또?
놀랐지만 침착하고
잘 읽어보면 자주색 가장 마지막 head가 'origin/브랜치명' 이다.
내가 이전에 push한 원격 브랜치의 커밋이 저렇게 해시가 바뀌면서 로컬에 리베이스 된 것.
따라서, push force를 하면 원격에 있는 나의 브랜치는 현재 내 로컬 브랜치와 맞춰지게 된다(는 것을 가정하고 push force를 진행했다)
그리고 자주색 왜 방향이 저렇게 되는거지? 생각해보면 ...
어라?왜지?
chheckout main한 뒤 rebase를 해서, 메인브랜치에서 병합된 것 같다.
그리고 현재 작업중인 브랜치에서 rebase origin/main을 한 뒤,
origin의 branch에 이미 push한 커밋이 중복되었는데, push force를 하면 origin branch도 local branch와 맞춰지게 된다.
'Front-End > git' 카테고리의 다른 글
husky, commitlint error (0) | 2023.12.02 |
---|---|
vscode discard changes (0) | 2023.10.17 |
하나의 파일에 포함된 여러 수정 사항을, 분리하여 commit 하는 방법(vscode) (0) | 2023.09.07 |
rebase와 merge (1) | 2023.08.20 |
원격 저장소 코드와 로컬 저장소 코드 동일 여부 확인하기 (0) | 2023.08.18 |