给定一个具有多个本地分支的项目,每个分支跟踪一些远程分支,是否有一个命令列出所有已经删除了提交的分支?(即使这些分支都没有签出,也就是这样.)
我不想看到提交本身,也不想看到最新的分支,我只是想看看哪些分支在他们的遥控器之前.
我试过了git log --branches --not --remotes --simplify-by-decoration --decorate --oneline
,但它似乎没有显示我需要的东西.在我当前的repo上运行它没有输出,但git status
在我当前的分支上运行显示Your branch is ahead of 'origin/branchname' by 2 commits.
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
并且git branch -v
都显示最新的分支以及需要推送的分支.然而,他们也都显示我的当前分支的[ahead 2]
.
我发现的其他命令,例如.git log @{u}..
,git cherry -v
列出提交本身,而不是分支.
附带问题:为什么输出git log --branches --not --remotes --simplify-by-decoration --decorate --oneline
不包括git branch -v
显示为前方的分支?前命令不仅仅是看哪个refs/heads
不对应已知的遥控器; 那么列出的分支是否[ahead 2]
符合此标准?
det*_*tly 49
该--no-walk
选项log
似乎做什么,我需要比一个更好的工作--simplify-by-decoration
.我的完整命令是:
git log --branches --not --remotes --no-walk --decorate --oneline
...我已经别名了unpushed
.
Von*_*onC 12
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
Run Code Online (Sandbox Code Playgroud)
这仍然是最精确的答案,您可以轻松解析/ grep以获得所需的输出(如删除最新的分支)
您可以在bash脚本中执行此操作,您将调用git-xxx
(无扩展名),在您$PATH
或中的某个位置%PATH%
.
然后可以调用该脚本git xxx
,并将使用git bash.
这是便携式的,将跨平台(甚至在Windows上,在那里工作的意思<Git For Windows>/usr/bin
包括200多个Linux命令(grep
,sed
,awk
,xargs
,...)
尽管上面的答案非常有帮助并且显示了大量数据,但对于其他来这里寻找解决方案以找到前方的本地分支机构(即尚未推送)的其他人来说。可以通过执行以下命令获取确切的列表:
git branch -v | grep ahead
Run Code Online (Sandbox Code Playgroud)
还可以看到哪些分支还没有合并到master
git checkout master
Run Code Online (Sandbox Code Playgroud)
进而
git branch --no-merged
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4585 次 |
最近记录: |