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

有人告诉我这样可行

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

当前回答

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

其他回答

你总是可以在你的计算机上更改日期,提交,然后更改日期并推送。

您可以像往常一样创建提交,但是在提交时,将环境变量GIT_AUTHOR_DATE和GIT_COMMITTER_DATE设置为适当的日期时间。

当然,这将使提交位于分支的顶端(即,在当前HEAD提交的前面)。如果你想在回购中把它推得更远,你必须变得有点花哨。假设你有这样的历史:

o--o--o--o--o

你希望你的新提交(标记为“X”)出现在第二:

o--X--o--o--o--o

最简单的方法是从第一次提交开始分支,添加新提交,然后在新提交的基础上重新构建所有其他提交。像这样:

$ git checkout -b new_commit $desired_parent_of_new_commit
$ git add new_file
$ GIT_AUTHOR_DATE='your date' GIT_COMMITTER_DATE='your date' git commit -m 'new (old) files'
$ git checkout master
$ git rebase new_commit
$ git branch -d new_commit
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上进行了验证。

Pre-Step。

将所有数据从远程存储库拉到本地存储库。 我们正在使用——modify和——date开关。

具体命令如下:

$ git commit——modify——date="YYYY-MM-DD HH:MM:SS"