在特定时间检出 Git 分支

4
我正在寻找一个单一的Git命令(如果可能的话),以便从一个仓库在某个特定时间(即我的本地分支时间)检出文件。
场景:我已经在某个特定时间(可能是2天前,即11/12/2015 19:05)检出了Branch1。 我想要检出另一个分支,即Branch2,其时间为2天前(即11/12/2015 29:05,即Branch1检出时间后10分钟)。
我该如何实现这个目标?
如果使用Unix时间戳更容易,那么我可以使用“git log -1 --format =%ct”来获取时间戳。然后,我可以将10分钟添加到此时间戳,并使用以下命令进行检出。
git archive --format tar --remote <HUB>:<REPO> master:`dirname <FILEPATH>` | tar -xO <FILE> > log_file.git

能否通过一个命令来实现?

1
可能是git checkout by date的重复问题。 - Raymond Chen
1个回答

0

Git在存储库中存储每个提交的时间,但存储库内部的存储并不基于更改的时间。Git存储库数据是基于更改本身结构化的。

您不能指望存储库按时间顺序应用到存储库中的每个提交。例如,您可以从另一个分支中挑选早期的更改并将其合并到当前分支中,它的提交日期将保留为原始日期,而先前提交的日期比这个选取的更改日期晚。

那只是为了解释。在您的情况下,我相信您知道如何将更改提交到您的存储库。但是,git不会让您基于时间选择。

我的建议是使用git log查找两天前的提交,然后手动查看历史记录以查找十分钟后发生的更改。

当您找到感兴趣的修订版哈希时,请将其签出到新分支中,如下所示:

git checkout <hash> -b newbranch

我的要求是获取一个存储库的<哈希> / 时间戳,并使用相同的时间戳值执行上述git归档命令。我想从本地分支中检出(git归档)来自不同存储库的某些文件,该本地分支已经检出了另一个存储库的代码。这将是一个自动化过程,我想使用system()命令在C文件中执行这些命令。 - Pritish
每个提交都有两个日期:作者日期和提交日期。在cherry-pick或rebase的情况下,作者日期是原始提交的日期,而提交日期是cherry-pick或rebase的日期。提交日期是按时间顺序排列的(除非您像使用“--committer-date-is-author-date”或“GIT_COMMITTER_DATE”这样的命令),我猜这就是OP想要的内容。 - Raymond Chen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接