修正時にgit commit authorの日付を更新する


305

私は自分のコミットを頻繁に修正していることに気づきました。stash特に忘れる傾向があるので、それほど多くはありません。特に、出発前または週末の前に行った作業を保存したい場合は、「ドラフト」コミットを行います。唯一のことは、私がコミットを修正するとき、それはまだオリジナルの作者の日付に設定されているということです。修正時に更新する(簡単な)方法はありますか?


5
これは、インタラクティブなリベースを実行し、GitHubがプルリクエストのコミットを日付順ではなくツリー順で表示する場合に特に便利です。
スキマスイッチ

回答:


368

--dateパラメータを使用して作成者の日付をに変更できますgit commit。したがって、最後のコミットを修正し、その作成者の日付を現在の日付と時刻に更新する場合は、次のようにします。

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

(RFC 2822形式で日付を出力する-Rようにdate指示するパラメーター。これは、が理解する日付形式のgit commit 1つです。)


27
FTRはOS Xのように見えますdateが、わかりません-Rdateオプションなしで使用することはとにかく仕事をしました
ksol

7
これをエイリアスとして使用する場合は、aを追加し!て引用符をエスケープする必要があることに注意してください。たとえば、can = !git commit --amend --date=\"$(date -R)\"
Fabian Steeg

9
date -ROSXでは機能しません。date +%s代わりに使用してください
2014

4
FreeBSDのIdem:git commit --amend --date="$(date +%s)"
Dereckson

120
git commit --amend --date=nowまた働きます。date(1)コマンドでサブシェルを呼び出す必要はありません。git(1)のソースコードのdate.c確認できます。 「now」は、date_now()関数を使用して変換される特別な値です。「noon」、「yesterday」、「midnight」、「tea」など、構造体配列special []にリストされているものについても同じです。
sbz

267

これを行う別の方法は

git commit --amend --reset-author

これにより、日付だけでなくコミットの作成者も変更されます。ただし、元々プッシュされていないコミットの場合は、何も起こりません。

--no-edit複数のコミットで日付を更新したいが、コミットメッセージはそのままにしておく場合も追加できます。この方法では、コミットごとにメッセージを編集するように求められません。


4
この動作がデフォルトではなく、明示的に指定する必要があるのはなぜですか。それは非常に驚くべきことであり、潜在的に悪い結果につながります。私の理解では、git commit --amend 変更は単なる微調整などではなくコミットです。つまり、バージョン管理システムが非常に厳密である場合、リポジトリコンテンツの変更の履歴が異なります。そのため、私は直感的に、作成者と日付の両方が実際のコミットデータと一致することを期待しています。特に、著者であることは重要であり、日付ではありません。そのようなデフォルトを担当するgit開発者を倒したい場合は、このコメントに投票してください。:)
Artem Pisarenko

258

Git v2.1.4以降(Debian 8(Jessie)でテスト済み)

git commit --amend --date=now

8
また、コミットメッセージを再び表示したくない場合は、を追加し--no-editます。
Henrik N

12

マークの答えが気に入って何度か使ったが、今はOS Xを使っているdate -Rのでサポートされていない。しかし、すべてが元の答えよりもはるかに簡単であると考えられました。空の文字列を使用してください

git commit --date= --amend

6
それはうまくいきません。Gitはエラーで中止しますfatal: invalid date format:
Nikos C.

私のために働いた(Windows、Git 1.9.4)
Csq

1
--date="$(date)"OS Xでの使用に-R適しています。オプションはGNUismです。
–RudáMoura 2017

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.