source

손상된 대화형 리베이스를 수정하는 방법은 무엇입니까?

factcode 2023. 5. 14. 11:09
반응형

손상된 대화형 리베이스를 수정하는 방법은 무엇입니까?

저는 지역 깃 저장소에 약간의 혼란을 만들었습니다.저는 다음 지침을 사용하여 중단된 커밋을 수정하려고 했습니다."git commit --amend"(및 gitrebase --interactive)를 실행하기 전에 변경사항이 잘못되었다고 판단하여 "git reset HEAD --hard"를 실행했습니다.좋은 생각이 아닙니다.

이제 대화형 리베이스는 "고착"된 것 같습니다.Git는 현재 분기를 (|REBASE-m)로 표시합니다.저장소 내의 모든 명령(cd..., ls, gitrebase...)은 다음 오류를 발생시킵니다.

cat: .git/rebase-cat/head-name:해당 파일 또는 디렉터리가 없습니다.

Gitrebase -- 중단은 다음과 같습니다.

$ git rebase --abort
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/head-name: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/orig-head: No such file or directory
HEAD is now at 4c737fb Revert "Modified file names"
rm: cannot remove `c:/_work/project/src/git/.git/rebase-merge/done': Permission denied
rm: cannot remove directory `c:/_work/project/src/git/.git/rebase-merge': Directory
not empty
cat: .git/rebase-merge/head-name: No such file or directory

Gitrebase 결과는 다음과 같습니다. 계속하십시오.

$ git rebase --continue
cat: c:/_work/project/src/git/.git/rebase-merge/prev_head: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/end: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/msgnum: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/onto: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
prev_head must be defined
cat: .git/rebase-merge/head-name: No such file or directory

아이디어 있어요?잘 생각한 리베이스 작업을 시작하기 전의 상태로 다시 설정하고 싶습니다.

다음은 git log -- 한 줄로 상황을 보여주는 방법입니다.

4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script

그리고 이것은 괜찮습니다.

저는 msysgit v1.7.0.2를 사용하고 있습니다.

저는 이것에 갇혔습니다.제가 헤드네임 파일을 만들었는데, 그 파일을 찾을 수 없다는 또 다른 오류가 발생해서 그 파일을 만들었습니다.그런 다음 '.git/rebase-apply/to'를 읽을 수 없다는 또 다른 오류가 발생했습니다.해당 파일 또는 디렉터리가 없습니다.

그래서 저는 리베이스용 Git 문서를 보고 다른 명령을 찾았습니다.

git rebase --quit

이것은 저를 아무런 변화 없이 제 지점으로 되돌려 놓았고, 저는 저의 기본 재배치를 새로 시작할 수 있었습니다.

Git가 그를 제거하려고 한 것 같습니다..git/rebase-merge디렉터리를 완전히 제거할 수 없습니다.그 폴더를 복사해 보셨습니까?또한 복사하여 제거합니다..git/rebase-apply폴더(있는 경우).

나도 좀비 빔 때문에 비슷한 문제가 있었습니다.exe 프로세스작업 관리자에서 제거한 다음git rebase --abort고쳤습니다.

@Laura Slocum의 답변에 감사드립니다.

리베이스를 하다가 일을 망쳤고 헤드가 분리되었습니다.

 error: could not read orig-head

그것 때문에 기지개를 켜지 못했습니다.

분리된 HEAD에는 정확하게 나의 정확한 기본 재배치 원하는 상태가 포함되어 있는 것 같아, 나는 실행했습니다.

rebase --quit

그리고 나서 분리된 머리에 묶기 위해 새로운 임시 분기를 확인했습니다.

제가 리베이스하고 싶었던 지점과 비교해 보면, 새로운 임시 지점이 정확히 제가 도달하고 싶었던 상태임을 알 수 있습니다.감사해요.

이클립스에서도 같은 문제가 있었습니다.Eclipse에서 기본값=>중단할 수 없습니다.

Gitrebase를 실행하는 것 -- Git Bash의 중단은 저에게 효과가 있었습니다.

Windows(윈도우)에서는 시스템을 다시 시작할 의사가 없거나 재시작할 수 없는 경우 아래를 참조하십시오.

프로세스 탐색기 설치: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

프로세스 탐색기에서 찾기 > 파일 핸들 또는 DLL...

오류에 언급된 파일 이름을 입력합니다(오류의 경우 'git-rebase-to-do'였지만 위의 질문에서는 'done'이었습니다).

프로세스 탐색기는 파일을 잠그는 프로세스를 강조 표시합니다(나에게는 'grep'였습니다).

