git remote -v show
원산지에 관해서는 무엇을 반환합니까?
origin이 github를 가리키는 경우 상태는 최신 상태 여야하며 원격 저장소보다 앞서 있어야합니다. 적어도 Git1.6.5에서는 빠른 테스트를 위해 사용하고 있습니다.
어쨌든 이것을 피하려면 마스터 브랜치의 원격 저장소를 명시 적으로 정의하십시오.
$ git config branch.master.remote yourGitHubRepo.git
a git pull origin master
다음에 a git status
가 깨끗한 상태를 반환해야합니다 (앞으로 없음).
왜? get fetch origin master (git pull origin master에 포함됨)가 업데이트 FETCH_HEAD
( Charles Bailey 가 그의 답변 에서 설명 했듯이 )뿐만 아니라 로컬 Git 저장소 내의 "remote master branch" 도 업데이트하기 때문입니다 .
이 경우 로컬 마스터는 더 이상 원격 마스터보다 "앞서"있는 것처럼 보이지 않습니다.
git1.6.5로 이것을 테스트 할 수 있습니다.
먼저 작업 저장소를 만듭니다.
PS D:\git\tests> cd pullahead
PS D:\git\tests\pullahead> git init workrepo
Initialized empty Git repository in D:/git/tests/pullahead/workrepo/.git/
PS D:\git\tests\pullahead> cd workrepo
PS D:\git\tests\pullahead\workrepo> echo firstContent > afile.txt
PS D:\git\tests\pullahead\workrepo> git add -A
PS D:\git\tests\pullahead\workrepo> git commit -m "first commit"
베어 리포지토리 (어디에서나 푸시를받을 수있는 리포지토리)를 만들어 GitHub 리포지토리를 시뮬레이션합니다.
PS D:\git\tests\pullahead\workrepo> cd ..
PS D:\git\tests\pullahead> git clone --bare workrepo github
내 작업 저장소에 modif를 추가하고 github 저장소에 푸시합니다 (원격으로 추가됨).
PS D:\git\tests\pullahead> cd workrepo
PS D:\git\tests\pullahead\workrepo> echo aModif >> afile.txt
PS D:\git\tests\pullahead\workrepo> git ci -a -m "a modif to send to github"
PS D:\git\tests\pullahead\workrepo> git remote add github d:/git/tests/pullahead/github
PS D:\git\tests\pullahead\workrepo> git push github
GitHub를 복제 한 홈 리포지토리를 만들고 몇 가지 수정하여 GitHub에 푸시합니다.
PS D:\git\tests\pullahead\workrepo> cd ..
PS D:\git\tests\pullahead> git clone github homerepo
PS D:\git\tests\pullahead> cd homerepo
PS D:\git\tests\pullahead\homerepo> type afile.txt
firstContent
aModif
PS D:\git\tests\pullahead\homerepo> echo aHomeModif1 >> afile.txt
PS D:\git\tests\pullahead\homerepo> git ci -a -m "a first home modif"
PS D:\git\tests\pullahead\homerepo> echo aHomeModif2 >> afile.txt
PS D:\git\tests\pullahead\homerepo> git ci -a -m "a second home modif"
PS D:\git\tests\pullahead\homerepo> git push github
그런 다음 첫 번째 실험을 위해 workrepo를 복제합니다.
PS D:\git\tests\pullahead\workrepo4> cd ..
PS D:\git\tests\pullahead> git clone workrepo workrepo2
Initialized empty Git repository in D:/git/tests/pullahead/workrepo2/.git/
PS D:\git\tests\pullahead> cd workrepo2
PS D:\git\tests\pullahead\workrepo2> git remote add github d:/git/tests/pullahead/github
PS D:\git\tests\pullahead\workrepo2> git pull github master
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From d:/git/tests/pullahead/github
* branch master -> FETCH_HEAD
Updating c2763f2..75ad279
Fast forward
afile.txt | Bin 46 -> 98 bytes
1 files changed, 0 insertions(+), 0 deletions(-)
해당 저장소에서 git status는 ' origin
' 보다 앞서 마스터 geing을 언급합니다 .
PS D:\git\tests\pullahead\workrepo5> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)
그러나 그것은 origin
github가 아닙니다.
PS D:\git\tests\pullahead\workrepo2> git remote -v show
github d:/git/tests/pullahead/github (fetch)
github d:/git/tests/pullahead/github (push)
origin D:/git/tests/pullahead/workrepo (fetch)
origin D:/git/tests/pullahead/workrepo (push)
그러나 github에 대한 출처가있는 저장소에서 시퀀스를 반복하면 (또는 출처가 전혀없고 원격 'github'만 정의 됨) 상태가 깨끗합니다.
PS D:\git\tests\pullahead\workrepo2> cd ..
PS D:\git\tests\pullahead> git clone workrepo workrepo4
PS D:\git\tests\pullahead> cd workrepo4
PS D:\git\tests\pullahead\workrepo4> git remote rm origin
PS D:\git\tests\pullahead\workrepo4> git remote add github d:/git/tests/pullahead/github
PS D:\git\tests\pullahead\workrepo4> git pull github master
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From d:/git/tests/pullahead/github
* branch master -> FETCH_HEAD
Updating c2763f2..75ad279
Fast forward
afile.txt | Bin 46 -> 98 bytes
1 files changed, 0 insertions(+), 0 deletions(-)
PS D:\git\tests\pullahead\workrepo4> git status
# On branch master
nothing to commit (working directory clean)
난 단지 한 경우 origin
에 지적 github
, status
git1.6.5 깨끗하다.
이전 git에 대해 '미리'경고 git config branch.master.remote yourGitHubRepo.git
가있을 수 있지만 어쨌든 명시 적으로 정의 된 사람은 초기 버전의 Git에서도이를 처리 할 수 있어야합니다.
git push
도 ( "모든 최신에"보고) 그것을 해결하는 것 것입니다.