git rebase fatal : 단일 개정이 필요했습니다


162

공용 저장소의 분기가 있고 원래 저장소의 현재 커밋으로 분기를 업데이트하려고합니다.

$ git fetch <remote>
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 20 (delta 12), reused 0 (delta 0)
Unpacking objects: 100% (20/20), done.
From git://github.com/path_to/repo
  9b70165..22127d0  master     -> $/master
$ git rebase <remote>
fatal: Needed a single revision
invalid upstream <remote>

<remote>내 원격 이름 대신에 실제로 내 원격 이름이 아닙니다. 이 오류에 대한 문서는 약간 느슨한 것 같습니다.


2
Windows 명령 프롬프트에서 "git rebase --interactive c4e9c94 ^"를 사용하여 관련이없는 이유로이 오류가 발생했습니다. "More?"라는 메시지가 표시되었고 프롬프트에 응답 한 방식에 관계없이 "치명적 : 단일 개정이 필요했습니다"라고 말했습니다. 그러나 bash에서 동일한 명령을 실행하면 정상적으로 작동했습니다.
Richard Beier

참고로, "원격"으로 나열된 업스트림 브랜치를 보유하는 것 외에도 리베이스하려는 특정 브랜치를 가져와야했습니다. "git fetch <upstream> master". "git fetch <upstream>"으로 <upstream> 만 가져 오면 여전히이 오류가 발생합니다.
단 맛

답변:


132

리모컨의 이름이 아닌 지점 이름 (또는 다른 커밋 식별자)을 제공해야합니다 git rebase.

예 :

git rebase origin/master

아니:

git rebase origin

커밋 참조가 필요한 인수로 사용될 때 origin심판으로 해결해야 하지만 origin/HEAD모든 리포지토리가 그러한 참조를 얻지는 못하므로 작동하지 않을 수 있습니다 (귀하의 경우). 명시 적으로 지불합니다.


2
후자는 실제로 작동 origin하는 참조 컨텍스트로 해석되어야합니다 origin/HEAD. 리포지토리 origin/HEAD가 무엇인지 모르는 것을 보았습니다 ...
Cascabel

1
@Jefromi : 나는 두려워 난 당신을 생각하지 않는, 그냥 시도했다 git rebase origin(여기서 테스트 저장소에 originA가 들어 HEAD)와 나는 OP의 오류가 발생합니다. rebase에 대한 설명서에는 원격 이름이에 유효한 것으로 나와 있지 않습니다 <upstream>.
CB Bailey

1
@Charles : 글쎄, 그것은 버그 일 수 있습니까? 내 git.git 클론에서 git rev-parse origin와 같이 작동합니다 git rebase origin(대화식을 포함하여 최신, 빨리 감기 및 실제 rebase 사례).
Cascabel

@Jefromi : 당신 git describe은 할 수 HEAD있습니까?
CB Bailey

@ 찰스 : 최신 v1.7.4-rc3! 나는이 하나를 찾고 분열을 열심히 열망하지 않습니다 ...
Cascabel

28

지점 이름의 철자를 확인하십시오 . 나는 스토리 브랜치를 rebasing하고 (즉 branch_name) 스토리 부분을 잊어 버렸습니다. (즉 story/branch_name) 그런 다음 git 은이 맥락에서별로 의미가없는이 오류를 나에게 뱉었습니다.


정확히 이것입니다. 입력 된 featureName지점이 실제로 이름 때features/featureName
pkamb

3
또한 간단한 오타를 더 철저히 찾는 것이 좋습니다. 브랜치를 만들 때 실수로 두 글자를 바꿨 으며이 오타는 실제로 발견하기가 어려웠습니다.
Olga


10

문제는 리베이스하려는 지점에서 지점을 벗어났다는 것입니다. 현재 지점이 처음 작성된 커밋이 포함되지 않은 지점으로 리베이스 할 수 없습니다.

로컬 분기 X를 푸시 한 Y로 리베이스 한 다음 분기 (X에서 처음 생성)를 푸시 한 Y로 리베이스하려고 시도했을 때 이것을 얻었습니다.

X로 rebasing하여 나를 위해 해결되었습니다.

현재 지점이 해당 지점의 조상에서 유래하는 경우 원격 지점 (잠재적으로 체크 아웃되지 않음)을 기반으로하는 데 아무런 문제가 없습니다.


3
을 사용하여 이러한 분기로 리베이스 할 수 있습니다 --onto. 모든 것은 일반적인 저장소 (일반 리포지토리)의 일부 이므로 문제가 아닙니다. foo추적 할 분기를 아직 만들지 않았을 때 rebase하려고 할 때이 오류가 발생했습니다 origin/foo.
cdunn2001

0

원격 origin:

$ echo "ref: refs/remotes/origin/master" > .git/refs/remotes/origin/HEAD

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