2012-02-02 66 views
196

Tôi thấy mình sửa đổi cam kết của tôi khá thường xuyên. Tôi không stash rất nhiều vì tôi có xu hướng quên tôi đã làm như vậy, đặc biệt là khi tôi muốn tiết kiệm những gì tôi đã làm trước khi tôi rời đi hoặc trước một ngày cuối tuần, vì vậy tôi làm một "dự thảo" cam kết. Chỉ có điều là, khi tôi sửa đổi cam kết, nó vẫn được đặt cho ngày tác giả ban đầu. Có cách nào (đơn giản) để cập nhật nó khi sửa đổi không?Cập nhật git commit author date khi sửa đổi

+0

Điều này đặc biệt hữu ích khi bạn thực hiện rebase tương tác và mong muốn GitHub để hiển thị các cam kết trong Yêu cầu Kéo để cây thay vì thứ tự ngày. – Sukima

Trả lời

245

Bạn có thể thay đổi ngày tác giả với thông số --date thành git commit. Vì vậy, nếu bạn muốn sửa đổi cam kết cuối cùng, và cập nhật ngày tác giả của nó đến ngày và thời gian hiện tại, bạn có thể làm:

git commit --amend --date="$(date -R)" 

(Các -R tham số để date nói với nó để sản lượng ngày ở định dạng RFC 2822 . Đây là một trong những date formats understood by git commit)

+22

FTR, trông giống như trên OS X, 'ngày' không biết' -R'. Sử dụng 'date' mà không có tùy chọn nào đã làm công việc anyway – ksol

+5

Lưu ý rằng nếu bạn muốn điều này làm bí danh, bạn cần phải thêm một'! 'Và thoát khỏi dấu ngoặc kép, ví dụ: 'can =! git commit --amend --date = \" $ (date -R) \ "' –

+9

'date -R' không hoạt động trên OSX, sử dụng' date +% s' thay vì – stash

201

một cách khác để làm điều này là

git commit --amend --reset-author 

này thay đổi tác giả cam kết cũng như ngày -. nhưng nếu nó đã được ban unpushed bạn cam kết thì đó là một không -op.

Bạn cũng có thể thêm --no-edit nếu bạn muốn cập nhật ngày trên nhiều lần commit nhưng bạn muốn thông báo cam kết không bị ảnh hưởng. Bằng cách này, bạn sẽ không được nhắc chỉnh sửa tin nhắn cho mỗi lần commit.

10

Tôi thích câu trả lời của Mark và đã sử dụng nó nhiều lần, nhưng giờ tôi đang ở trên OS X và date -R không được hỗ trợ. Nhưng mọi thứ dễ hơn nhiều so với câu trả lời ban đầu khiến chúng tôi nghĩ, chỉ cần sử dụng chuỗi trống!

git commit --date= --amend 
+3

Điều đó không hiệu quả. Git hủy bỏ lỗi "định dạng ngày tháng không hợp lệ": ' –

+0

Làm việc cho tôi (trên Windows, Git 1.9.4) – Csq

+0

Tôi gặp lỗi giống như @NikosC (trên Linux, Git 2.1) – Tshepang

113
git commit --amend --date=now 

(Git phiên bản 2.7.0)

1

Tôi tạo ra gói NPM này nếu ai đó vẫn đang tìm kiếm một cách đơn giản để thay đổi ngày của nhiều cam kết.

https://github.com/bitriddler/git-change-date

Cách sử dụng:

npm install -g git-change-date 
cd [your-directory] 
git-change-date 
Các vấn đề liên quan