如果可以的话,我怎样才能找到在特定日期时间在git上签出的分支?我知道我可以在分支上的日期时间获取提交但我需要知道它是否在该分支上
答案 0 :(得分:0)
您可能对--decorate
的{{1}}选项感到满意。
如果您需要更多杠杆,可以添加一点git log
。我刚刚编造了这个单行 1 :
branch --contains
打破它:
for sha in $(git rev-list --all -1 --since=2013-12-23 --until=2014-01-01); do git log --decorate -1 "$sha"; git branch -a --contains "$sha"; done
它会打印类似
的内容for sha in $(git rev-list --all -1 --since=2013-12-23 --until=2014-01-01)
do
git log --decorate -1 "$sha"
git branch -a --contains "$sha"
done
这意味着2013年最后8天的最后一次提交,后面是包含它的分支列表(在这种情况下,包含commit ebb4186a95fd210afdc31b490bbf6279a798d61a
Author: Seth Heeren <sgheeren@gmail.com>
Date: Wed Dec 25 02:50:59 2013 +0100
fixing compilation issue
* master
remotes/bitbucket/HEAD -> bitbucket/master
remotes/bitbucket/master
的3个分支,标记为*当前分支)。
1 git rev-list 基本上是 master
的管道变体。将其调整为您的特定查询:
git log
根据修订图表和/或默认值的时髦性,您可能还想添加--all select from all HEADs (following the parents)
--since/--until this would be your date criteria
-1 limit to a single commit
。
答案 1 :(得分:0)
给定本地存储库,您可以使用git reflog
显示该本地存储库上所有分支更改和提交的历史记录。通过这种方式,您可以跟踪你所做的任何分支。
但是,如果其他人在他们的本地存储库中提交了他们的提交(并将他们的工作推送到github等其他存储库),那么你就不可能回答这个问题了。
git中的“分支”只是一次提交及其所有历史记录,直到存储库的第一次提交。对于不同的分支来说,分享他们的大部分历史是很常见的。因此,旧提交通常是所有分支的一部分。
如果您只是想知道给定分支中是否包含给定提交,您可以使用git branch --contains <commit> <branch>
。
/-a--a--a <-- branch1
x--x--x--x
\-b--b--b <-- branch2
在上面的例子中
a
提交都是branch1的一部分b
提交都是branch2的一部分x
提交都是两个分支的一部分在创建x
提交时,没有办法告诉如何调用分支。您可以重命名分支名称添加其他名称并删除分支名称,所有这些都不会在历史记录中留下任何痕迹。
Git实际上只关于提交和他们的历史,而不是关于分支及其名称。