자식 : 당신의 지점은 X 커밋보다 앞서 있습니다.
이것이 실제로 어떻게됩니까?
나는 현재 하나의 리포지토리에서 혼자 작업하고 있으므로 이것이 내 워크 플로우입니다.
- 파일 변경
- 범하다
- 만족할 때까지 1-2 반복
- 마스터로 푸시
그런 다음 내가 할 때 git status
내 커밋이 X 커밋 (아마도 내가 저지른 커밋 수와 같음 ) 보다 앞서 있다고 알려줍니다 . 코드를 푸시 할 때 실제로 로컬로 캐시 된 파일 (.git 폴더)을 업데이트하지 않기 때문입니까? git pull
이 이상한 메시지를 '수정'하는 것처럼 보이지만 여전히 왜 발생하는지 궁금합니다. 어쩌면 git 잘못 사용하고 있습니까?
메시지에 인쇄 된 분기를 포함하여
내 현지 지점은 마스터보다 앞서 있습니다
현재 브랜치를 어디로 밀거나 당기나요
나는 GitHub로 밀고 그 시점에서 작업중 인 컴퓨터를 가져 오는 중입니다. 내 로컬 사본은 내가 작업하는 유일한 사람이므로 항상 최신 상태입니다.
실제로 원격 저장소를 확인하지 않습니다.
그것이 내가 생각한 것인데, 나는 그것이 그것에 대한 나의 이해가 올바른지 확신 할 것이라고 생각했다.
당신은 그것에 몇 가지 추가 논쟁을 전달하고 있습니까?
내가 볼 수있는 것은 아니지만 내 끝에 재미있는 구성이있을 수 있습니까?
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
당신이를 수행 한 후이 메시지가 나타나면 git pull remote branch
하는과를 다음보십시오 git fetch
. (선택적으로, git fetch -p
저장소에서 삭제 된 분기를 제거하기 위해 실행 )
Fetch는 원격 브랜치의 로컬 표현을 업데이트하는 것으로 보입니다 git pull remote branch
.
사용하다
git pull --rebase
--rebase 옵션은 git이 로컬 커밋을 옆으로 옮기고 원격과 동기화 한 다음 새 상태에서 커밋을 적용하려고 시도 함을 의미합니다.
이 3 가지 간단한 명령을 사용하십시오
1 단계 :git checkout <branch_name>
2 단계 :git pull -s recursive -X theirs
3 단계 :git reset --hard origin/<branch_name>
자세한 내용은 https://stackoverflow.com/a/39698570/2439715
즐겨.
난 당신이 메시지를 잘못 읽고있는 것 같아요 - 지사는 앞서 아니다 master
, 그것은 이다 master
. 그것은 앞서의 origin/master
인, 원격 추적 브랜치 마지막에서 원격 저장소의 상태를 기록 push
, pull
또는 fetch
. 그것은 당신이 한 일을 정확히 말해줍니다. 당신은 리모컨보다 앞서 있으며 그것은 당신에게 푸시를 상기시켜줍니다.
누군가가 당신이 당신의 메시지를 잘못 읽고 있다고 말했지만 그렇지 않습니다. 이 문제는 실제로 <project>/.git/config
파일 과 관련이 있습니다. 다음과 비슷한 섹션이 될 것입니다.
[remote "origin"]
url = <url>
fetch = +refs/heads/*:refs/remotes/origin/*
프로젝트의 .git / config 파일에서 인출 라인을 제거하면 "지점은 N
커밋 으로 '원점 / 마스터'보다 앞서 있습니다." 성가심.
또는 희망합니다. :)
나는 잡아 당김 만하는 무대 서버 에서이 문제를 겪었습니다. 그리고 하드 리셋을 통해 HEAD를 리모컨과 동일하게 청소할 수있었습니다.
git reset --hard origin/master
이제 다시 한 번 :
On branch master
Your branch is up-to-date with 'origin/master'.
제 경우에는 다음을 사용하여 마스터로 전환했기 때문이었습니다.
git checkout -B master
대신 새 버전을 가져 와서
git checkout master
첫 번째 명령 은 마스터 헤드를 최신 커밋으로 재설정합니다.
나는 사용했다
git reset --hard origin/master
그것을 고치기 위해
나는이 페이지의 모든 솔루션을 살펴 보았지만 다행히도 @ anatolii-pazhyn은 그의 솔루션이 효과가 있었기 때문에 논평했습니다. 불행히도 나는 그를 찬성 하기에 충분한 평판 을 얻지 못했지만 그의 해결책을 먼저 시도하는 것이 좋습니다.
git reset --hard origin/master
나에게 준 :
HEAD is now at 900000b Comment from my last git commit here
나는 또한 추천한다 :
git rev-list origin..HEAD
# to see if the local repository is ahead, push needed
git rev-list HEAD..origin
# to see if the local repository is behind, pull needed
다음을 사용할 수도 있습니다.
git rev-list --count --left-right origin/master...HEAD
# if you have numbers for both, then the two repositories have diverged
행운을 빌어 요
Windows 컴퓨터에서도 이와 동일한 문제가 발생했습니다. git pull origin master
명령을 실행할 때 "X commits에 의해 'origin / master'에 앞서"경고 메시지가 나타납니다. 대신 실행 git pull origin
하고 분기를 지정하지 않으면 더 이상 경고가 표시되지 않습니다.
현재 분기와 현재 트랙을 수행하는 분기 간의 차이점을 상기시켜줍니다. 메시지에 인쇄 된 분기와 현재 분기를 어디에서 밀고 당기는 지 등 자세한 정보를 제공하십시오.
이 질문은 조금 오래되었지만 ... 유사한 상황에 있었고 여기에 내 대답은 비슷한 문제를 해결하는 데 도움이되었습니다.
먼저 시도 push -f
또는 강제 옵션
그래도 작동하지 않으면 (내 경우와 같이) 원격 리포지토리 (또는 원격 리포지토리에 대한 참조 git remote -v
)가 업데이트되지 않을 수 있습니다.
위의 푸시 결과 로컬 / 브랜치를 원격 / 브랜치와 동기화 한 결과 로컬 리포지토리의 캐시에는 여전히 이전 커밋 (로컬 / 브랜치의 단일 커밋 만 제공 한 경우)이 HEAD로 표시됩니다.
위의 복제를 다른 위치에서 복제하고 로컬 / 분기 HEAD와 원격 / 분기 HEAD를 비교하십시오. 둘 다 동일하면 아마도 내가 한 문제에 직면했을 것입니다.
해결책:
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
$ git remote add origin git://github.com/pjhyett/hw.git
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/pjhyett/hw.git (fetch)
origin git://github.com/pjhyett/hw.git (push)
$ git remote rm origin
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
이제 push -f
다음과 같이하십시오
git push -f github master
### origin
더 이상 명령이 없습니다 !
를 수행 git pull
지금git pull github master
받자 git status
마자
# On branch master
nothing to commit (working directory clean)
조회수가 너무 많아서이 오류를 검색하면 거의 항상이 스레드가 맨 위에 표시되므로 누군가에게 유용하기를 바랍니다.
자세한 내용 은 gitref 를 참조하십시오
실제로 TortiseGIT로 스위치 / 체크 아웃을 할 때 이런 일이 발생했습니다.
내 문제는 다른 지역 지점을 기반으로 지점을 만들었습니다. /.git/config
다음과 같은 "병합"항목을 작성했습니다 .
[branch "web"]
merge = refs/heads/develop
remote = gitserver
"웹"브랜치로 전환 할 때마다 개발에 앞서 100 명 이상의 커밋을했다. 글쎄, 나는 더 이상 개발을 약속하지 않았으므로 그것은 사실이었습니다. 이 항목을 간단히 제거 할 수 있었고 예상대로 작동하는 것 같습니다. 개발 브랜치 뒤에있는 것에 대해 불평하는 대신 원격 심판으로 올바르게 추적하고 있습니다.
Vikram이 말했듯 이이 스택 오버플로 스레드는이 문제를 검색 할 때 Google의 최고 결과이므로 내 상황과 솔루션을 공유 할 것이라고 생각했습니다.
그런 다음 git 상태를 수행하면 X 커밋 (아마도 내가 저지른 커밋 수와 같음)이 내 브랜치보다 앞서 있다고 알려줍니다 .
내 경험은 많은 지점이있는 팀 환경에 있습니다. 우리는 (로컬 클론에서) 자체 기능 브랜치에서 작업하며 git status
11 커밋보다 앞서 나왔음 을 보여줍니다. 질문의 저자와 마찬가지로 내 작업 가정은 +11이 내 자신의 커밋 에서 온 것이라고 가정했습니다 .
develop
몇 주 전에 공통 지점 에서 기능 지점으로 변경 사항을 가져 왔지만 잊어 버렸습니다. 오늘 내 로컬 기능 지점을 다시 방문 git pull origin develop
하고 숫자가 +41 커밋으로 점프했습니다. 많은 작업이 수행 develop
되었으므로 로컬 기능 분기는 origin
저장소 의 기능 분기보다 훨씬 앞서있었습니다 .
따라서이 메시지를 받으면 액세스 할 수있는 다른 지점 (자신의 다른 지점)에서 수행 한 끌어 오기 / 병합을 생각해보십시오. 이 메시지는 단지에 필요한 신호를 git push
그 pull
에드는 다시 변경 origin
일을 업으로 동기 얻을 해당 지역의 repo에서 ( '지점을 추적')의 repo.
제안 git pull
하거나 git fetch
정확한 답변 .
메시지 때 생성되는 git status
차분보고 .git/FETCH_HEAD
하고 .git/refs/remotes/<repository>/<branch>
(예를 .git/refs/remotes/origin/master
).
후자의 파일은 마지막 페치 (저장소 / 분기)의 HEAD를 기록합니다. 이렇게 git fetch
분기의 현재 HEAD 업데이트를 두 파일을.
물론 로컬 저장소가 이미 최신 상태이기 때문에 가져올 .git/FETCH_HEAD
것이 없으면 변경되지 않습니다.
위의 @Marian Zburlia가 언급 한 것과 동일하게 반복하고 싶습니다. 그것은 나를 위해 일했고 다른 사람들에게 똑같이 제안 할 것입니다.
git pull origin develop
뒤에 와야합니다 $ git pull --rebase
.
그러면 $ git status
최신 끌어 오기 이후 에 나오는 주석이 제거됩니다 .
git fetch
당신을 위해 이것을 해결할 것입니다
내 이해가 정확하면 귀하의 지역 (캐시) origin/master
이 오래되었습니다. 이 명령은 서버에서 저장소 상태를 업데이트합니다.
이것은 나를 위해 일했다
git reset --hard origin/master
출력은 다음과 같아야합니다
On branch dev HEAD is now at ae1xc41z Last commit message
브랜치에서 파일을 추적 해제하기 위해 커밋을 수행 한 후이 메시지가 표시되면 파일을 약간 변경하고 커밋을 수행하십시오. 이전에 추적 된 파일의 추적을 해제하는 것만 포함하는 단일 커밋을 수행 할 수 없습니다. 마지막 으로이 게시물은 https://help.github.com/articles/removing-files-from-a-repository-s-history/ 전체 문제를 해결하는 데 도움이되었습니다 . 리포지토리 기록에서 파일을 제거해야했습니다.
참고 URL : https://stackoverflow.com/questions/2432579/git-your-branch-is-ahead-by-x-commits
'Programing' 카테고리의 다른 글
Android 에뮬레이터에서 가로 모드로 전환 (0) | 2020.03.01 |
---|---|
Java로 GUID 만들기 (0) | 2020.03.01 |
C ++ 함수에서 정적 변수의 수명은 얼마입니까? (0) | 2020.02.29 |
내 Git 저장소가 분리 된 HEAD 상태에 들어간 이유는 무엇입니까? (0) | 2020.02.29 |
git 'pull request'가 'push request'라고 불리는 이유는 무엇입니까? (0) | 2020.02.29 |