从日期开始在git上获得活动分支

时间:2014-01-02 09:02:09

标签: git

如果可以的话,我怎样才能找到在特定日期时间在git上签出的分支?我知道我可以在分支上的日期时间获取提交但我需要知道它是否在该分支上

2 个答案:

答案 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实际上只关于提交和他们的历史,而不是关于分支及其名称。