我有一个旧的分支,我想删除它。但是,在这样做之前,我想检查对这个分支的所有提交是否在某个时刻合并到其他分支中。因此,我希望看到所有提交到我的当前分支还没有应用到任何其他分支[或者,如果没有一些脚本是不可能的,如何看到一个分支中的所有提交还没有应用到另一个给定的分支?]。
当前回答
您可以使用这个简单的脚本查看未合并的提交
#!/bin/bash
# Show commits that exists only on branch and not in current
# Usage:
# git branch-notmerge <branchname>
#
# Setup git alias
# git config alias.branch-notmerge [path/to/this/script]
grep -Fvf <(git log --pretty=format:'%H - %s') <(git log $1 --pretty=format:'%H - %s')
你也可以使用工具git-wtf来显示分支的状态
其他回答
jimmyorr的答案不能在Windows上工作。用——not代替^ like so会有帮助:
git log oldbranch --not newbranch --no-merges
如果你需要检查的是一个分支,例如,如果你想让分支“B”完全合并到分支“A”中,你可以简单地执行以下操作:
$ git checkout A
$ git branch -d B
git branch -d <branchname>具有“分支必须在HEAD中完全合并”的安全性。
注意:如果分支B合并到A中,这实际上会删除分支B。
显示从其他分支提交并提交不在当前分支中的内容:
git show @..other-branch
此外,你可以将其他分支的提交直接应用到你的当前分支:
git cherry-pick @..other-branch
只需使用git cherry来选择分支newFeature42中的所有提交,例如:
git cherry -v master newFeature42
你可能只是想
git branch --contains branch-to-delete
这将列出所有包含从“branch-to-delete”提交的分支。 如果它报告的不仅仅是“branch-to-delete”,那么这个分支已经被合并了。
你的替代方案实际上只是rev-list语法的东西。例如,git log one-branch..另一个分支显示了一个分支需要拥有的所有东西,另一个分支拥有的所有东西。
您可能还会对git show-branch感兴趣,它是一种查看内容在哪里的方法。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 在GitHub上有一个公共回购的私人分支?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式