多次提交的转移日期

时间:2016-09-23 08:29:55

标签: git


我对GIT很新,并寻求建议。无意中我设置了错误的时间,我的所有提交都有错误的时间/日期,我想转移提交时间/日期(f.e +8小时/ +10天)。 我找到了solution for one commit,但我想知道是否可以在一个分支中为许多提交完成。我已经设法弄清楚如何更改日期,但我迷失了变相:

COMMITS=($(git rev-list $COM~..HEAD))
for COMMIT in "${COMMITS[@]}"
do
   COMMIT_DATE=$(git log $COMMIT -n1 --format=%aD)
   NEW_DATE=$(date -d "$COMMIT_DATE+30 days" -R)
   echo "I: $COMMIT FROM $COMMIT_DATE TO $NEW_DATE"
   GIT_COMMITTER_DATE="$NEW_DATE" GIT_AUTHOR_DATE="$NEW_DATE" git commit --amend --no-edit --date "NEW_DATE"
   ...... rebase command
done

有人可以告诉我如何正确改变吗? 提前致谢

2 个答案:

答案 0 :(得分:0)

感谢Joe的提示,我能够写出我想要的内容,因此我会将其发布给其他观众。

git filter-branch --env-filter '
COMMIT_DATE=$(git log $GIT_COMMIT -n1 --format=%aD);
NEW_DATE=$(date -d "$COMMIT_DATE+1 day" -R);
GIT_COMMITTER_DATE="$NEW_DATE"
export GIT_COMMITTER_DATE
GIT_AUTHOR_DATE="$NEW_DATE"
export GIT_AUTHOR_DATE
' SHA..HEAD

答案 1 :(得分:0)

以下内容将以当前时间和日期为最近3次提交重新设置基准:

NEW_DATE="$(date -R)"
NUM_COMMITS_TO_REBASE=3
GIT_SEQUENCE_EDITOR=: git rebase -i HEAD~${NUM_COMMITS_TO_REBASE} --exec "git commit --amend --date \"$NEW_DATE\""