我正在将所有内容转换为Git供我自己使用,我发现存储库中已经有一些旧版本的文件。我如何根据文件的“修改日期”以正确的顺序将其提交到历史记录中,以便我拥有文件的准确历史记录?
有人告诉我这样可行
git filter-branch --env-filter="GIT_AUTHOR_DATE=... --index-filter "git commit path/to/file --date " --tag-name-filter cat -- --all
我正在将所有内容转换为Git供我自己使用,我发现存储库中已经有一些旧版本的文件。我如何根据文件的“修改日期”以正确的顺序将其提交到历史记录中,以便我拥有文件的准确历史记录?
有人告诉我这样可行
git filter-branch --env-filter="GIT_AUTHOR_DATE=... --index-filter "git commit path/to/file --date " --tag-name-filter cat -- --all
当前回答
你想要的简单答案:
GIT_AUTHOR_DATE="2020-10-24T18:00:00 +0200" GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE git commit
注意时区字符串,并为您的时区设置一个合适的字符串。即+0200,-0400
其他回答
为了使提交看起来像过去完成的,你必须设置GIT_AUTHOR_DATE和GIT_COMMITTER_DATE:
GIT_AUTHOR_DATE=$(date -d'...') GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" git commit -m '...'
date -d'…可以是准确的日期,比如2019-01-01 12:00:00,也可以是相对的日期,比如5个月前的24天前。
要查看git日志使用的两个日期:
git log --pretty=fuller
这也适用于合并提交:
GIT_AUTHOR_DATE=$(date -d'...') GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" git merge <branchname> --no-ff
你总是可以在你的计算机上更改日期,提交,然后更改日期并推送。
Pre-Step。
将所有数据从远程存储库拉到本地存储库。 我们正在使用——modify和——date开关。
具体命令如下:
$ git commit——modify——date="YYYY-MM-DD HH:MM:SS"
git commit --date='year-month-day hour:minutes:seconds' -m "message"
git push
这是一个老问题,但我最近偶然发现了它。
git commit --date='year-month-day hour:minutes:seconds' -m "message"
所以它看起来是这样的: git commit——date='2021-01-01 12:12:00' -m "message"工作正常,并在GitHub和GitLab上进行了验证。