ฉันมีสองไฟล์ที่แตกต่างกันในสาขาที่แตกต่างกัน ฉันจะกระจายพวกมันในคำสั่งเดียวได้อย่างไร
สิ่งที่ต้องการ
# git diff branch1/foo.txt branch2/foo-another.txt
ฉันสามารถตรวจสอบไฟล์อื่นแตกต่างและเรียกคืน แต่นั่นเป็นวิธีที่ค่อนข้างสกปรก
ฉันมีสองไฟล์ที่แตกต่างกันในสาขาที่แตกต่างกัน ฉันจะกระจายพวกมันในคำสั่งเดียวได้อย่างไร
สิ่งที่ต้องการ
# git diff branch1/foo.txt branch2/foo-another.txt
ฉันสามารถตรวจสอบไฟล์อื่นแตกต่างและเรียกคืน แต่นั่นเป็นวิธีที่ค่อนข้างสกปรก
คำตอบ:
git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
คุณยังสามารถใช้เส้นทางสัมพัทธ์:
git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt
git help diff
ฉันได้อย่างแน่นอนไม่สามารถที่จะสรุปว่าจาก โดยวิธีการเหล่านั้นไม่จำเป็นต้องเป็นชื่อสาขาข้างหน้าของโคลอน แต่สามารถอ้างอิงประเภทใดกระทำ (เช่นค่า SHA-1)
git difftool
แล้วปล่อยbranch2:
และที่จะช่วยให้คุณสามารถแก้ไขไฟล์ในbranch1
Sidenote: ไม่จำเป็นต้องใช้เส้นทางแบบเต็มคุณสามารถเริ่มต้นด้วย./
เส้นทางที่สัมพันธ์กัน บางครั้งมันก็มีประโยชน์
git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt
มีหลายวิธีในการเปรียบเทียบไฟล์จากสองสาขาที่แตกต่างกัน ตัวอย่างเช่น:
หากชื่อเหมือนหรือแตกต่าง:
git diff branch1:file branch2:file
ตัวอย่าง:
git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
เฉพาะในกรณีที่ชื่อนั้นเหมือนกันและคุณต้องการเปรียบเทียบไดเรกทอรีการทำงานปัจจุบันของคุณกับบางสาขา:
git diff ..someBranch path/to/file
ตัวอย่าง:
git diff ..branch2 full/path/to/foo.txt
ในตัวอย่างนี้คุณกำลังเปรียบเทียบไฟล์จากสาขาที่แท้จริงของคุณกับไฟล์ในสาขาหลัก
คุณสามารถตรวจสอบคำตอบนี้:
คำตอบนอกหัวข้อ - ดูความคิดเห็น
เพียงเพิ่มมันเพราะฉันพบว่ามันเป็นไวยากรณ์ที่ตรงไปตรงมามาก:
git diff <branch1> <branch2> <filepath>
ทำงานร่วมกับ refs ญาติเช่น:
# compare the previous committed state from HEAD with the state branch1 was 3 commits ago
git diff HEAD^ <branch1>~3 <filepath>
คุณสามารถระบุจุดเริ่มต้นและช่วงgit diff
ที่จะใช้กับ ช่วงจะถูกระบุด้วย..
เครื่องหมาย
branch1=somebranch
branch2=someotherbranch
git diff ${branch1}..${branch2} -- file_path