Mise à jour git commit auteur date lors de la modification
Je me suis trouvé en modifiant mon commet assez souvent. Je n'ai pas stash
tellement parce que j'ai tendance à l'oublier, je l'ai fait, surtout quand je veux enregistrer ce que j'ai fait avant que je parte ou avant un week-end, donc je fais un "projet" s'engager. Seulement, c'est que quand je modifie les commettre, c'est toujours à l'auteur original date. Est-il un (simple) de façon à le mettre à jour lors de la modification?
- Ceci est particulièrement utile lorsque vous effectuez rebase interactif et attendre GitHub pour afficher l'écran s'engage dans la Demande d'extraction de l'arbre de commande au lieu de la date de commande.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez modifier la date de création avec la
--date
paramètregit commit
. Donc, si vous voulez modifier le dernier commit, et de mettre à jour son auteur date la date et l'heure, vous pouvez faire:(Le
-R
paramètredate
dit-il à la sortie de la date au format RFC 2822. C'est l'un des les formats de date comprise pargit commit
.)date
ne sais pas-R
. À l'aide dedate
sans options ont fait le travail de toute façon!
et d'échapper les guillemets, par exemplecan = !git commit --amend --date=\"$(date -R)\"
date -R
ne fonctionne pas sur OSX, utilisezdate +%s
au lieugit commit --amend --date="$(date +%s)"
git commit --amend --date="'$(date -R)'"
génère cette erreur pour moi en bash (Debian7):error: unknown option 'amend --no-edit --date='Tue, 10 Mar 2015 17:53:06 -0700''
etgit commit --amend --date="$(date +%s)"
génère cette erreur:error: unknown option 'amend --date=1426035358'
. quelqu'un peut me dire pourquoi?--no-edit
. Je peux reproduire ce que vous voyez sous bash dans Debian 7 si j'ai mis un\
avant de les espaces après les options ou mettre des guillemets à partir deamend
à la fin dedate
- en d'autres termes, échappant ainsi que bash est le traitement de tout ce qui est après la première--
comme un argument d'option.git commit --amend --date=now
fonctionne aussi. Pas besoin d'invoquer un shell interne est exécuté avec le date(1) la commande. Vous pouvez le voir dans le code source de git(1) dans date.c "maintenant" est une valeur particulière qui est converti à l'aide date_now() fonction. De même pour 'midi', 'hier', 'midnight", " thé " et les autres personnes mentionnées dans le tableau structure spéciale[].Une autre façon de le faire est
Ce ne changer la validation de l'auteur ainsi que la date - mais si c'était à l'origine de votre unpushed s'engager alors que c'est un no-op.
Vous pouvez également ajouter
--no-edit
si vous souhaitez mettre à jour la date sur plusieurs commits, mais vous souhaitez que les messages de validation de rester intacte. De cette façon, vous ne serez pas invité à modifier le message à chaque commit.De Git v2.1.4 (testé sur une Debian 8 (Jessie))
J'aime la Marque de la réponse et utilisé moi-même plusieurs fois, mais maintenant je suis sur OS X et
date -R
n'est pas pris en charge. Mais tout est beaucoup plus facile que l'original de la réponse qui nous a fait penser, il suffit d'utiliser chaîne vide!fatal: invalid date format:
--date="$(date)"
dans OS X. L'option-R
est GNUism.J'ai créé ce package npm si quelqu'un cherche encore un moyen simple de modifier les dates de multiples validations.
https://github.com/bitriddler/git-change-date
Utilisation:
npm
paquet? Non, apprendre à utiliser legit
commande en tant que-est.