프로세스를 종료하면 일반적인 방법으로 GIT 작업을 중단할 수 있습니다.

다음 이름의 파일을 만듭니다.

touch .git/rebase-merge/head-name

사하지않는을 사용합니다.git rebase

에는 8파운드 8파운드입니다.git rebase --abort그리고.git rebase --continue던지고 있었습니다.

오류: '.git/rebase-message/head-name'을(를) 읽을 수 없습니다.해당 파일 또는 디렉터리가 없습니다.

수동으로 다음을 제거하여 이 문제를 해결했습니다..git\rebase-apply디렉토리입니다.

는 중용사를 합니다.git version 2.19.2.windows.1.

내게 효과가 있었던 유일한 것은 그것을 제거하는 것이었습니다..git/rebase-apply/을 합니다.git reset --hard.

위에서 언급한 모든 단계를 시도해 보았지만 아무 것도 효과가 없었습니다.마지막으로 컴퓨터를 다시 시작하면 다음 문제가 해결됩니다.d

서브라임과 함께Windows의 텍스트 3, 대화형 커밋 에디션에 사용되는 Sublime 창을 닫기만 하면 문제가 해결됩니다.

만약 당신이 아래 상태가 되고 베이스를 다시 작동하지 않는다면,

$ git status
rebase in progress; onto (null)
You are currently rebasing.
  (all conflicts fixed: run "git rebase --continue")

그러면 첫 번째 실행은

$ git rebase -quit

그런 다음 리로그에서 이전 상태를 복원합니다.

$ git reflog
97f7c6f (HEAD, origin/master, origin/HEAD) HEAD@{0}: pull --rebase: checkout 97f7c6f292d995b2925c2ea036bb4823a856e1aa
4035795 (master) HEAD@{1}: commit (amend): Adding 2nd commit
d16be84 HEAD@{2}: commit (amend): Adding 2nd commit
8577ca8 HEAD@{3}: commit: Adding 2nd commit
3d2088d HEAD@{4}: reset: moving to head~
52eec4a HEAD@{5}: commit: Adding initial commit

사용.

$ git checkout HEAD@{1} #or
$ git checkout master #or
$ git checkout 4035795 #or

제 경우에는 각 Git 프로젝트에서 SmartGit의 로그를 열고 각 프로젝트 디렉토리에서 Total Commander를 열었기 때문입니다.둘 다 닫았을 때 저는 아무 문제 없이 리베이스할 수 있었습니다.

생각하면 할수록 토탈 커맨더, 즉Gitrebase가 무언가를 시도하려고 했던 열린 디렉토리에 잠금이 있는 Windows.

친절한 조언:무언가를 고치려고 할 때는 항상 한 번에 하나씩 변경해야 합니다.;)

X개의 커밋 수에 대한 기본 재배치를 만족스럽게 완료했으면 마지막 명령은 다음과 같아야 합니다.git rebase --continue그러면 프로세스가 완료되고 기본 재배치 모드가 종료됩니다.

저도 같은 문제가 있었습니다.다른 게시물에서 제안한 대로 프로세스 탐색기를 사용하여(해당 게시물을 찾을 수 없음) 파일에 잠금이 설정된 프로세스를 확인하고 제거한 다음 필요에 따라 --continue 또는 --abort를 실행합니다.

저의 경우, 이 모든 옵션을 테스트하고 여전히 문제가 있는 후에 시도했습니다.sudo git rebase --abort그리고 그것은 모든 것을 했습니다.

재부팅을 제외한 다른 모든 것을 시도했지만, 나에게 효과가 있었던 것은.rm -fr .git/REBASE_HEAD

VSCode에서 실행 중인 커밋으로 인해 실행이 중단되었습니다.VS Code 프로세스를 종료하고 기본값으로 복구(R)했습니다.고쳐줬어요.

"작성자-스크립트"가 제가 마지막으로 했던 (사고로) 커밋에서 이미 사용되었기 때문에 누락되었습니다.저는 그 마지막 약속을 취소하고, 모든 것을 하나로 했습니다. (깃가지 없는 fwiw를 사용하고 있습니다.)

저는 이클립스에서 Git을 사용하고 있고 저도 같은 문제를 겪고 있었습니다.

결국 "Rebase..." 메뉴 항목이 일시적으로 하위 메뉴로 변환되었음을 알게 되었습니다.

팀 -> 기본 재배치 -> 중단

그것은 나에게 효과가 있었다.

언급URL : https://stackoverflow.com/questions/3685001/how-to-fix-corrupted-interactive-rebase

반응형