สิ่งที่git remote -v show
ส่งคืนเมื่อมาถึงแหล่งกำเนิด?
หากจุดเริ่มต้นชี้ไปที่ github สถานะควรเป็นปัจจุบันและไม่นำหน้า repo ระยะไกลใด ๆ อย่างน้อยด้วย Git1.6.5 ฉันใช้สำหรับการทดสอบอย่างรวดเร็ว
อย่างไรก็ตามเพื่อหลีกเลี่ยงสิ่งนี้ให้กำหนด repo ระยะไกลของสาขาหลักอย่างชัดเจน:
$ git config branch.master.remote yourGitHubRepo.git
จากนั้น a git pull origin master
ตามด้วยgit status
ควรคืนสถานะสะอาด (ไม่อยู่ข้างหน้า)
ทำไม? เพราะได้รับการดึงข้อมูลต้นแบบต้นกำเนิด (รวมอยู่ในต้นแบบคอมไพล์ดึงกำเนิด) จะไม่เพียงแค่การปรับปรุงFETCH_HEAD
(ขณะที่ชาร์ลส์เบลีย์อธิบายในคำตอบของเขา ) แต่มันจะยังอัปเดต "สาขาต้นแบบระยะไกล" ในพื้นที่เก็บข้อมูล Git ท้องถิ่นของคุณ
ในกรณีนี้นายท้องถิ่นของคุณดูเหมือนจะไม่ "ล้ำหน้า" ของนายในระยะไกลอีกต่อไป
ฉันสามารถทดสอบสิ่งนี้ด้วย git1.6.5:
ก่อนอื่นฉันสร้าง workrepo:
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 repo โดยการสร้าง repo เปล่า (อันที่สามารถรับการผลักดันได้จากทุกที่)
PS D:\git\tests\pullahead\workrepo> cd ..
PS D:\git\tests\pullahead> git clone --bare workrepo github
ฉันเพิ่มโมดิฟใน repo ที่ใช้งานได้ซึ่งฉันส่งไปยัง github repo (เพิ่มเป็นรีโมต)
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
ฉันสร้าง home repo โคลนของ 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(-)
ใน repo นั้นสถานะ git จะกล่าวถึง master geing ข้างหน้า ' origin
':
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)
แต่ถ้าฉันทำซ้ำลำดับใน repo ซึ่งมีจุดเริ่มต้นเป็น 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 config branch.master.remote yourGitHubRepo.git
กำหนดไว้อย่างชัดเจนควรสามารถดูแลสิ่งนั้นได้แม้จะมี Git เวอร์ชันแรกก็ตาม
git push
ยังจะดูเหมือนจะแก้ปัญหาได้ (รายงาน "ทั้งหมดถึงวัน")