我有一个旧分支,我想删除。 但是,在执行此操作之前,我想检查对此分支所做的所有提交是否在某个时刻合并到其他分支中。 因此,我希望看到所有提交到我当前分支的提交尚未应用于任何其他分支[或者,如果没有一些脚本,这是不可能的,如何看到一个分支中尚未应用的所有提交到另一个给定的分支?]。


#1楼

您可以使用此简单脚本查看未合并的提交

#!/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来显示分支状态


#2楼

你可能只是想要

git branch --contains branch-to-delete

这将列出包含“分支到删除”提交的所有分支。 如果它报告的不仅仅是“分支到删除”,则分支已合并。

你的替代品实际上只是rev-list语法的东西。 如git log one-branch..another-branch表明一切one-branch需要拥有的一切another-branch了。

您可能也对git show-branch感兴趣,以此来了解其中的内容。


#3楼

如果它是您需要检查的一个(单个)分支,例如,如果您希望该分支“B”完全合并到分支“A”中,您可以简单地执行以下操作:

$ git checkout A
$ git branch -d B

git branch -d <branchname>具有“分支必须在HEAD中完全合并”的安全性。

注意 :如果将分支B合并到A中,这实际上会删除分支B.


#4楼

要在oldbranch中显示提交但不在newbranch中显示:

git log newbranch..oldbranch

通过这些提交显示差异(请注意有三个点):

git diff newbranch...oldbranch

这是带有图解说明的文档https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection#Commit-Ranges


#5楼

jimmyorr的答案在Windows上不起作用。 它有助于使用--not而不是^像这样:

git log oldbranch --not newbranch --no-merges

#6楼

对于那些仍在寻找简单答案的人,请查看git cherry 。 它比较实际差异而不是提交哈希值。 这意味着它可以容纳已被挑选或重新定位的提交。

首先签出要删除的分支:

git checkout [branch-to-delete]

然后使用git cherry将它与您的主要开发分支进行比较:

git cherry -v master

示例输出:

+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message
- 85867e38712de930864c5edb7856342e1358b2a0 Yet another message

注意: -v标志包括提交消息和SHA哈希。

前面带有“+”的行在分支到删除中,但不在主分支中。 前面带有' - '的人在master中有相同的提交。

对于JUST不在master中的提交,将cherry pick与grep结合起来:

git cherry -v master | grep "^\\+"

示例输出:

+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message

#7楼

要查看哪个提交在一个分支上但不在另一个分支上的列表,请使用git log:

git log --no-merges oldbranch ^newbranch

...也就是说,显示oldbranch上不在 newbranch上的所有提交的提交日志。 您可以列出多个分支以包含和排除,例如

git log  --no-merges oldbranch1 oldbranch2 ^newbranch1 ^newbranch2

注意:在Windows上, ^是一个转义键,因此需要使用另一个^进行转义:

git log --no-merges oldbranch ^^newbranch

#8楼

开始通过您正在使用的git托管服务创建Pull请求 。 如果分支已完全合并到基本分支中,您将无法创建新PR。

您不需要实际发出拉取请求,只需使用选择分支的第一步。

例如,在GitHub上:

没有什么可比的

这不会在命令行上使用git,但我经常发现使用其他工具可以使用清晰的心智模型,而不是尝试记住另一个神秘的git命令。


#9楼

虽然这里发布的一些答案有助于找到您所寻求的内容,但git branch的以下子命令对您的任务来说是更合适的解决方案。

--merged用于查找可以安全删除的所有分支,因为这些分支完全由HEAD包含。

master可以运行命令来枚举可以安全删除的分支,如下所示:

git branch --mergeddevelopfpg_download_links
* mastermaster_merge_static# Delete local and remote tracking branches you don't want
git branch -d fpg_download_links
git push origin :fpg_download_links
git branch -d master_merge_static
git push origin :master_merge_static# There is also a flag to specify remote branches in the output
git branch --remotes --merged

