티스토리 뷰

반응형

 

 

 

 

 



 

 

 

 

 

rebase 를 진행한 뒤에 푸시를 해야하는데

생각없이 원격저장소에 푸시해놓은 브런치를 rebase 해버렸다. 

(근데 이거 왜 푸시해놨지 ㅋㅋ;;)

 

그래놓고 푸시명령어를 친 후에야 잘못됐음을 인지했다 ^^;

아래와 같은 상황이 되었다.

 

현재 문제 상황

 

이미 D 라는 커밋을 만들었기 때문에 rebase 하면 D' 가 생겨서 

D와 D' 사이에 머지점이 다시 생긴다

 

 

혼자 작업하는 브랜치라면 간단하게 force push 로 해결하면 되긴 한다.

 

$ git push -f

 

강제로 푸시하면 D 커밋이 날라가고 D' 으로 교체된다.

하지만 협업했던 브랜치였다면 포스 푸시를 많이 고려해 보아야 할 것이다.

 

 

 

 

 

 


나는 이 상황을 모두 되돌려서 다시 시작하고 싶었다. (굳이 ... ㅋㅋ)

 

원격에 푸시했던 브랜치를 rebase 하고 push 하면 아래와 같은 상태메세지를 볼 수 있다.

 

$ git status
On branch feature/modify
Your branch and 'origin/feature/modify' have diverged,
and have 3 and 3 different commits each, respectively.
  (use "git pull" if you want to integrate the remote branch with yours)

All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

 

 

 

 

 

 

 

 

깃 참조로그로 feature 브랜치 되돌릴 곳을 확인한다.

HEAD@{4} 의 위치,  rebase 하기전으로 되돌리려고 한다.

 

$ git reflog
05e16ce (HEAD -> feature/modify) HEAD@{0}: rebase (finish): returning to refs/heads/feature/modify
05e16ce (HEAD -> feature/modify) HEAD@{1}: rebase (pick): git test2
cfb862d HEAD@{2}: rebase (pick): git test
b7f0189 (origin/test, test) HEAD@{3}: rebase (start): checkout test
e264ddd (origin/feature/modify) HEAD@{4}: commit: git test2

 

 

 

 

 

reset 명령으로 rebase 하기전으로 되돌렸다.

 

$ git reset --hard HEAD@{4}
HEAD is now at e264ddd git test2

 

 

 

 

 

 

 

다시 참조로그로 확인해보면

rebase 하기 전 상황으로 되돌린 것을 확인했다.

 

$ git reflog
e264ddd (HEAD -> feature/modify, origin/feature/modify) HEAD@{0}: reset: moving to HEAD@{4}
05e16ce HEAD@{1}: rebase (finish): returning to refs/heads/feature/modify
05e16ce HEAD@{2}: rebase (pick): git test2
cfb862d HEAD@{3}: rebase (pick): git test
b7f0189 (origin/test, test) HEAD@{4}: rebase (start): checkout test
e264ddd (HEAD -> feature/modify, origin/feature/modify) HEAD@{5}: commit: git test2

 

 

 

 

 

 

 

이제 원격저장소를 푸시하기 전 상황으로 되돌리려고 한다.

커밋 전으로 head를 돌려놓기 

(나 혼자 테스트하던 브런치라 망정이지 ㅋㅋㅋ )

 

$ git push --force-with-lease origin HEAD~2:feature/modify
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)

 

여기까지 진행하면 아래와 같다.

 

 

다시 시작하고 싶은 상황

 

 

 

깃은 정말 어느 상황으로든 해결하고 되돌릴 수 있어서 아주 좋은 형상관리툴이다.

지금 같은 상황은 복잡한 정도도 아니어서 금방 해결 할 수 있었지만,

그런 상황을 만들지 않기 위해 잘 생각해야 겠다.

 

 

 

 



 

 

 

 

 

 

참고블로그
 

왜 git rebase 후에 git push -f를 해야 할까?

git rebase를 사용 후 만날 수 있는 문제와 그 해결 방안을 끄적였다.

velog.io

 

master branch and 'origin/master' have diverged, how to 'undiverge' branches'?

Somehow my master and my origin/master branch have diverged. I actually don't want them to diverge. How can I view these differences and merge them?

stackoverflow.com

 

 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Total
Today
Yesterday