반응형
__git pull upstream main 했더니 merge 생기고 꼬일때 __
메인저장소 커밋 기록 깔끔하게 가져오고 싶을떄 __
현재상황
upstream 에 커밋이 있고
fork 한 origin/main 에도 커밋이 있는 상태
$ git fetch upstream dev
$ git log --all --oneline --graph
* b2b72e3 (HEAD -> main, origin/main, origin/HEAD) fork. 1
| * 247aab5 (upstream/dev) a (#2)
| * e8b097e origin 1
|/
* 8892264 Initial commit
fork 한 내 레포와 로컬은 1개의 커밋을 진행했는데fetch
해보니까 upstream
에서는 벌써 2개의 커밋이 올라가있다
만약 그냥 pull 때린다면?
그냥 upstream
은 받기만 하고 나는 내 커밋만 하고 싶은데
(일단 원격과 내 커밋이 동일한 파일을 수정하지 않음)
쓸데없이 merge 커밋이 하나 추가가 되어버려서 더러워졌다..
맘에 안드니 방법을 찾아보자
일단 pull 하기 전으로 돌아가야 하니까 origin/main 의 커밋 아이디로git reset --hard b2b72e3
그러면? rebase
아래처럼 rebase 날리면 머지 커밋 없이 합쳐진다.
$ git rebase upstream/dev
Successfully rebased and updated refs/heads/main.
$ git log --all --oneline --graph
* 7719d39 (HEAD -> main) fork. 1
* 247aab5 (upstream/dev) a (#2)
* e8b097e origin 1
| * b2b72e3 (origin/main, origin/HEAD) fork. 1
|/
* 8892264 Initial commit
주의 이때는 /
써야함, git rebase upstream dev
안됨
그럼 푸시하고 어떻게 로컬에 되어 잇는지 볼까?
- 안된다!
- 왜?
rebase 전/후를 보면 원격의 commit 기록이 달라지게 됐기 때문에
(위치가 달라짐) 오류가 나는거임
원격 레포에 있는거랑 지금 로컬 레포랑 순서가 다른데 어떡해?
라고 하는거니까
그니까 force push
로 강력하게 대응하셈
(fork 한 내 로컬 이니까 ㄱㅊㄱㅊ, fork 한거 아니고 맨위에 하면 안돼요!)
git push --f origin main
- 내 레포에 잘 드러갔다!
반응형
'Git' 카테고리의 다른 글
[Git] Fork 하고 풀리퀘 하는 법 [협업] (1) | 2024.09.23 |
---|---|
[Git] branch 2개 상태 똑같게 만들기 (0) | 2024.09.23 |
[Git] LF will be replaced by CRLF (0) | 2024.09.23 |
[Git] 커밋 여러개 하나로 합치기 (1) | 2024.07.03 |
[Git] 명령어 정리 (1) | 2024.07.03 |