git diffเรียกใช้งานที่แตกต่างกันในซอร์สโค้ดทั้งหมด ฉันจะทำสิ่งนี้ในไดเร็กทอรีบางไดเร็กทอรีเพื่อให้สามารถดูการแก้ไขไฟล์ที่อยู่ด้านล่างได้อย่างไร
git diffเรียกใช้งานที่แตกต่างกันในซอร์สโค้ดทั้งหมด ฉันจะทำสิ่งนี้ในไดเร็กทอรีบางไดเร็กทอรีเพื่อให้สามารถดูการแก้ไขไฟล์ที่อยู่ด้านล่างได้อย่างไร
คำตอบ:
ระบุเส้นทาง (myfolder ในกรณีนี้) และเรียกใช้:
git diff myfolder/
git diff -- myfolderเพื่อลดความกำกวมในการคอมไพล์ สัญกรณ์ทั่วไปสำหรับ git diff (และคำสั่ง git หลายคำสั่ง) คือgit diff [commit-ish] -- [path]โดยที่ค่าเริ่มต้นของการกระทำคือHEAD (ที่คุณอยู่ในขณะนี้) และเป็น[path]ค่าเริ่มต้นของไดเร็กทอรี git root แต่สามารถเป็นอะไรก็ได้ที่สัมพันธ์กับไดเร็กทอรีปัจจุบันของคุณ โดยไม่ต้อง--, คอมไพล์จะคาดเดาสิ่งที่คุณหมายถึงหรือ[commit-ish] [path]ในบางกรณีสิ่งนี้ทำให้คอมไพล์บอกว่าสัญกรณ์ 'ไม่ชัดเจน' ถ้าจำไม่ผิด.
git diff master..develop myfolder/ตามที่ @CrandellWS กล่าวไว้ในความคิดเห็นของคำถามเดิม สถานะ Git จะแสดงการเปลี่ยนแปลงหากนั่นคือสิ่งที่คุณกำลังมองหา
หากคุณกำลังเปรียบเทียบสาขาต่างๆคุณจำเป็นต้องใช้--เพื่อแยกการแก้ไข Git ออกจากเส้นทางระบบไฟล์ ตัวอย่างเช่นมีสาขาในท้องถิ่นสองสาขาmasterและbryan-working:
$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/
หรือจากสาขาในพื้นที่ไปยังรีโมต:
$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
คุณควรสร้างนิสัยในการดูเอกสารสำหรับสิ่งต่างๆเช่นนี้ มันมีประโยชน์มากและจะพัฒนาทักษะของคุณได้อย่างรวดเร็ว นี่คือบิตที่เกี่ยวข้องเมื่อคุณทำgit help diff
git diff [options] [--no-index] [--] <path> <path>
สอง<path>สิ่งนี้คือสิ่งที่คุณต้องเปลี่ยนเป็นไดเรกทอรีที่มีปัญหา
เพิ่มBeyond Compareเป็น difftool ของคุณใน Git และเพิ่มนามแฝงสำหรับ diffdir เป็น:
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
รับ gitdiff เป็น:
git diffdir 4bc7ba80edf6 7f566710c7
การอ้างอิง: เปรียบเทียบไดเรกทอรีทั้งหมดด้วย git difftool + Beyond Compare
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"แทน
--no-symlinksตัวเลือกเพื่อให้คำสั่งอ่านgit difftool --dir-diff --no-symlinks
ไม่เพียง แต่คุณสามารถเพิ่มเส้นทาง แต่คุณสามารถเพิ่มgit diff --relativeเพื่อรับผลลัพธ์ที่สัมพันธ์กับโฟลเดอร์นั้นได้
git -C a/folder diff --relative
และด้วย Git 2.28 (ไตรมาสที่ 3 ปี 2020) คำสั่งในตระกูล " diff" ได้เรียนรู้ที่จะให้เกียรติdiff.relativeตัวแปรการกำหนดค่า ""
ดูกระทำ c28ded8 (22 พฤษภาคม 2020) โดยLaurent Arnoud (spk )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ e34df9a , 2 มิถุนายน 2020)
diff: เพิ่มตัวเลือกการกำหนดค่าrelativeลงนามโดย: Laurent Arnoud
ติดตามโดย: ĐoànTrầnCông Danh
diff.relativeชุดตัวเลือกแบบบูลที่จะtrueแสดงให้เห็นเพียงการเปลี่ยนแปลงในปัจจุบันไดเรกทอรี / ค่าที่ระบุไว้ในpathข้อโต้แย้งของrelativeตัวเลือกและการแสดง pathnames เทียบกับไดเรกทอรีดังกล่าวข้างต้นสอน
--no-relativeการลบล้างก่อนหน้านี้--relativeเพิ่มสำหรับเอกสารประกอบตัวเลือก git-format-patch (1)
--relativeและ--no-relative
diff.relative:หากตั้งค่าเป็น '
true' 'git diff' จะไม่แสดงการเปลี่ยนแปลงภายนอกไดเร็กทอรีและแสดงชื่อพา ธ ที่สัมพันธ์กับไดเร็กทอรีปัจจุบัน
หากคุณต้องการยกเว้นไดเรกทอรีย่อยคุณสามารถใช้ไฟล์
git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)
ในการใช้Beyond Compareเป็น difftool สำหรับไดเร็กทอรี diff อย่าลืมเปิดใช้งานลิงก์สัญลักษณ์ดังนี้:
ในโฟลเดอร์เปรียบเทียบดู → กฎ (ไอคอนผู้ตัดสิน):
จากนั้นเปิดใช้งานตามลิงค์สัญลักษณ์และอัปเดตค่าเริ่มต้นของเซสชัน:
หรือ,
ตั้งนามแฝงดังนี้:
git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"
โปรดทราบว่าไม่ว่าในกรณีใดการแก้ไขใด ๆ ที่ทำทางด้านข้าง (ซ้ายหรือขวา) ที่อ้างถึงโครงสร้างการทำงานปัจจุบันจะถูกเก็บรักษาไว้
git diff master..yourbranch path/to/folder