我正在将所有内容转换为Git供我自己使用,我发现存储库中已经有一些旧版本的文件。我如何根据文件的“修改日期”以正确的顺序将其提交到历史记录中,以便我拥有文件的准确历史记录?

有人告诉我这样可行

git filter-branch --env-filter="GIT_AUTHOR_DATE=... --index-filter "git commit path/to/file --date " --tag-name-filter cat -- --all  

当前回答

在我的例子中,当使用——date选项时,我的git进程崩溃了。也许我做了什么可怕的事。结果是一些索引。出现锁文件。所以我手动删除了。git文件夹中的。lock文件并执行,所有修改过的文件都要在通过的日期内提交,这次它工作了。谢谢你的回答。

git commit --date="`date --date='2 day ago'`" -am "update"

其他回答

你想要的简单答案:

GIT_AUTHOR_DATE="2020-10-24T18:00:00 +0200" GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE git commit

注意时区字符串,并为您的时区设置一个合适的字符串。即+0200,-0400

git——日期只更改GIT_AUTHOR_DATE,但许多git应用程序,例如,GitHub显示GIT_COMMITTER_DATE。确保也更改了GIT_COMMITTER_DATE。 git在默认的UNIX日期输出中不知道时区。请确保将datetime格式格式化为兼容的格式,例如ISO8601。

OS X中的完整示例(将GIT_COMMITTER_DATE和GIT_AUTHOR_DATE更改为4 hours ago):

x=$(date -v -4H +%Y-%m-%dT%H:%M:%S%z); export GIT_COMMITTER_DATE=$x; git commit --amend --date $x

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 commit——date='2021-01-01 12:12:00' -m "message"工作正常,并在GitHub和GitLab上进行了验证。

或者只是使用假git-history来为特定的数据范围生成它。