ฉันต้องการทราบว่า repo ในพื้นที่ของฉันเป็นข้อมูลล่าสุดหรือไม่ (และถ้าไม่ใช่ฉันต้องการเห็นการเปลี่ยนแปลง)
จะตรวจสอบได้อย่างไรโดยไม่ต้องทำgit fetch
หรือgit pull
?
ฉันต้องการทราบว่า repo ในพื้นที่ของฉันเป็นข้อมูลล่าสุดหรือไม่ (และถ้าไม่ใช่ฉันต้องการเห็นการเปลี่ยนแปลง)
จะตรวจสอบได้อย่างไรโดยไม่ต้องทำgit fetch
หรือgit pull
?
คำตอบ:
ลองgit fetch --dry-run
ใช้คู่มือ ( git help fetch
) ว่า:
--dry-run
Show what would be done, without making any changes.
git fetch --dry-run
ไม่มีอะไรโผล่มา
--all
?
git pull
เทียบเท่ากับไฟล์git fetch && git merge
. หากเมื่อใดก็ตามที่คุณเรียกใช้การดึงข้อมูลโดยไม่มีสิ่ง--dry-run
นั้นแสดงว่าคุณได้ดึงข้อมูลมาแล้ว
git remote show origin
ผลลัพธ์:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
ใช้ครั้งแรกgit remote update
เพื่อปรับปรุงการอ้างอิงระยะไกลของคุณให้ทันสมัย จากนั้นคุณสามารถทำอย่างใดอย่างหนึ่งจากหลาย ๆ สิ่งเช่น:
git status -uno
จะบอกคุณว่าสาขาที่คุณกำลังติดตามอยู่ข้างหน้าข้างหลังหรือมีการแยกทางกัน หากไม่มีข้อความระบุว่า local และ remote จะเหมือนกัน ตัวอย่างผลลัพธ์:ในสาขา DEV
สาขาของคุณอยู่เบื้องหลัง 'ต้นทาง / DEV' 7 คอมมิตและสามารถส่งต่อได้อย่างรวดเร็ว
(ใช้ "git pull" เพื่ออัปเดตสาขาในพื้นที่ของคุณ)
git show-branch *master
จะแสดงให้คุณเห็นการกระทำในทุกสาขาที่มีชื่อลงท้ายด้วย 'master' (เช่น master และ origin / master)หากคุณใช้-v
กับ git remote update ( git remote -v update
) คุณจะเห็นว่าสาขาใดได้รับการอัปเดตดังนั้นคุณจึงไม่ต้องการคำสั่งเพิ่มเติม
git remote update ; git status -uno
แก้ไขได้ git fetch --dry-run
ไม่ให้เอาต์พุตแม้ในกรณีที่โลคัลอยู่หลังรีโมต
คุณสามารถใช้git status -uno
เพื่อตรวจสอบว่าสาขาในพื้นที่ของคุณเป็นปัจจุบันกับสาขาต้นทางหรือไม่
git remote update ; git status -uno
ได้เคล็ดลับ! git fetch --dry-run
ให้ผลลัพธ์ออกมาเมื่อผมคาดว่ามัน (และgit pull
จะดึงสิ่งที่)
ไม่จริง - แต่ฉันไม่เห็นว่าgit fetch
จะเจ็บแค่ไหนเพราะมันจะไม่เปลี่ยนสาขาในพื้นที่ของคุณ
อีกทางเลือกหนึ่งคือการดูสถานะของสาขาระยะไกล
git show-branch remote/branch
เพื่อใช้เป็นการเปรียบเทียบที่คุณสามารถดูgit show-branch *branch
เพื่อดูสาขาในรีโมททั้งหมดรวมถึงที่เก็บของคุณ! ตรวจสอบคำตอบนี้สำหรับข้อมูลเพิ่มเติมhttps://stackoverflow.com/a/3278427/2711378
คุณจะต้องออกคำสั่งสองคำสั่ง:
คุณต้องรันgit fetch
ก่อนจึงจะเปรียบเทียบที่เก็บในเครื่องของคุณกับไฟล์บนเซิร์ฟเวอร์ระยะไกลของคุณได้
คำสั่งนี้จะปรับปรุงเฉพาะสาขาการติดตามระยะไกลของคุณและจะไม่ส่งผลกระทบต่อ worktree คุณจนกว่าคุณจะโทรหรือgit merge
git pull
หากต้องการดูความแตกต่างระหว่างสาขาในพื้นที่ของคุณและสาขาการติดตามระยะไกลของคุณเมื่อคุณดึงข้อมูลมาแล้วคุณสามารถใช้git diff หรือ git cherry ตามที่อธิบายไว้ที่นี่
ถ้าคุณใช้
git fetch --dry-run -v <link/to/remote/git/repo>
คุณจะได้รับคำติชมว่าเป็นข้อมูลล่าสุดหรือไม่ โดยพื้นฐานแล้วคุณต้องเพิ่มตัวเลือก "verbose" ในคำตอบที่ให้ไว้ก่อนหน้านี้
นี้เป็นไปไม่ได้โดยไม่ต้องใช้หรือgit fetch
git pull
คุณจะรู้ได้อย่างไรว่าที่เก็บนั้น "ทันสมัย" หรือไม่โดยไม่ต้องไปที่ที่เก็บระยะไกลเพื่อดูว่า "เป็นปัจจุบัน" หมายถึงอะไร
git pull
ซึ่ง OP ห้ามอย่างชัดเจนในคำถามของเขา
git status -uno
ใช้งานได้และยังสามารถใช้git show-branch *master
เพื่อดูสถานะของสาขาหลักทั้งหมด! คุณยังบอกว่ามันเป็นไปไม่ได้? คุณสามารถดูสถานะของสาขาใดก็ได้ตราบเท่าที่คุณสามารถเข้าถึงรีโมทได้!
git status
บอกสถานะของการอ้างอิงในพื้นที่ของคุณเท่านั้น แต่ไม่ได้บอกคุณว่าการอ้างอิงในพื้นที่ของคุณเป็นปัจจุบันหรือไม่โดยอ้างอิงจากระยะไกล อีกครั้ง: มันเป็นไปไม่ได้ในทางเหตุผลที่จะรู้ว่าสถานะของ repo ระยะไกลเป็นอย่างไรโดยไม่ได้รับสถานะของ repo ระยะไกล ระยะเวลา นี่เป็นเพียงกฎพื้นฐานของกาลอวกาศ
พยายามจัดรูปแบบคำตอบของฉัน แต่ทำไม่ได้โปรดทีม stackoverflow ทำไมการโพสต์คำตอบจึงยากมาก
ไม่มีวันหมด
คำตอบ:
git fetch
สถานะ git ต้นทาง(คุณจะเห็นผลลัพธ์เช่น "สาขาของคุณอยู่ข้างหลัง" origin / master "โดย 9 commits")
เพื่ออัปเดตการเปลี่ยนแปลงระยะไกล: git pull