리베이스를 완전히 취소하십시오


255

나는 이와 같은 rebase를 수행했다.

git rebase --onto master new_background_processing export_background_processing

그것은 내가 원하는 것을하지 않았으므로 재설정을 수행했습니다.

git reset --hard HEAD@{1}

지점을 원래 상태로 되돌 렸지만 git status를 입력하면이 메시지가 나타납니다.

# You are currently rebasing branch 'export_background_processing' on 'e378641'.

리베이스를 완전히 취소하려면 어떻게합니까? 그 자체가 무엇을 의미하는지 잘 모르겠습니다.


16
git rebase --abort
Micha Wiedenmann

6
Git 2.12는 이제 다음을 제공합니다 git rebase --quit. 아래 내 답변
VonC

답변:


407

사용하십시오 git rebase --abort. 로부터 공식 리눅스 커널 문서git rebase :

git rebase --continue | --skip | --abort | --edit-todo

5
내 경우에는 git rebase --abort무언가를 엉망으로했기 때문에 작동하지 않았습니다. 다음과 같은 오류 만 발생 error: could not read '.git/rebase-apply/head-name': directory of file does not exist했습니다.. git rebase --quit 설명 울부 짖는 소리가 내 문제를 해결했다.
Kout

84

과거의 재기지가 제대로 중단되지 않은 경우 이제 (Git 2.12, Q1 2017) git rebase --quit

Nguyễn Thái Ngọc Duy ( )의 커밋 9512177 (2016 년 11 월 12 일)을 참조하십시오 . ( Junio ​​C Hamano의해 병합 -- 커밋 06cd5a1 , 2016 년 12 월 19 일)pcloudsgitster

rebase: --quit정리 rebase에 추가 하고 다른 모든 항목은 그대로 둡니다.

진행중인 리베이스를 중단하기로 결정하고 다른 일을하기로 결정했지만 " git rebase --abort"를 먼저 하는 것을 잊는 경우가 있습니다. 또는 리베이스가 너무 오랫동안 진행되어 왔으므로 잊어 버렸습니다. (예 : 다른 리베이스를 시작하여) 걸음을 깨달을 때까지 이미 단계가 너무 늦었습니다. 해결책은 일반적으로

rm -r .git/<some rebase dir>

그리고 당신의 인생을 계속하십시오.
그러나 두 개의 서로 다른 디렉토리가있을 수 있으며 <some rebase dir>(그리고 rebase의 작동 방식에 대한 지식이 분명히 필요합니다) .git최상위 디렉토리에 있지 않거나 연결된 작업 트리에 있지 않으면 " "부분이 훨씬 더 길어질 수 있습니다. 그리고 " rm -r"은 (는) 매우 위험합니다 .git. 실수로 인해 객체 데이터베이스 나 다른 중요한 데이터가 손상 될 수 있습니다.

git rebase --quit이 사용 사례에 대해서는 " "을 제공하여 " "전례를 모방합니다 git cherry-pick --quit.


Git 2.27 (Q2 2020) 이전 git merge --autostash에는 초기 더티 상태를 유지하기 위해 " "이 (가) 작성한 숨김 항목 이 잘못 git rebase --quit수정되어 " "(으) 로 삭제 되었습니다.

Denton Liu ( )의 commit 9b2df3e (2020 년 4 월 28 일)를 참조하십시오 . (의해 병합 - Junio C 하마노 -3afdeef 커밋 2,020 29 아웃 날짜)Denton-L
gitster

rebase: 자동 저장 항목을 stash reflog에 저장--quit

서명자 : Denton Liu

에서 a03b55530a ( " merge: 가르쳐 --autostash 옵션", 2020년 4월 7일, 힘내 v2.27.0 - 병합 에 나열된 배치 # 5 )의 --autostash옵션이 도입되었다 git merge.

" " git pull"가 자동으로 숨겨지고 보류중인 변경 사항을 표시 할 수 있습니까 ? "를 참조하십시오.

특히 git merge --quitautostash 항목이있는 상태에서 실행하면 숨김 참조 로그에 저장됩니다.

이것은 git rebase --quitautostash 항목이 단순히 존재하지 않는 현재 동작과 대조됩니다 .

git merge --quitin 의 동작을 채택하고 git rebase --quitautostash 항목을 삭제하지 않고 숨김 참조 로그에 저장하십시오.


3
이것은 git rebase방금 수행 한 것처럼 변경하지 않고 작업 디렉토리를 재설정 할 때 작업 디렉토리를 재설정하는 부작용을 피하는 데 매우 유용합니다 .
Warlike Chimpanzee

12

리베이스를 완료하지 않아서 운이 좋으므로 여전히 할 수 있습니다 git rebase --abort. 리베이스를 완료했다면 ( 역사를 다시 쓴다 ) 상황이 훨씬 더 복잡했을 것이다. 잠재적으로 손상 될 수있는 작업 (특히 기록 다시 쓰기)을 수행하기 전에 분기 팁에 태그를 지정하여 무언가가 터질 경우 되 감을 수 있습니다.


8

당신이 경우 "리베이스" , "이미 시작 REBASE" 당신이 원하는 취소를 , 단지 의견을 (#)REBASE 편집기에있는 모든 커밋.

결과적으로 명령 행 메시지가 나타납니다.

Nothing to do
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.