我对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
有人可以告诉我如何正确改变吗? 提前致谢
答案 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\""