如何查询git以找出哪些分支包含给定的提交?gitk通常会列出分支,除非有太多分支,在这种情况下它只是说"很多(38)"或类似的东西.我需要知道完整列表,或者至少是否某些分支包含提交.
我在分支-X上,并在其上添加了几个提交.我想看看MASTER和我提交的分支之间的所有区别.我可以做一个
git checkout master
git log
Run Code Online (Sandbox Code Playgroud)
然后一个
git checkout branch-X
git log
Run Code Online (Sandbox Code Playgroud)
并且在视觉上区分这些,但我希望有一种更简单,更不容易出错的方法.
我有两个分支devel和next.在开发中,我或多或少都有大量的提交.一些提交是樱桃挑选的next.此外,我添加了一些提交到下一个合并到devel.
现在我想看看缺少什么next,所以我可以在将它们带到之前测试细节上的变化next.我现在的问题是,如何查看哪些提交devel但未包含?
给定一个分支,我想看到仅存在于该分支上的提交列表.在这个问题中,我们讨论了查看哪些提交在一个分支上而不是一个或多个指定的其他分支的方法.
这略有不同.我想看看哪个提交在一个分支上,但不在任何其他分支上.
用例是一种分支策略,其中一些分支只应合并到,而不是直接在其上提交.这将用于检查是否已在"仅合并"分支上直接进行任何提交.
编辑:以下是设置虚拟git仓库测试的步骤:
git init
echo foo1 >> foo.txt
git add foo.txt
git commit -am "initial valid commit"
git checkout -b merge-only
echo bar >> bar.txt
git add bar.txt
git commit -am "bad commit directly on merge-only"
git checkout master
echo foo2 >> foo.txt
git commit -am "2nd valid commit on master"
git checkout merge-only
git merge master
Run Code Online (Sandbox Code Playgroud)
应该只显示直接在仅合并分支上创建的消息"直接在仅合并时提交错误"的提交.
有时我有以下问题:
在功能分支中添加一些提交.
从上游更新master.
想要查看功能分支和主服务器之间的差异,但是git diff master显示在master中添加/删除的所有内容,当我真的只想查看功能分支优先于master的提交时,而不是它的那些提交.背后.
有没有办法在不必将master合并到功能分支的情况下执行此操作?
git log origin/master
git log origin/master..
Run Code Online (Sandbox Code Playgroud)
与上面的确切区别是什么?我试图理解..符号的确切含义.我认为这是一个范围,但在这种情况下,它做了一些不同的事情.
我必须从未合并的分支机构创建一些代码审查.
在寻找解决方案时,我们不要去本地分支上下文问题,因为这将在服务器上运行; 只有原点远程,我会在其他命令之前运行git fetch origin命令,当我们谈论分支时,我们将引用origin/branch-name.
如果设置很简单,并且每个源自master的分支继续以自己的方式继续,我们可以运行:
git rev-list origin/branch-name --not origin/master --no-merges
Run Code Online (Sandbox Code Playgroud)
对于每个未合并的分支,并将结果提交添加到每个分支的每个审阅.
当2-3个分支之间存在合并并且其中一些分支继续工作时会出现问题.正如我所说,对于每个分支,我想创建程序化的代码审查,我不想在多个评论中包含提交.
主要是每次提交找到原始分支时出现问题.
或者更简单一点......找到所有未创建的提交,这些提交按照他们最有可能创建的分支进行分组.
让我们关注一个简单的例子:
* b4 - branch2's head
* | a4 - branch1's head
| * b3
* | merge branch2 into branch1
* |\ | m3 - master's head
| * \| a3
| | |
| | * b2
| * | merge master into branch1
* /| | m2
|/ | * merge branch1 into …Run Code Online (Sandbox Code Playgroud) 合并分支后,当我尝试发出拉取请求时,github不再显示差异,但git diff仍会显示差异.
例如,我有分支D,在分支H上创建了修补程序,将H合并到D,然后在D上创建了更多东西.现在git hub pull reuqest从H到D显示没有区别,但git diff HD显示差异.
我想要做的是创建一个命令行工具,以查看哪些旧分支(可能有很多)没有代码差异来开发.现在我必须去github,做一个拉动reuqest并选择每个分支,看看是否有差异.
谢谢
这与如何列出分支上的提交而不是合并的分支相反,所以我会以相同的格式询问它。假设我的 git 提交历史如下所示:
A---B---C---D---E---F master
\ /
X---Y---Z topic
Run Code Online (Sandbox Code Playgroud)
我如何列出topic分支上的提交——也就是X、Y、 和Z?需要注意的是简单地做git log topic是行不通的-这将返回提交A,并B为好。
我原以为我可以跑去git merge-base topic masterfind B,然后做得到git log B..Z这些提交。不幸的是,git merge-base topic master返回Z,而不是B,回想起来Z是有道理的——因为已经合并到 master,topic和master那个共享历史记录之间的第一次提交是Z.
寻找一个 git 命令,该命令在尚未合并到 master 的分支中显示提交,最好带有哈希、日期、作者姓名和评论。
(这可能是一个重复的问题,但我在 SO 上找不到)
我用 rebase 搞砸了 pull (有冲突,我错误地解决了它们)。我认为现在最简单的方法是吹散树并重新应用我在上游丢失的补丁(其中不到 10 个)。
那么,如何获取本地树中存在但不存在的提交列表upstream master?(使用 导出format-patch)。
$ git remote -v
origin git@github.com:sam-s/vowpal_wabbit.git (fetch)
origin git@github.com:sam-s/vowpal_wabbit.git (push)
upstream git://github.com/JohnLangford/vowpal_wabbit.git (fetch)
upstream git://github.com/JohnLangford/vowpal_wabbit.git (push)
Run Code Online (Sandbox Code Playgroud)