การแก้ไขข้อความคอมมิทยอมรับใน GitHub


173

มีวิธีแก้ไขข้อความคอมมิชชันทางออนไลน์GitHub.comหลังจากส่งหรือไม่?

จากบรรทัดคำสั่งหนึ่งสามารถทำได้

git commit --amend -m "New commit message"

ตามที่แนะนำอย่างถูกต้องในคำถามอื่น

ลองgit pullแล้วgit pushได้ผล

แต่สามารถทำได้ผ่านGitHubเว็บไซต์หรือไม่


โปรดดูคำตอบของ @ DanGreen-Leipciger แม้ว่าจะไม่ใช่คำตอบที่ยอมรับก็ตาม
RBT

คำตอบ:


101

ไม่ได้ไม่สามารถทำได้โดยตรง การแฮชสำหรับการคอมมิท Git ทุกครั้งจะถูกคำนวณตามข้อความคอมมิท เมื่อคุณเปลี่ยนข้อความกระทำคุณเปลี่ยนแฮชการกระทำ หากคุณต้องการที่จะผลักดันการกระทำนั้นคุณจะต้องบังคับให้กด (git push -f) แต่ถ้ามีใครบางคนดึงความมุ่งมั่นเก่า ๆ ของคุณและเริ่มงานโดยใช้ความมุ่งมั่นนั้นเขาจะต้องลดงานของเขาลงบนความมุ่งมั่นใหม่ของคุณ


ฉันสามารถดึง git แล้วก็ git push และใช้งานได้ แต่เห็นได้ชัดว่าไม่มีทางออนไลน์
PNS

ยังคงเป็นไปไม่ได้ตั้งแต่วันที่ 5 เมษายน 2016
bigT

และฉันคิดว่ามันจะไม่ให้ความสำคัญสูงเนื่องจากคุณจะเปลี่ยนประวัติศาสตร์การกระทำของสาขาที่ตีพิมพ์แล้วซึ่งคุณไม่ควรทำ (ยกเว้นว่าคุณแน่ใจ 200% ไม่มีใครมีสาขานี้ในเครื่องของเขา)
dunni

นี่เป็นเพียงครึ่งจริง มันเป็นเรื่องจริง แต่มีเพียงสมมติฐาน คำตอบจะดีกว่าหากมีการรวมกับ @DanGreen (ด้านล่าง) มันไม่ใช่ "เป็นไปได้โดยตรง" และแน่นอนว่ามันมาพร้อมกับคำเตือนล่วงหน้า (เช่น: "คุณควร" ไม่ควร "ทำเช่นนี้ ... [ยกเว้นเมื่อคุณแน่ใจว่าคุณต้องการ]") - แต่เพียงบอกว่านี่ไม่ใช่ เป็นไปได้เมื่อเป็นไปได้ทางเทคนิคเป็นคำตอบที่ไม่สมบูรณ์
สารพิษ

1
OP ถามว่าเป็นไปได้หรือไม่ที่จะทำออนไลน์บนเว็บไซต์ Github AFAIK นี้ยังคงเป็นไปไม่ได้ ดังนั้นคำตอบของฉันจึงถูกต้องและคำตอบของ Dan Green จะจัดการเฉพาะวิธีที่จะทำได้ในพื้นที่ไม่ใช่ในเว็บไซต์ Githubs
dunni

145

คำแนะนำของ GitHub สำหรับการทำสิ่งนี้:

  1. บนบรรทัดรับคำสั่งนำทางไปยังที่เก็บที่มีการคอมมิตที่คุณต้องการแก้ไข
  2. พิมพ์git commit --amendและกด Enter
  3. ในเท็กซ์เอดิเตอร์ของคุณแก้ไขข้อความคอมมิตและบันทึกการคอมมิต
  4. ใช้git push --force example-branchคำสั่งเพื่อบังคับให้ทำการคอมมิชชันเก่า

ที่มา: https://help.github.com/articles/changing-a-commit-message/


11
ระวัง! ความแตกต่างระหว่างการใช้ <git commit --amend> & <Enter> และ <git commit --amend -m "ข้อความยืนยันใหม่"> คือในกรณีที่ 1 คุณจะแก้ไขข้อความยืนยันใน text editor & ในส่วนที่ 2 ของคุณแทนที่ด้วย "ข้อความยืนยันใหม่" หากคุณบังคับให้กดนี่จะเป็นการแทนที่การกระทำบนรีโมทของคุณ นี่ไม่ได้แก้ปัญหาที่ว่าถ้าคนอื่น ๆ ในทีมของคุณดึงการคอมมิชชันก่อนหน้าคุณจะมีประวัติที่แตกต่างกัน หากคุณรู้ว่าไม่มีใครดึงความมุ่งมั่นของคุณไปได้สิ่งนี้จะปลอดภัย อ่านแหล่งที่มาแดนโพสต์
TMIN

7
git commit --amendมีอยู่เสมอ นอกจากนี้คุณยังสับสนระหว่าง git (ซึ่งเป็นเครื่องมือบรรทัดคำสั่งโอเพ่นซอร์ส) และ Github (ซึ่งเป็น บริษัท ที่ให้บริการโฮสติ้งแหล่งออนไลน์)
vinyll

1
OP ถามเกี่ยวกับ GitHub และโดยเฉพาะเกี่ยวกับหลังจากการส่งไปยังเซิร์ฟเวอร์ของพวกเขา นี่คือคำแนะนำของ GitHub สำหรับการทำสิ่งที่ OP ถาม
Dan Green-Leipciger

3
@ DanGreen-Leipciger - ใช่ แต่นี่ไม่ได้ทำบนเว็บไซต์มันทำโดยใช้บรรทัดคำสั่ง ฉันคิดว่า PNS ต้องการทำสิ่งนั้นจากภายในเว็บอินเตอร์เฟส
PhistucK

2
OP ถามว่าจะทำอย่างไรกับ GitHub โดยเฉพาะนี่เป็นวิธีทำกับ GitHub โดยเฉพาะ
Dan Green-Leipciger

30

คุณต้องgit push -fสมมติว่าไม่มีใครเคยทำผิดอื่นมาก่อน ระวังคุณกำลังเปลี่ยนประวัติศาสตร์


3

ไม่เพราะข้อความคอมมิชชันนั้นเกี่ยวข้องกับ commit SHA / hash และถ้าเราเปลี่ยนมัน commit SHA ก็จะเปลี่ยนไปเช่นกัน วิธีที่ฉันใช้คือการสร้างความคิดเห็นเกี่ยวกับการกระทำนั้น ฉันไม่สามารถคิดอย่างอื่นได้


2

สำหรับผู้ใช้ Intellij: หากคุณต้องการเปลี่ยนแปลงวิธีการโต้ตอบสำหรับการกระทำที่ผ่านมาซึ่งไม่ได้ดำเนินการตามขั้นตอนด้านล่างในIntellij :

  • เลือกการควบคุมเวอร์ชัน
  • เลือกบันทึก
  • คลิกขวาที่คอมมิทที่คุณต้องการแก้ไขความคิดเห็น
  • คลิกreword
  • เสร็จสิ้น

หวังว่ามันจะช่วย


0

ฉันกำลังเผชิญกับปัญหาเดียวกัน

ดูใน GitHub ของคุณสำหรับสาขาเฉพาะและคุณจะได้รู้ว่ารหัสกระทำของการกระทำแรกในสาขานั้น ทำ rebase ที่:

git rebase -i

ตัวแก้ไขจะเปิดขึ้น ติดตามการกระทำของคุณจาก github UI และเปิดตัวแก้ไขและเปลี่ยนข้อความ

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