使用Git,显示一个分支中的所有提交,但不显示其他分支中的所有提交相关推荐

  1. 在屏幕上显示一个短句c语言编程,在屏幕上显示Hllo.ppt

    在屏幕上显示Hllo * * §2.1 在屏幕上显示Hello World 第2章 用C语言编写程序 用算例尽快进入编程 例2-1 在屏幕上显示一个短句: Hello World /* 显示" ...

  2. android service中显示一个dialog

    转自:http://blog.csdn.net/huxueyan521/article/details/8954844 dialog是依附于activity存在的.但是app中经常需要使用以下的情况, ...

  3. service中显示一个dialog

    dialog是依附于activity存在的.但是app中经常需要使用以下的情况,在service中做一些后台操作,在某个临界条件满足时,显示一个dialog告知用户. 这时dialog无法直接从ser ...

  4. html 文档自动获取css,前端基础中css选择器,html文档 ,与javascrip中基本的获取

    1,Vscode自动刷新插件与格式化插件 应用搜索搜索liveserver,安装后.点击右下角Golive可以进入使用. 格式化插件prettier:首选项,设置,搜索format,勾选prettie ...

  5. HTML列表的简单使用以及在我们网页编程中的单位你了解多少??CSS中的字体样式你又了解多少,进来康康!!HTML、CSS(三)

    文章目录 列表 无序列表 有序列表 列表嵌套 定义列表 单位 长度单位 像素 px 百分比 em 颜色单位 颜色名为单位 RGB值 字体样式 字体分类 衬线字体 非衬线字体(无衬线字体) 字体的其他样 ...

  6. html 中的下拉列表,【HTML】什么是 HTML 中的下拉列表(select、option)

    我们以英雄联盟大区服务器状态查询网站里的"下拉选择服务器状态"为例,先来看一下,什么是下拉列表,浏览器运行效果如下所示这就是下拉列表用到的地方之一,接下来我们就来学习一下HTML中 ...

  7. git cherry-pick 将另一个分支的某个提交拉取到当前分支(也叫做遴选),在命令窗口和sourcetree中的使用

    在开发过程中,我们可能会遇到多个分支同时开发的情况,这时,如果你只想要拉取其他分支指定的提交文件,就使用cherry-pick命令就可以实现啦. 在git命令窗口将另一个分支的某个提交拉取到当前分支: ...

  8. 在git 2.13之前,只保存多个已更改的文件中的一个文件

    如何在我的分支上只隐藏多个已更改文件中的一个? #1楼 类似的情况. 提交并意识到它不行. git commit -a -m "message" git log -p 根据答案,这 ...

  9. else应输入一个语句是什么意思_Python学习基础篇 -4: Python中的转弯---分支语句

    前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 . 背景:对于该系列文章的前三篇,自己读 ...

  10. Git创建一个空的分支

    1. 需求 在Git中创建分支,是必须有一个父节点的,也就是说必须在已有的分支上来创建新的分支.工程已经进行了一段时间后,是无法创建空分支的.但是有时候,某个分支的衍化,已经变得非常复杂,需要重新梳理 ...

最新文章

  1. GitHub开源的10个超棒后台管理面板
  2. 对话功率谱与自相关函数
  3. python3编码和解码_python3的url编码和解码,自定义gbk、utf-8的例子
  4. 对flex深入研究一点
  5. spring cloud连载第一篇之bootstrap context
  6. linux telnet 权限,允许telnet 通过root用户进行访问
  7. QT5_chart_常见几种图形
  8. python执行批处理文件_如何从Python中执行批处理文件,从而改变调用进程的环境?...
  9. python两个csv表数据合并_怎么用python把一个*。csv 文件里面的数据整合成一个表格...
  10. MyEclipse中Hibernate+C3P0连接池配置
  11. 直线分割平面问题(数学归纳法)
  12. mysql所选路径已经存在_MySQL 入门知识(下) | 周末送资料
  13. 树莓派4B(bullseye),傻瓜式配置镜像源和QT,cmake等环境
  14. 4.8 HD-GR GNSS导航软件源码
  15. 服务器带宽打开网页很慢,移动宽带打开网页慢?两招治本移动宽带打开网页速度慢的解决方法...
  16. 七、torch.nn
  17. mysql用户主机设置密码_MySQL用户账号管理(添加、删除、限制、设置密码、远程访问)...
  18. kNN实现手写数字识别
  19. Android开发:如何实现收发短信
  20. cpu插槽类型 产品参数解释

热门文章

  1. const 是个类型修饰符号。
  2. android onLayout死循环
  3. 网易游戏2016实习生招聘笔试题目--井字棋
  4. Java利用JNI调用c++代码简易例子演示
  5. LeetCode 4 两个排序数组的中位数
  6. 蓝牙 GATT 协议
  7. python pywinauto 单击鼠标_基于Python的学生信息管理系统
  8. python中__str__与__repr__
  9. bzoj1503 郁闷的出纳员(平衡树,思维)
  10. 软工作业3: 词频统计