我正在将所有内容转换为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 commit --date='year-month-day hour:minutes:seconds' -m "message"
git push
其他回答
下面是我用来在过去N=1天提交对foo的更改:
git add foo
git commit -m "Update foo"
git commit --amend --date="$(date -v-1d)"
如果你想提交一个更早的日期,比如3天前,只需更改日期参数:date -v-3d。
例如,当你忘记昨天提交某件事情时,这真的很有用。
UPDATE:——date也接受像“3天前”这样的表达式,甚至是“昨天”这样的表达式。所以我们可以把它压缩成一行命令:
git add foo ; git commit --date "yesterday" -m "Update"
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——日期只更改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
在我的情况下,随着时间的推移,我保存了myfile的一堆版本,如myfile_bak, myfile_old, myfile_2010, backups/myfile等。我想把我的文件的历史在git使用他们的修改日期。所以将最老的重命名为myfile, git添加myfile,然后git提交——date=(从ls -l修改日期)myfile,将下一个最老的重命名为myfile,另一个git提交——date,重复…
为了实现某种程度上的自动化,您可以使用shell-foo来获取文件的修改时间。我从ls -l和cut开始,但stat(1)更直接 Git提交——date=" ' stat -c %y myfile ' " myfile