• 카테고리

    질문 & 답변
  • 세부 분야

    개발 도구

  • 해결 여부

    미해결

git rebase --onto 나 git rebase 를 되돌릴 수 있는 방법이 있을까요?

22.02.18 23:44 작성 조회수 372

0

(다른 가지의 잔가지만 가져오기) 강의 수강 중 질문이 있습니다.
 
git rebase --onto
를 한 이후에 다시 이전 상태로 되돌리려고 하는데
 
git reset --hard 를 해도 되돌아가지 않고
git reflog 를 통해 특정 해시로 돌아가려도 해도 어디로 가야 할지 잘 모르겠습니다.
 
reflog 를 보면 아래처럼 나오는데요
어느 브랜치로 가서(main ?? citrus??) 어떤 해시id 로 리셋해야 할까요?
 
9931c78 (HEAD -> main, citrus) HEAD@{0}: merge citrus: Fast-forward
943f19b HEAD@{1}: checkout: moving from citrus to main
9931c78 (HEAD -> main, citrus) HEAD@{2}: rebase (finish): returning to refs/heads/citrus
9931c78 (HEAD -> main, citrus) HEAD@{3}: rebase (pick): Lime
008af77 HEAD@{4}: rebase (pick): Lemon
943f19b HEAD@{5}: rebase (start): checkout main
943f19b HEAD@{6}: cherry-pick: Cherry
a8bfbbf HEAD@{7}: checkout: moving from root to main
9730f02 (root) HEAD@{8}: commit: Beet
1d6746b HEAD@{9}: commit: Radish
7f8a497 HEAD@{10}: commit: Potato
58ec50a HEAD@{11}: checkout: moving from 58ec50aebddd41222e5d7c9e7b3f619214f8467b to root        
58ec50a HEAD@{12}: checkout: moving from main to HEAD~
a8bfbbf HEAD@{13}: checkout: moving from citrus to main
c88afd5 HEAD@{14}: commit: Lime
b4e7c89 HEAD@{15}: commit: Lemon
52d4d8e HEAD@{16}: checkout: moving from fruit to citrus
af29e52 (fruit) HEAD@{17}: commit: Grape
cadfd02 HEAD@{18}: commit: Cherry
52d4d8e HEAD@{19}: commit: Orange
886bc43 HEAD@{20}: checkout: moving from main to fruit
a8bfbbf HEAD@{21}: commit: Onion
58ec50a HEAD@{22}: commit: Carrot
886bc43 HEAD@{23}: commit: Apple
487f391 HEAD@{24}: commit (initial): FIRST COMMIT

답변 1

답변을 작성해보세요.

0

안녕하세요, 얄코입니다. 🙂

우선, 강의 수강 방법 편에서 말씀드렸듯,
질문은 각 페이지 하단의 안내대로 지정된 제목을 복사하여 메일로 보내주세요.
⭐ 강의질문은 꼭 이렇게 보내주세요! | 얄코 (yalco.kr)

바로 답변을 드리기 전에, 말씀주신 상황을 분석해볼 필요가 있습니다.

git reflog는 모든 행동들을 저장하죠.
때문에, git rebase --onto 를 하시기 직전 git reflog 해보시면

되돌아가야 할 마지막 상태가 어딘지를 확인해보실 수 있을 것입니다.

거기서 git rebase --onto를 해보신다면
git reflog에 단계 여러개가 추가되어 있는 것을 보실 수 있을거에요.

아래처럼 말이죠

-----

3445300 (HEAD -> citrus) HEAD@{0}: rebase (finish): returning to refs/heads/citrus

3445300 (HEAD -> citrus) HEAD@{1}: rebase (pick): Lime

1c53a9a HEAD@{2}: rebase (pick): Lemon

a8bfbbf (main) HEAD@{3}: rebase (start): checkout main

-----

 

여기서 git reset --onto가 여러 동작을 포함한다는 것을 알 수 있습니다.
따서 옮길 브랜치의 커밋마다 이를 진행하는거죠.

즉 이를 모두 되돌리려면

저 부분의 바로 이전, 즉 HappyJay님의 경우

943f19b HEAD@{6}: cherry-pick: Cherry

이 부분으로 가면 될거에요.

이처럼 분석해보면서 진행하시다 보면 더 많은 것을 얻어가실 수 있습니다.

이 부분은 페이지에도 추가해둘게요!

남은 부분도 어려운 부분 있다면 언제든 질문주세요! (메일로요 ^^;)