Đẩy các cam kết trống vào điều khiển từ xa


241

Tôi đã đẩy một cam kết vào điều khiển từ xa nhưng bây giờ tôi nhận ra rằng thông điệp cam kết không chính xác. Tôi muốn thay đổi thông điệp cam kết nhưng AFAIK thì không thể. Vì vậy, tôi quyết định tạo cam kết trống với thông báo chính xác:

git commit --allow-empty

Có bất kỳ nhược điểm / hậu quả của việc đẩy các cam kết trống không? Có bất kỳ vấn đề nào tôi có thể gặp phải trong tương lai vì cam kết trống rỗng này không ??


1
Kiểm tra câu hỏi tương tự stackoverflow.com/questions/6218199/ này
Montaro

Câu trả lời:


80

Bạn sẽ không phải đối mặt với bất kỳ hậu quả khủng khiếp nào, chỉ là lịch sử sẽ có vẻ khó hiểu.

Bạn có thể thay đổi thông điệp cam kết bằng cách thực hiện

git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)

NHƯNG điều này sẽ ghi đè lên lịch sử từ xa với bạn, có nghĩa là nếu bất cứ ai kéo repo đó trong khi đó, người này sẽ rất giận bạn ...

Chỉ cần làm điều đó nếu bạn là người duy nhất truy cập repo.


5
Vâng, đó là lý do tại sao tôi thích đẩy cam kết trống
mrutyunjay

4
@mrutyunjay nếu có cơ hội người khác kéo repo, thì đúng, tôi nghĩ đó là một lựa chọn đẹp hơn.
Gabriele Petronella

1
Bạn sẽ không phải đối mặt với bất kỳ hậu quả khủng khiếp nào, chỉ là lịch sử sẽ có vẻ khó hiểu - hậu quả khủng khiếp! ;-)
Alois Mahdal

3
Thích --force-with-leasetránh làm mất việc của cộng tác viên.
Kenzo

22

đẩy cam kết, cho dù trống hay không, làm cho móc git cuối cùng được kích hoạt. Điều này có thể không làm gì hoặc có hậu quả làm tan vỡ thế giới.


9
Đây là một quan sát đánh giá thấp. Có, các cam kết trống có thể vượt trội hơn so với các cam kết được đẩy, nhưng chúng không thể được coi là không có tác dụng phụ nếu có thể có các móc nối tại chỗ.
wintermute92

18

Có bất kỳ nhược điểm / hậu quả của việc đẩy các cam kết trống không?

Bên cạnh sự nhầm lẫn tột độ, ai đó có thể hiểu tại sao có một loạt các cam kết không có nội dung trong đó về chủ, không thực sự.

Bạn có thể thay đổi cam kết mà bạn đã đẩy sang điều khiển từ xa, nhưng sha1 của cam kết (về cơ bản là số id) sẽ thay đổi vĩnh viễn, điều này làm thay đổi cây nguồn - Sau đó, bạn phải git push -fquay lại từ xa.


15

Miễn là bạn tham chiếu rõ ràng các cam kết khác từ cam kết trống thì sẽ ổn. Cái gì đó như:

Commit message errata for [commit sha1]

[new commit message]

Như những người khác đã chỉ ra, điều này thường được ưu tiên hơn để buộc đẩy một cam kết đã sửa.


10
 $ git commit --allow-empty -m "Trigger Build"

2
Mặc dù mã này có thể giải quyết câu hỏi, bao gồm giải thích về cách thức và lý do giải quyết vấn đề này thực sự sẽ giúp cải thiện chất lượng bài đăng của bạn và có thể dẫn đến nhiều lượt bình chọn hơn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai, không chỉ người hỏi bây giờ. Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích và đưa ra dấu hiệu về những hạn chế và giả định được áp dụng. Từ đánh giá
tiếng bíp đôi

-1

Cái này thì sao;

 git commit --allow-empty-message -m ''

Bạn chỉ cần xóa tin nhắn và điều đó thậm chí còn tệ hơn nếu một cam kết sẽ trống, ít nhất nên có một tin nhắn tại sao.
Eric Bishard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.