Git เลิกทำการรวมความพยายาม


92

ฉันมีไดเร็กทอรีการทำงาน (# 1) ซึ่งมีไดเร็กทอรีผู้ขาย (# 2) อยู่ในนั้น มีการพึ่งพาอย่างหนึ่งที่ฉันต้องการดึงด้วยตนเองโดยไม่ใช้ผู้แต่ง (เวอร์ชัน php ของ npm / gem) ฉันทำงานใน # 1 ยังไม่ได้บันทึก / ยอมรับการเปลี่ยนแปลงเมื่อฉันตัดสินใจว่าต้องการอัปเดตห้องสมุดใน # 2 ฉันไปที่ vendor / myname และทำ git pull repository

น่าเสียดายที่มันเริ่มดึงและรวมเป็น # 1 แทนที่จะสร้างไดเรกทอรีใหม่ในโฟลเดอร์ผู้ขาย

ตอนนี้ฉันมี:

  • # 1 โฟลเดอร์ที่มีการเปลี่ยนแปลงของฉัน
  • # 1 โฟลเดอร์ที่มีไฟล์ที่ฉันไม่ต้องการจากที่เก็บที่ไม่ถูกต้อง
  • # 1 ผสานความขัดแย้งเช่น composer.json, Readme.md ... (ไฟล์ทั่วไป)

ฉันต้องการ "เลิกทำ" การดึงคอมไพล์สุดท้ายนี้โดยไม่สูญเสียการเปลี่ยนแปลงใด ๆ ที่ทำกับโฟลเดอร์ # 1 ฉันจะทำเช่นนี้ได้อย่างไร?


Git ป้องกันการดึงหรือผสานหากมีการเปลี่ยนแปลงที่ไม่ได้ผูกมัดคุณแน่ใจหรือไม่ว่านี่คือสิ่งที่เกิดขึ้น
CharlesB

1
@CharlesB ยกเลิกการผสานโครงการไม่รวมเจ็ท ฉันไม่รู้อะไรเลยเกี่ยวกับการป้องกันคอมไพล์ก่อนดึง ...
ewooycom

คำตอบ:


172

git merge --abort อาจเป็นสิ่งที่คุณกำลังมองหา


6
ใน git เวอร์ชันเก่า: git reset
--merge

มันได้ผล แต่ไม่ได้บอกอะไรคุณเลย ทำgit statusเพื่อยืนยัน
aliteralmind

18

Git สมัยใหม่:

git merge --abort

เก่ากว่า:

git reset --merge

โรงเรียนเก่า (คำเตือน: จะยกเลิกการเปลี่ยนแปลงในท้องถิ่นทั้งหมดของคุณ):

git reset --hard

แต่จริงๆแล้วเป็นที่น่าสังเกตว่าgit merge --abortเทียบเท่ากับgit reset --mergeสิ่งที่MERGE_HEADมีอยู่เท่านั้น สามารถอ่านได้ในวิธีใช้ git สำหรับคำสั่ง merge

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

หลังจากที่มีการผสานล้มเหลวเมื่อไม่มีMERGE_HEADการผสานล้มเหลวสามารถยกเลิกได้ด้วยgit reset --mergeแต่ไม่จำเป็นต้องมีgit merge --abort, ดังนั้นพวกเขาจะไม่เพียง แต่ไวยากรณ์เก่าและใหม่สำหรับสิ่งเดียวกัน โดยส่วนตัวแล้วฉันพบว่าgit reset --mergeมีประโยชน์มากกว่านี้ในการทำงานในชีวิตประจำวัน


2

ด้วย Git 2.10 (ไตรมาส 3 ปี 2559) คุณจะรู้ว่าต้องทำอย่างไรเพราะgit statusจะเสนอgit merge --abortตัวเลือก

ดูกระทำ b0a61ab (21 กรกฎาคม 2016) โดยMatthieu Moy (moy )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 5a2f4d3 , 3 สิงหาคม 2016)

status: แนะนำ ' git merge --abort' ตามความเหมาะสม

เราแนะนำ ' git rebase --abort' อยู่แล้วในช่วง rebase ที่ขัดแย้งกัน
ในทำนองเดียวกันแนะนำ ' git merge --abort' ในระหว่างการแก้ไขข้อขัดแย้งบน ' git merge'

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