Eu me vi alterando meus commits com bastante frequência. Eu não faço stash
muito porque costumo esquecer que o fiz, especialmente quando quero salvar o que fiz antes de sair ou antes de um fim de semana, então faço um commit "rascunho". A única coisa é que, quando eu altero o commit, ele ainda está definido como a data do autor original. Existe uma maneira (simples) de atualizá-lo ao alterar?
305
Respostas:
Você pode alterar a data de autor com o
--date
parâmetro paragit commit
. Portanto, se você deseja alterar a última confirmação e atualizar a data do autor para a data e hora atuais, é possível:(O
-R
parâmetro paradate
informa a saída da data no formato RFC 2822. Este é um dos formatos de data compreendidos porgit commit
.)fonte
date
não sabe-R
. Usandodate
sem opções que o trabalho de qualquer maneira!
e escapar as aspas, por exemplocan = !git commit --amend --date=\"$(date -R)\"
date -R
não funciona no OSX, use emdate +%s
vez dissogit commit --amend --date="$(date +%s)"
git commit --amend --date=now
funciona também. Não há necessidade de chamar um subshell com o comando date (1) . Você pode vê-lo no código fonte do git (1) em date.c 'now' é um valor especial que é convertido usando a função date_now (). O mesmo para 'meio-dia', 'ontem', 'meia-noite', 'chá' e outros listados na matriz de estrutura especial [].Outra maneira de fazer isso é
Isso muda o autor da confirmação, bem como a data - mas se foi originalmente sua confirmação não enviada, isso não é possível.
Você também pode adicionar
--no-edit
se deseja atualizar a data em várias confirmações, mas deseja que as mensagens de confirmação permaneçam intocadas. Dessa forma, você não será solicitado a editar a mensagem para cada confirmação.fonte
git commit --amend
alterações confirmam em vez de apenas ajustes ou algo assim, ou seja, resulta em um histórico diferente de alterações no conteúdo do repositório, onde qualquer sistema de controle de versão é muito rigoroso. E, como tal, espero intuitivamente que o autor e a data correspondam aos dados reais de confirmação. Especialmente a autoria é importante, nem mesmo a data. Vote neste comentário se você quiser vencer os desenvolvedores git responsáveis por esse padrão. :)A partir do Git v2.1.4 (testado no Debian 8 (Jessie))
fonte
--no-edit
.Eu gosto da resposta de Mark e a usei várias vezes, mas agora estou no OS X e
date -R
não é suportado. Mas tudo é muito mais fácil do que a resposta original nos fez pensar, basta usar uma string vazia !fonte
fatal: invalid date format:
--date="$(date)"
no OS X. A opção-R
é GNUism.Criei este pacote npm se alguém ainda estiver procurando uma maneira simples de alterar datas de vários commits.
https://github.com/bitriddler/git-change-date
Uso:
fonte
npm
pacote? Não, aprenda como usar ogit
comando como está.