วิธีการเช็คเอาท์ของเรา / ไฟล์ของพวกเขาใน magit?


16

สมมติว่าฉันมีความขัดแย้งที่ผสาน ฉันเห็นไฟล์ที่ขัดแย้งกันดังนี้:

Unstaged changes:
    Unmerged   Foo/bar/wibble/plop/elbow.txt

ฉันสามารถกดแท็บที่นี่เพื่อเปิดการเปลี่ยนแปลงและอาจข้ามไปยังจุดภายในไฟล์เพื่อแก้ไขด้วยมือ แต่ถ้าเป็นไฟล์ขนาดใหญ่ที่มีข้อขัดแย้งมากมายที่ต้องใช้เวลา

ฉันจะขอ git ผ่านทาง magit เพื่อชำระเงินไฟล์ของเราหรือของพวกเขาเพื่อแก้ไขข้อขัดแย้งได้อย่างไร? ฉันสามารถคัดลอกเส้นทางแล้วใช้Shift-:เพื่อป้อนคำสั่ง git ที่กำหนดเอง แต่ดูเหมือนว่าจะต้องมีแป้นพิมพ์ลัดสำหรับสิ่งนี้ ฉันไม่เห็นสิ่งใดที่ชัดเจนในเมนู magit หรือ?ป๊อปอัป


3
ขณะนี้ไม่ได้ตอบคำถามของคุณโดยตรง แต่อาจมีประโยชน์ จุดบนไฟล์ความขัดแย้งในการย้ายmagit-statusและกดeเพื่อเริ่มต้น 3 ediffวิธีการควบรวมกับ อีกทางเลือกหนึ่งคือในบัฟเฟอร์ความขัดแย้งคุณสามารถเปิดsmerge-modeเพื่อเน้นความขัดแย้งและทำการผสานแบบโต้ตอบในบัฟเฟอร์ของคุณ (ไม่ใช่ ediff) คีย์นำหน้าการโยงสำหรับsmerge-modeคำสั่งที่เกี่ยวข้องคือC-c ^; คุณสามารถกดC-c ^ C-hเพื่อดูการเชื่อมโยงปุ่มทั้งหมด
Tu Do

ฉันไม่พบ "ของเรา" หรือ "ของพวกเขา" ในเอกสารเช่นกัน magit.github.io/master/magit.html#Pushing-and-Pulling
Ehvince

1
ดูเหมือนคำถามที่ดีที่จะเปิดคำขอคุณสมบัติหรือไม่
Ehvince

1
ความคิดที่ดี @Ehvince ดำเนินการแล้ว: github.com/magit/magit/issues/1643
tenpn

1
Oooh: ในเวอร์ชั่นถัดไปของ magit คุณสามารถkทำผิดและเลือกเวอร์ชั่นที่จะเก็บ ฟังดูสมบูรณ์แบบ! github.com/magit/magit/issues/1643
tenpn

คำตอบ:


16

ฉันไม่แน่ใจว่าเมื่อเพิ่มคุณสมบัตินี้ แต่มันทำอย่างสมบูรณ์แบบ:

  1. รวมสาขาหนึ่งเข้าด้วยกันและเผชิญหน้ากับความขัดแย้ง
  2. ในบัฟเฟอร์ Magit จะมีส่วนสำหรับMerging master, และ,Unstaged changes Staged changesไฟล์ที่ขัดแย้งกันอยู่Unstaged changes
  3. ในบรรทัดที่มีไฟล์ที่ขัดแย้งกันให้กดkเพื่อยกเลิกการเปลี่ยนแปลง (เช่นการเปลี่ยนแปลงที่ขัดแย้ง)
  4. ใน minibuffer คุณจะเห็นคำตอบ:

For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort


5

มีหลายวิธี:

  • ใช้ smerge-ediff M-x smerge-ediffในแฟ้มที่มีความขัดแย้งที่คุณเรียก มันจะทำให้คุณอยู่ในโหมดแก้ไขความผิดพลาดโดยมีบัฟเฟอร์เปิดสี่ตัวคือคุณ, ของพวกเขา, ผสานและบัฟเฟอร์คำสั่ง ในบัฟเฟอร์คำสั่งคุณใช้nและpไปที่ก้อนถัดไปหรือก่อนหน้า "a" หรือ "b" เพื่อยอมรับการเปลี่ยนแปลงจากบัฟเฟอร์แรกหรือบัฟเฟอร์ที่สองหรือคุณสามารถไปที่บัฟเฟอร์ผสานและแก้ไขตามที่คุณต้องการ
  • ใช้ ediff จาก magit กับeรุ่นที่เสถียรของ magit หรือM-eหรือM-m( magit-ediff-resolve) ใน magit สาขาถัดไปจากนั้นคุณจะพบว่าตัวเองชอบในกรณีแรกเป็นส่วนใหญ่
  • นอกจากนี้ยังมีโหมด smerge C-c ^ nและC-c ^ pจะช่วยให้คุณเปลี่ยนจากก้อนใหญ่ไปเป็นรุ่นก่อนหน้าหรือถัดไปคุณสามารถแก้ไขได้หรือใช้C-c ^ oเพื่อเก็บรุ่น 'อื่น ๆ ' C-c ^ mเพื่อรักษารุ่น 'เหมือง' C-c ^ bเพื่อคงสภาพเดิมเอาไว้ รุ่นและC-c ^ aเพื่อให้พวกเขาทั้งหมด
  • คุณสามารถใช้ magit-find-file เพื่อเปิดไฟล์เหมือนเดิม

ฉันไม่เห็นว่า Tu Do มีคำตอบที่ฉันโพสต์ไว้ที่นี่มากที่สุดแล้ว Sory
Rémi

ขอบคุณสำหรับรายการที่ครอบคลุม แต่ฉันเดาคำตอบ "มีวิธีรัดกุมเพื่อรับรุ่นของเราหรือ Thiers" ไม่ใช่ :(
tenpn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.