git remote -v show
Menşe geldiğinde ne geri döner?
Kaynak github'ı gösteriyorsa, durum güncel olmalı ve herhangi bir uzak depodan önce olmamalıdır. En azından Git1.6.5 ile hızlı bir test için kullanıyorum.
Her neyse, bundan kaçınmak için, ana dalın uzak deposunu açıkça tanımlayın:
$ git config branch.master.remote yourGitHubRepo.git
sonra a git pull origin master
, ardından git status
a temiz bir durum döndürmelidir (ileride yok).
Neden? çünkü get getirme kaynağı yöneticisi (git çekme kaynağı yöneticisine dahil edilmiştir) sadece güncellenmez FETCH_HEAD
( Charles Bailey'nin yanıtında açıkladığı gibi ), aynı zamanda yerel Git deponuzdaki "uzak ana dalı" da günceller.
Bu durumda, yerel yöneticiniz artık uzak ana yöneticiden "önde" görünmeyecektir.
Bunu bir git1.6.5 ile test edebilirim:
İlk önce bir çalışma noktası oluşturuyorum:
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"
Çıplak bir depo oluşturarak bir GitHub reposunu simüle ediyorum (herhangi bir yerden push alabilen bir repo)
PS D:\git\tests\pullahead\workrepo> cd ..
PS D:\git\tests\pullahead> git clone --bare workrepo github
Github deposuna (uzaktan kumanda olarak eklendi) ittiğim çalışma depoma bir modif ekliyorum
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'dan klonlanmış, içinde birkaç değişiklik yaptığım ve GitHub'a gönderilen bir ev deposu oluşturuyorum:
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
Daha sonra ilk deney için çalışma raporunu klonladım
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(-)
Bu depoda, git statüsü, ' origin
' ' nin önünde olan ustan bahsediyor :
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)
Ancak bu yalnızca origin
github değildir:
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)
Ancak diziyi github'a bir orijini olan (veya hiç menşei olmayan, sadece uzak bir 'github' tanımlı) bir depoda tekrarlarsam durum temizdir:
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)
Ben sadece olsaydı origin
üzerinde işaretleme github
, status
git1.6.5 için temiz olacaktır.
Daha önceki gitler için 'ileriye' bir uyarı olabilir, ancak yine de, git config branch.master.remote yourGitHubRepo.git
açıkça tanımlanmış bir kişi , Git'in ilk sürümlerinde bile bunu halledebilmelidir.
git push
da çözecek gibi görünecektir ("her şey güncel" olarak rapor edilir).