2012-07-22 32 views
29

Tôi ngu ngốc đã đẩy một cam kết GitHub với một tên cam kết rất sai lầm. Làm cách nào để thay đổi điều này?Làm thế nào để bạn đổi tên một cam kết Git đẩy vào GitHub?

Hiện git commit --amend vẫn hoạt động đối với cam kết đã được đẩy chưa?

+0

Sử dụng 'git commit --amend' theo sau là' git push --force'. – vanza

+0

Tôi không khuyến nghị 'git push --force'. Bạn muốn rõ ràng và chỉ ép buộc những gì bạn cần phải bị ép buộc. Ví dụ: 'git push --force origin-branch'. Bạn cũng có thể sử dụng dạng lực ngắn '-f'. Các biểu mẫu ngắn có thể được nối với nhau thành một tùy chọn. Ví dụ. 'git push -uf origin mybranch' –

Trả lời

50
git commit --amend 

mà sẽ mang đến soạn thảo của bạn, hoặc

git commit --amend -m "Your new message here" 

mà sẽ cho phép bạn chỉ định các tin nhắn mới trên dòng lệnh. Cũng có thể, nhưng hữu ích hơn nếu bạn có các cam kết khác để viết lại

git rebase -i HEAD^ 
# then replace 'pick' with 'r' or 'reword' and save, editor should pop up again to edit the msg 

Vì cam kết này có SHA1 mới do thay đổi nội dung, bạn sẽ cần phải đẩy tham chiếu mới. Lực lượng là cần thiết bởi vì nó nói với git để quên đi những cam kết trước đó. Đó là một biện pháp an toàn.

git push origin your-branch-name -f 
+3

Một cái gì đó cần lưu ý, nếu bạn đang làm việc trên một dự án lớn, nơi ai đó có thể đã kiểm tra cam kết bạn đang thay thế, thì công việc của họ trên đó trở nên rất khó để hợp nhất in. –

+1

Nếu bạn đổi tên nội dung, nó thực sự tầm thường. Tất cả những gì họ cần làm là 'git fetch' và' git rebase origin/master' giả định chúng đang làm việc trên master. Không có xung đột nào vì không có ảnh chụp nhanh nào bị thay đổi. –

Các vấn đề liên quan