如何(意外地)将提交的时间戳推送到远程存储库后如何编辑提交的时间戳?
我改变了我的系统时钟在我的应用程序进行测试的行为,并忘了之前设置回
git add -u .并git push.现在我的GitHub仓库显示了"在一个月内"编辑过的多个文件.
我已经按照这里的建议- 特别是对推荐的OP的评论git push --force,但不幸的是编辑日期保持不变.
好吧,那篇文章是关于更改提交消息,然后强制推动更改.但在这种情况下,首先需要修复提交时间戳,然后才能执行git push --force.
阅读本文以了解如何修复时间戳:如何在Git中更改旧提交的时间戳?
然后强行推动.
(顺便说一句,在github上,你可能需要一些刷新才能看到变化.另外,我猜你知道你打破了历史,如果有人克隆了回购,你就破坏了它们等等,对吧?好!)
你可以尝试--date的选择git commit,因为在此描述的博客文章由艾伦Kelder:
以上内容适用于未提交的更改,但如果您提交了更改并想要修改
AuthorDate时间,该怎么办?同样,git使上次提交变得容易:
$ git commit --amend --date='<see documentation for formats>' -C HEAD
Run Code Online (Sandbox Code Playgroud)
但是,如果你需要返回几个提交怎么办?我也遇到了这种情况,并使用以下Bash脚本重置
AuthorDate时间,这是它的作用.对于文件列表,它将获取每个文件的最后一次提交的哈希值,获取文件的最后修改日期,然后将作者时间戳重置为文件的实际修改日期.一定要从工作树的顶层运行它(如果你不这样,git就会抱怨).
files="
foo.txt
bar.txt
"
for file in $files; do
dir=""; commit=""; date="";
dir=$(dirname $(find -name $file))
commit=$(git --no-pager log -1 --pretty=%H -- path "$dir/$file")
date="$(stat -c %y $dir/$file)"
if [ -z "$commit" ] || [ -z "$date" ]; then
echo "ERROR: required var \$commit or \$date is empty"
else
echo "INFO: resetting authorship date of commit '$commit' for file '$dir/$file' to '$date'"
git filter-branch --env-filter \
"if test \$GIT_COMMIT = '$commit'; then
export GIT_AUTHOR_DATE
GIT_AUTHOR_DATE='$date'
fi" &&
rm -fr "$(git rev-parse --git-dir)/refs/original/"
fi
echo
done
Run Code Online (Sandbox Code Playgroud)
您可以使用上面的脚本来重置
AuthorDate和CommitDate(只需GIT_COMMITTER_DATE使用下面的参考中的示例添加到上面的代码中).
虽然修改CommitDate共享存储库听起来很麻烦,因为你可能会让别人感到困惑.
| 归档时间: |
|
| 查看次数: |
10871 次 |
| 最近记录: |