如何获取上个月有人提交的所有分支的名称?
答案 0 :(得分:1)
那就够了:age
?它还显示了潜在的远程分支。
git branch -av
代表全部,-a
代表详细信息。有关详细信息,请参阅here。
修改:我认为answer可以更好地概述其他可能性。但是,未跟踪branch creator。根据问题,-v
可能很有趣......
答案 1 :(得分:1)
您可以使用" - 自" git log选项,用于选择上个月的提交:
git log --since="`date -d'1 month ago'`"
然后,对于每个修订版,您都可以使用" git branch --contains"显示它所在的分支。例如:
git branch --contains 00735a997d0bba684dbf62552eea83b9491ac26b
您可以将所有这些放在一行中,这将为您完成所有操作并重复删除输出:
git log --since="`date -d'1 month ago'`" --format="%H" | while read i; do git branch --contains $i; done | sort -u
答案 2 :(得分:1)
实际上这是不可能的。
您可以找到包含用户的哪些分支提交,这些提交具有上个月内的作者日期或者具有上个月内的提交日期。两者都可能不太准确。
你不能做的是确定在Git中提交了哪个分支。分支只是一个提交的便利贴,如果检出分支,它会自动转到下一个提交。但是你可以随意剥离它并将它放在你喜欢的任何地方。因此,您无法确定提交的分支是什么,因为提交和作者日期可以任意设置,您甚至无法可靠地使用这些日期。
如果您有严格的提交政策并且所有人都遵守这些政策,您可以做这样的事情。
答案 3 :(得分:1)
免责声明:这不是一个完整的答案,只是一个想法。
Git分支只是一个提交指针。它可以从一个历史分支更改为另一个历史分支,除了分支的reflog中的条目(如果已启用),分支的移动不会在存储库中留下任何痕迹。
为了说清楚,让我们说回购看起来像这样:
+-- branch X
v
A -- B -- C -- D
\
- E -- F
^
+-- branch Y
这个简单的命令序列:
git checkout X
git reset --hard F
git checkout Y
git reset --hard D
使分支X
和Y
交换位置。现在存储库看起来像这样:
+-- branch Y
v
A -- B -- C -- D
\
- E -- F
^
+-- branch X
例如,提交E
现在属于分支X
,无法从分支Y
到达,但它属于分支Y
(并且不能在创建时从分支X
到达。
这使您的问题无法确定。
要使用的命令是git log
,其中包含一些参数:
--since=<date>
--after=<date>
显示比特定日期更近的提交。
--until=<date>
--before=<date>
显示超过特定日期的提交。
--author=<pattern>
--committer=<pattern>
将提交输出限制为具有与指定模式(正则表达式)匹配的作者/提交者标题行的输出。
--all
假设
refs/
中的所有引用都在命令行中列为<commit>
。
--walk-reflogs
不要走出提交祖先链,而是将最新的条目从最新的条目转移到较旧的条目链。
命令行应该是这样的:
git log --since='1 month ago' --author=john.doe@example.org --all
您可以在--author
参数中输入作者的完整名称或电子邮件地址,或只是其中的一部分。
--all
告诉git log
使用所有当前分支搜索可访问的提交
如果您将--walk-reflogs
添加到命令行并将--all
替换为特定分支名称(此答案的第一部分示例中的fe Y
),Git会跟随此移动Y
分支的历史记录(记录在reflog中)并返回提交F
,E
,B
和A
。如果没有--walk-reflogs
Git,则可以访问从分支Y
的当前位置访问的提交,并返回提交D
,C
,B
和A
(假设它们都符合其他条件)。
请注意,添加--walk-reflogs
可能会返回不完整的结果,也不会返回任何内容。分支reference log包含分支的移动(因为commit
,reset
,rebase
和其他命令)仅限本地存储库,它可以被禁用或清除
答案 4 :(得分:0)
您可以使用since
&amp; untill
标志以查看日期范围的提交。并使用author
标志来过滤某人的提交。
$ git log --since=2.month.ago --until=1.month.ago --author=<user> # relative time
$ git log --since=2000-01-01 --until=2012-12-21 --author=<user> # absolute
然后,如果您想知道哪个分支包含特定提交。
$ git branch --contains <commit-sha> # show the branch list(s) containing the commit