Оновіть дату створення автора git при внесенні змін


305

Я часто міняв свої зобов'язання. Я не stashтак багато, тому що я, як правило, забуваю, що робив це, особливо коли я хочу зберегти те, що робив перед від’їздом або перед вихідними, тому я роблю «чернетку». Єдине, що коли я вношу зміни до комісії, воно все одно встановлюється на початкову дату автора. Чи існує (простий) спосіб оновити його при внесенні змін?


5
Це особливо корисно, коли ви виконуєте інтерактивну базу даних і очікуєте, що GitHub відобразить комісії в порядку запиту на порядок дерев замість порядку дат.
Сукіма

Відповіді:


368

Ви можете змінити дату автора за допомогою --dateпараметра на git commit. Отже, якщо ви хочете внести зміни до останнього зобов’язання та оновити дату його автора до поточної дати та часу, ви можете зробити:

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

( -RПараметр, який dateвказує йому, виводить дату у форматі RFC 2822. Це один із форматів дат, зрозумілий підgit commit .)


27
FTR, схоже на OS X, dateне знає -R. Використання dateбез варіантів справи все-таки
справились

7
Зауважте, що якщо ви хочете це як псевдонім, вам потрібно додати «a» !та залишити лапки, наприкладcan = !git commit --amend --date=\"$(date -R)\"
Fabian Steeg

9
date -Rне працює на OSX, використовуйте date +%sзамість цього
відкладіть

4
Idem для FreeBSD:git commit --amend --date="$(date +%s)"
Дерексон,

120
git commit --amend --date=nowпрацює також. Немає необхідності викликати підзаголовок із командою date (1) . Ви можете бачити це у вихідному коді git (1) у date.c "зараз" - це спеціальне значення, яке перетворюється за допомогою функції date_now (). Те саме для "полудня", "вчора", "опівночі", "чаю" та інших, зазначених у структурі масиву special [].
sbz

267

Ще один спосіб зробити це

git commit --amend --reset-author

Це змінює автора комітету, а також дату - але якщо спочатку це було ваше незапущене введення, то це неоперативний варіант.

Ви також можете додати, --no-editякщо ви хочете оновити дату для кількох комітетів, але ви хочете, щоб повідомлення комісій залишалися недоторканими. Таким чином, вам не буде запропоновано редагувати повідомлення для кожної комісії.


4
Цікаво, чому така поведінка не є типовою, і її слід чітко вказати. Це дуже дивно і призводить до потенційно поганих наслідків. На моє розуміння, git commit --amend зміни роблять скоріше, ніж просто налаштування або щось подібне, тобто це призводить до різної історії змін вмісту сховища, де будь-яка система контролю версій дуже сувора. І як інтуїтивно, я інтуїтивно очікую, що і автор, і дата співпадають із фактичними даними фіксації. Особливо важливо авторство, навіть не дата. Проголосуйте за цей коментар, якщо ви хочете перемогти розробників git, відповідальних за такий дефолт. :)
Артем Писаренко

258

Станом на Git v2.1.4 (тестовано на Debian 8 (Jessie))

git commit --amend --date=now

8
Якщо ви не хочете знову бачити повідомлення про фіксацію, додайте --no-edit.
Генрік N

12

Мені подобається відповідь Марка і я використовував її кілька разів, але зараз я перебуваю на OS X і date -Rне підтримується. Але все набагато простіше, ніж оригінальна відповідь змусила нас задуматися, просто використовуйте порожню рядок !

git commit --date= --amend

6
Це не працює. Git перериває помилкуfatal: invalid date format:
Нікос C.

Працював для мене (у Windows, Git 1.9.4)
Csq

1
Краще використовувати --date="$(date)"в OS X. Варіант -R- GNUism.
Rudá Moura

0

Я створив цей пакет npm, якщо хтось все ще шукає простий спосіб змінити дати кількох комітів.

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

Використання:

npm install -g git-change-date
cd [your-directory]
git-change-date

17
Чи справді потрібен інший npmпакет? Ні, навчіться використовувати gitкоманду як є.
Урда
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.