ฉันจะบอก git ให้เพิกเฉยต่อไฟล์ในเครื่องของฉันและนำไปใช้จากสาขาระยะไกลของฉันโดยไม่พยายามผสานและก่อให้เกิดความขัดแย้งได้อย่างไร
ฉันจะบอก git ให้เพิกเฉยต่อไฟล์ในเครื่องของฉันและนำไปใช้จากสาขาระยะไกลของฉันโดยไม่พยายามผสานและก่อให้เกิดความขัดแย้งได้อย่างไร
คำตอบ:
นี่คือทางออกที่ปลอดภัยที่สุด:
git stash
ตอนนี้คุณสามารถทำสิ่งที่คุณต้องการโดยไม่ต้องกลัวความขัดแย้ง
ตัวอย่างเช่น
git checkout origin/master
หากคุณต้องการรวมการเปลี่ยนแปลงระยะไกลในสาขาหลักคุณสามารถทำได้:
git reset --hard origin/master
สิ่งนี้จะทำให้คุณสาขา "master" ให้ชี้ไปที่ "origin / master"
git stash; git fetch origin; git reset --hard origin/master
git stashอย่างไร git stash listมันว่างเปล่า.
ฉันเข้าใจคำถามเช่นนี้: คุณต้องการแทนที่เนื้อหาของไฟล์เดียว (หรือส่วนที่เลือก) ทั้งหมดจากอัปสตรีม คุณไม่ต้องการที่จะส่งผลกระทบต่อดัชนีโดยตรง (ดังนั้นคุณจะต้องเพิ่ม + กระทำตามปกติ)
เพียงทำ
git checkout remote/branch -- a/file b/another/file
หากคุณต้องการทำเช่นนี้เพื่อ subtrees กว้างขวางและต้องการที่จะส่งผลกระทบต่อดัชนีใช้โดยตรง
git read-tree remote/branch:subdir/
จากนั้นคุณสามารถอัปเดตสำเนาการทำงานของคุณ (เลือกทำ)
git checkout-index -u --force
ความเข้าใจของฉันคือว่าคุณบันทึกไฟล์ที่คุณอัปเดตผิดเพื่อการทดสอบเท่านั้น จากนั้นเมื่อคุณเรียกใช้ "สถานะ git" ไฟล์จะปรากฏเป็น "แก้ไข" และคุณพูดคำที่ไม่เหมาะสม คุณเพียงแค่ต้องการให้เวอร์ชันเก่ากลับมาและทำงานได้ตามปกติ
ในสถานการณ์นั้นคุณสามารถรันคำสั่งต่อไปนี้:
git checkout -- path/filename
ฉันจะเช็คเอาท์ไฟล์ระยะไกลจาก "ต้นแบบ" (ที่เก็บระยะไกล / แหล่งกำเนิด) เช่นนี้:
git checkout master <FileWithPath>
ตัวอย่าง: git checkout master components / indexTest.html
ใช้ตัวเลือก-sหรือ--strategyรวมกับ-Xตัวเลือก ในคำถามเฉพาะของคุณคุณต้องการเก็บไฟล์รีโมตทั้งหมดและแทนที่ไฟล์โลคัลที่มีชื่อเดียวกัน
แทนที่ข้อขัดแย้งด้วยรุ่นระยะไกล
git merge -s recursive -Xtheirs upstream/master
จะใช้เวอร์ชัน repo ระยะไกลของไฟล์ที่ขัดแย้งทั้งหมด
แทนที่ข้อขัดแย้งด้วยรุ่นท้องถิ่น
git merge -s recursive -Xours upstream/master
จะใช้เวอร์ชั่น repo ท้องถิ่นของไฟล์ที่ขัดแย้งทั้งหมด
git merge -s their