我想得到一个Git存储库中所有分支的列表,顶部有"最新鲜"的分支,其中"最新鲜"的分支是最近提交的分支(因此,更可能是一个分支)我想要注意).
有没有办法可以使用Git(a)通过最新提交对分支列表进行排序,或者(b)以某种机器可读格式获取分支列表以及每个分支的最后提交日期?
最糟糕的情况是,我总是可以运行git branch以获取所有分支的列表,解析其输出,然后git log -n 1 branchname --format=format:%ci为每个分支获取每个分支的提交日期.但这将在Windows机器上运行,其中启动一个新进程相对昂贵,因此如果有很多分支,每个分支启动Git可执行文件可能会变慢.有没有办法用一个命令完成所有这些?
我有一个简单的别名来显示最后的提交:
log --pretty=format:'%h %an %s' -10
Run Code Online (Sandbox Code Playgroud)
如何使结果显示在列中,如下所示:
898e8789 Author1 Commit message here
803e8759 Other Author name Commit message here
Run Code Online (Sandbox Code Playgroud) 我正在做一些探索性的工作,我很可能会在相同任务的几个不同变体上花费30分钟.我想用git跟踪它们,这样我就可以在各种方法之间来回跳转.如果有3个或6个或9个分支,我可能需要比分支名称更多的信息来区分它们.
将评论附加到新分支的最简洁方法是什么?
knownUserName在我们的代码库(repoEx)中有一个user()创建的分支.他在那里承诺并push修改了他的一些改变,但他没有为此创建拉动请求.
它已经很长了,存储库现在拥有的分支数量呈指数增长,因此我们无法遍历所有分支并找到由他创建的分支.
有没有办法使用git命令行或GitHub接口搜索所有分支,以查找用户在特定存储库中创建的所有分支?
我尝试使用GitHub接口并https://github.com/repoEx/branches/all使用搜索参数过滤分支(下) -
author:<knownUserName>
Run Code Online (Sandbox Code Playgroud)
但这不行.搜索似乎对分支名称有效,但我对该名称没有任何线索.
我正在从 git 遥控器上修剪一些分支。
如何找出谁在远程 git 存储库上创建了分支?
也许有类似的东西git branch -r --show-user?
我在这里使用以下命令:
git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p) %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=authordate refs/remotes
Run Code Online (Sandbox Code Playgroud)
有没有办法authordate按特定日期排序?
例如,仅显示 X 天或几个月前的结果,或者可能是在给定日期之后的结果?我正在考虑使用,grep但我希望有一种方法可以实际解析给定的日期来进行计算,而不仅仅是字符串匹配。
我想出了以下使用方法sed:
git for-each-ref --format='%(color:cyan)%(authordate:format:%Y-%m-%d %I:%M %p) %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=authordate refs/remotes | sed -n '/{start_year}-*/,/{end_year}-{end_month}-*/p'
Run Code Online (Sandbox Code Playgroud)
但最好只给出一个特定日期并获得该日期之前或之后的所有结果。
编辑:如果给定的结束日期不存在,上面使用的方法sed将不起作用,因为 sed 只是一个流编辑器。例如,如果生成的 sed 字符串是,'/2017-*/,/2018-10-*/p'但没有匹配的条目2018-10-*(2018 年 10 月没有提交的分支),那么它将获得 2017 年以后的所有结果。也就是说,它不是真正的日期范围计算;这是一个简单的字符串匹配,当它找到与右侧匹配的第一个条目时停止。