ฉันจะแก้ไขข้อความกระทำที่ไม่ถูกต้องด้วย TortoiseGit ได้อย่างไร?


108

ฉันจะแก้ไขข้อความคอมมิตด้วย tortoiseGIT ได้อย่างไร คำถามคือคล้ายกันมากกับเรื่องนี้แต่ผมต้องการที่จะทำเช่นนี้กับ TortoiseGit ไม่ได้อยู่กับคอนโซลมันเป็นไปได้หรือไม่


คำตอบ:


163

หากคอมมิตเป็นหัวหน้าสาขาปัจจุบันนั่นเป็นเรื่องง่าย

  1. เมนูบริบท -> Git Commit
  2. เลือกช่องทำเครื่องหมาย "แก้ไขคำสั่งสุดท้าย"
  3. แก้ไขข้อความคอมมิตของคุณ
  4. ตกลง

หากคอมมิตเป็นหัวหน้าของสาขาอื่นให้สลับไปยังสาขานั้นก่อน

  1. เมนูบริบท -> TortoiseGit -> สลับ / ชำระเงิน
  2. เลือกชื่อสาขา
  3. ตกลง
  4. ทำตามขั้นตอน 1-4 ด้านบนเพื่อแก้ไขข้อความคอมมิต

หากคอมมิตอยู่ตรงกลางโดยไม่มีการผสานระหว่างส่วนหัวคุณจะต้องรีเซ็ตแก้ไขและเลือกเชอร์รี่

  1. เมนูบริบท -> TortoiseGit -> Log
  2. เลือกคอมมิต -> เมนูบริบท -> รีเซ็ต
  3. Hard Reset ( สิ่งนี้จะละทิ้งงานทั้งหมดที่มีอยู่ในการกระทำเหนือการกระทำที่เลือกไว้ตลอดจนการเปลี่ยนแปลงที่ไม่ได้ผูกมัดใด ๆ ในไดเรกทอรีการทำงาน )
  4. ตกลง
  5. ทำตามขั้นตอน 1-4 ด้านบนเพื่อแก้ไขข้อความคอมมิต
  6. เลือกจากส่วนหัวหนึ่งไปยังหนึ่งการกระทำด้านบน -> เมนูบริบท -> เลือกเชอร์รี่
  7. ดำเนินการต่อ

12
ฉันคิดถึง "แก้ไขข้อความบันทึก" ของ TortoiseSVN จริงๆ มีโอกาสที่จะเพิ่มคุณสมบัติดังกล่าวหรือไม่?
Benoit Blanchon

3
ฉันหลงทางในขั้นตอนที่ 6 คุณหมายถึงอะไรโดย "Select from head to one กระทำด้านบน" คือตัวเลือกในเมนูบริบทหรือไม่
Flethuseo

1
แพ้ในขั้นตอนที่ 6 ด้วย ไม่มีตัวเลือกเชอร์รี่ที่ใดก็ได้และฉันไม่เห็นการกระทำข้างต้นไม่ว่าในกรณีใด ๆ (เพียงแค่บอกว่าการเปลี่ยนแปลงของผู้อำนวยการทำงานซึ่งไม่มีอยู่จริง)
Robert Ivanc

13
โหวตลงเนื่องจากฉันคิดว่าข้อเสนอแนะในกรณีที่คอมมิตอยู่ตรงกลางทำให้ฉันต้องยกเลิกการเปลี่ยนแปลงโค้ดของฉันซึ่งเป็นเวลาหลายสัปดาห์ในการทำงาน
ซามูเอล

8
คำเตือน: ใช้ "สร้างสาขาที่เวอร์ชันนี้" เพื่อตั้งชื่อสาขาชั่วคราวก่อนที่จะรีเซ็ตเป็นคอมมิตที่คุณต้องการแก้ไข มิฉะนั้นคุณจะเสี่ยงต่อการสูญเสียการกระทำทั้งหมดที่อยู่เหนือจุดนี้ (หากสิ่งนี้เกิดขึ้นกับคุณแล้วgit reflogจะช่วยให้คุณเรียกคืนได้)
Steve Pitchers

19

สำหรับกรณีที่การคอมมิตอยู่ตรงกลางฉันขอแนะนำอย่างยิ่งว่าอย่าทำตามคำแนะนำของ linquize โปรดดูความคิดเห็นด้านล่างคำตอบของเขาสำหรับเหตุผล

  1. คุณสามารถใช้บรรทัดคำสั่ง git กับ TortoiseGit และจะไม่ทำให้เกิดปัญหาใด ๆ : ฉันสามารถใช้เครื่องมือ Git บรรทัดคำสั่งและ TortoiseGit พร้อมกันได้หรือไม่ .

  2. นี้วิดีโอ youtube อธิบายได้ดีจริงๆ: http://youtu.be/4YjKY0u9Z6I โดยทั่วไปใช้ git rebase -i แล้วเพียงแค่ "reword" ข้อความคอมมิต

อัปเดต: ฉันเชื่อว่าคุณสามารถเรียกคืนคอมมิตที่หายไปจากฮาร์ดรีเซ็ตที่แนะนำโดย linquize ดูคำตอบของ Wayne ที่นี่: ฉันจะเรียงลำดับ / รวมคอมมิตใหม่โดยใช้ Git rebase ได้อย่างไร .


7
เห็นด้วย git ใช้เวลาเรียนรู้วิธีใช้งานนานอย่างไม่น่าเชื่อ SVN นั้นง่ายมาก แนวคิดของคอมไพล์นั้นเรียบง่าย แต่การใช้งานไม่ได้
ซามูเอล

TortoiseGit ยังมี rebase แบบโต้ตอบคุณไม่จำเป็นต้องใช้บรรทัดคำสั่งสำหรับสิ่งนี้
ปีเตอร์

13

ฉันจะบอกว่าวิธีที่ดีที่สุดในการแก้ไขข้อความกระทำคือการใช้force rebaseตัวเลือกใน tortoisegit

ดูคำตอบนี้ในวิธีการสั่งซื้อใหม่ Commits (rebase) กับ TortoiseGit สามารถใช้วิธีเดียวกันนี้เพื่อแก้ไขข้อความคอมมิต

  • เมื่อคุณอยู่ในกล่องโต้ตอบ rebase ให้คลิกขวาที่คอมมิตที่คุณต้องการแก้ไขและเลือกEditตัวเลือก คุณสามารถเลือกที่จะแก้ไขคอมมิตหลายรายการ
  • คลิกStart Rebaseปุ่ม
  • Rebase จะหยุดชั่วคราวที่คอมมิตที่คุณทำเครื่องหมายไว้ Edit
  • คลิกที่Commit Messageแท็บด้านล่างและแก้ไขข้อความ
  • คลิกAmendปุ่มเพื่อดำเนินการต่อ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.