ฉันต้องการตรวจสอบการเปลี่ยนแปลงโค้ดใด ๆ หลังจากทำไฟล์git pull. ขณะนี้กำลังแสดงให้ฉันเห็นว่าไฟล์ใดเปลี่ยนแปลง ฉันจะดูได้อย่างไรว่าโค้ดอะไรเปลี่ยนแปลง
ฉันต้องการตรวจสอบการเปลี่ยนแปลงโค้ดใด ๆ หลังจากทำไฟล์git pull. ขณะนี้กำลังแสดงให้ฉันเห็นว่าไฟล์ใดเปลี่ยนแปลง ฉันจะดูได้อย่างไรว่าโค้ดอะไรเปลี่ยนแปลง
คำตอบ:
git log --name-status -2
จะแสดงชื่อไฟล์ที่เปลี่ยนแปลงสำหรับสองคอมมิตล่าสุด
git log -p -2
จะแสดงให้คุณเห็นการเปลี่ยนแปลงเอง
ก่อนที่คุณจะดึง
git fetch
git log --name-status origin/master..
จะแสดงให้คุณเห็นว่าคุณกำลังจะเรียกข้อมูลอะไรพร้อมกับชื่อของไฟล์
คุณสามารถตรวจสอบการเปลี่ยนแปลงได้ตามที่ @iblue กล่าวพร้อม a fetchและdiffก่อนที่จะรวม:
$ git fetch
$ git diff master...origin/master
สังเกตช่วงเวลาสามช่วงซึ่งหมายความว่าแตกต่างจากพาเรนต์และต้นทาง / มาสเตอร์ที่ใช้ร่วมกัน (คอมมิตที่ทำเครื่องหมายxด้านล่าง):
SP---o---o [master]
\
x---x [origin/master]
บรรทัดแรกในผลลัพธ์ของการดึงมีลักษณะดังนี้:
$ git pull
Updating 37b431a..b2615b4
...
จากนั้นคุณสามารถทำได้ง่ายๆ:
$ git diff 37b431a..b2615b4
หรือคำสั่งอื่นใด:
$ git log --name-status 37b431a..b2615b4
หากคุณดึงข้อมูลมาสักพักแล้วและคุณต้องการทราบว่าการดึงครั้งสุดท้ายเกิดการเปลี่ยนแปลงอะไรคุณสามารถค้นหาได้ด้วย:
$ git reflog | grep -A1 pull | head -2
ซึ่งจะแสดงแฮชหลังจากการดึงตามด้วยแฮชก่อนการดึง:
b2615b4 HEAD@{0}: pull : Fast-forward
37b431a HEAD@{1}: checkout: moving from v6.1 to master
จากนั้นคุณสามารถทำสิ่งเดียวกันกับแฮชทั้งสองนี้:
git diff 37b431a..b2615b4
เนื่องจากgit pullเป็นเพียงทางลัดสำหรับgit fetchและgit mergeคุณสามารถเรียกใช้git fetchเพื่อดึงข้อมูลสาขาจากต้นทางจากนั้นแสดงความแตกต่างก่อนที่จะรวมเข้าด้วยกัน แบบนี้:
git fetch # Load changes from remote server
git diff master origin/master # Show differences
git merge origin/master # Merge remote changes with local changes
หากคุณเรียกใช้สาขาอื่นที่ไม่ใช่สาขาหลักแน่นอนคุณควรเปลี่ยนชื่อสาขาในคำสั่งด้านบน
คุณสามารถเปรียบเทียบเนื้อหาที่ดึงมากับแหล่งที่มาของการกระทำก่อนหน้านี้ทันทีโดย
git diff branch_name@{1}
เช่น:
git diff master@{1}
สำหรับการเปรียบเทียบกับแหล่งที่มาที่ n ยอมรับ
git diff branch_name@{n}
@{n}ไวยากรณ์จริงหมายความว่าnthก่อนหน้านี้ตำแหน่งของสาขา / หัว ตัวอย่างเช่นถ้ามีการกระทำที่ 10 ตั้งแต่ครั้งสุดท้ายที่คุณได้ดึงที่master@{1}จะอ้างถึงก่อนตำแหน่งของmasterซึ่งเป็น 10 กระทำก่อน นี่คือเหตุผลว่าทำไมการใช้@{n}จึงมีประโยชน์สำหรับการตรวจสอบการเปลี่ยนแปลงหลังจากดึง
คุณสามารถตรวจสอบสิ่งที่เปลี่ยนแปลงได้ในขณะที่ผลักและดึงตามนี้ ...
git log --stat