ด้วย SVN มันง่ายที่จะย้อนกลับการรวมคอมมิต แต่จะทำอย่างไรกับ Git?
ด้วย SVN มันง่ายที่จะย้อนกลับการรวมคอมมิต แต่จะทำอย่างไรกับ Git?
คำตอบ:
ในการสร้างคอมมิตใหม่ที่ 'ยกเลิก' การเปลี่ยนแปลงของคอมมิตที่ผ่านมาให้ใช้:
$ git revert <commit>
นอกจากนี้ยังเป็นไปได้ที่จะลบคอมมิตออกจากจุดที่กำหนดเองในอดีตโดยการรีเบตใหม่แล้วรีเซ็ต แต่คุณไม่ต้องการทำเช่นนั้นจริงๆหากคุณผลักคอมมิตของคุณไปยังที่เก็บอื่นแล้ว (หรือมีคนอื่นดึงไปจากคุณ) .
-m <parent number>
ตัวเลือกgit revert
เพื่อระบุการเปลี่ยนแปลงที่จะเปลี่ยนกลับ หากคุณต้องการที่จะยกเลิกการผสานของประวัติศาสตร์ที่ไม่ได้รับการตีพิมพ์, git reset --hard HEAD^1
การใช้งาน
-m
วิธีการรวมในอนาคตจากสาขาที่ไม่ได้ผสานจะไม่รวมการเปลี่ยนแปลงจากก่อนการผสาน! โปรดดูschacon.github.com/git/howto/revert-a-faulty-merge.txtสำหรับวิธีที่เหมาะสมในการรวมสาขาที่ไม่ได้ผสานอีกครั้ง
เพื่อย้อนกลับผสานgit revert -m <parent number>
กระทำที่คุณจำเป็นต้องใช้งาน: ตัวอย่างเช่นในการย้อนกลับการคอมมิตการผสานล่าสุดโดยใช้พาเรนต์กับหมายเลข 1 คุณจะใช้:
git revert -m 1 HEAD
ในการย้อนกลับคอมมิตการผสานก่อนคอมมิตสุดท้ายคุณต้องทำ:
git revert -m 1 HEAD^
ใช้git show <merge commit SHA1>
เพื่อดูพ่อแม่การนับเลขคือลำดับที่ปรากฏเช่นMerge: e4c54b3 4725ad2
เอกสารการผสาน git: http://schacon.github.com/git/git-merge.html
git ผสานการสนทนา (สับสน แต่มีรายละเอียดมาก): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
git show <merge commit SHA1>
ดูพ่อแม่การเรียงเลขคือลำดับที่ปรากฏเช่นMerge: e4c54b3 4725ad2
git revert -m 1 SHA1
คำสั่งนั้นใช้งานได้สำหรับฉันในการยกเลิกการผสานคอมมิตที่เป็นการผสานหลายครั้งก่อนที่จะมีส่วนหัวและมีคอมมิตมากมายอยู่ข้างใต้
ถ้าฉันเข้าใจคุณถูกต้องคุณกำลังพูดถึงการทำไฟล์
svn merge -rn:n-1
เพื่อกลับออกจากการกระทำก่อนหน้านี้ซึ่งในกรณีนี้คุณอาจกำลังมองหา
git revert
git reset --hard HEAD^
ใช้คำสั่งด้านบนเพื่อยกเลิกการรวมการเปลี่ยนแปลง
หากคุณไม่ต้องการที่จะกระทำหรือต้องการที่จะกระทำในภายหลัง (ข้อความการกระทำจะยังคงถูกเตรียมไว้สำหรับคุณซึ่งคุณสามารถแก้ไขได้เช่นกัน):
git revert -n <commit>