在先前的问题中,有人为查找包含EXACT提交的分支提供了答案:
接受的答案强调,这仅适用于EXACT提交ID,而不适用于相同的提交.有人进一步指出,Git Cherry可以用来解决这个问题.
Git樱桃SEEMS适合反向; 发现提交没有推到上游.如果我不知道哪个分支创建它以及什么是上游,那么这是无用的.所以我不知道它将如何帮助解决这个问题.
有人可以解释/提供一个如何使用git cherry查找包含特定提交的"等效"的所有分支的示例吗?
通常,我的同事会对一个公开拉取请求进行一些更改,将他们的本地分支重新绑定到基本分支 - 通常也将他们的更改压缩到以前的提交中 - 并强制推送.
如何看待旧版PR与新版PR之间的变化?
我想我可以做一个git pull
和git checkout $BRANCH_NAME
当PR首次提出,然后git fetch
再git diff $BRANCH_NAME..origin/$BRANCH_NAME
对PR进行了更新后-但也将显示已通过重订引入基地分支(通常硕士),并带入PR的变化.是否有可能消除噪音并只显示PR本身的变化?
我将一个相当古老的主题分支重新设置为主人.由于在rebase期间存在相当多的冲突,我想将旧主题分支与重新分支的分支进行比较,以确保我不会意外删除或搞砸任何有关主题的更改.我已经得到的最接近,这是版本比较的结果git diff master...topic
和git diff master...topic-rebased
.这种方法很有效,但是除了它不是一个非常强大的解决方案之外,在上下文代码,行号,提交哈希等的变化中,最终差异中存在很多噪声.有更简单的方法吗?
自从我上次查看它以来,我希望能够看到分支中的更改,但是忽略了同时发生的master更改。
F - G H - I
/ /
A - B - C - D - E
Run Code Online (Sandbox Code Playgroud)
我有两个提交范围c3af8fc5..7ccc4b49
(由表示B - G
)和4dfdabdd..301a443c
(由表示E - I
)。
想象一下,您正在为您的同事进行代码审查,签出他在local上的分支,您HEAD
现在指向G
。您进行代码审查,然后继续其他工作。
经过一段时间,新提交出现在大师(C
,D
和E
)和你的同事已经解决了从您的评论的意见。他压扁的更改提交F
和G
,因为他改名方法介绍F
和固定它的用法G
。他还根据Master调整了分支,以确保一切正常。
现在,您想再次进行代码审查,但是您懒于再次对整个分支进行代码审查,因此您只想查看上次更改的内容。您仍然有从本地获取的旧裁判。你是做什么?
您可以执行类似的操作git-diff G I
,但这也可以向您显示master的更改,这些更改根本无济于事。
您也可以将旧的refs放在当前的master上,然后进行比较。这可能会有所帮助,但也可能存在很多冲突,这可能会使再次审查整个分支变得更加容易。
我试过差异补丁
diff <(git-diff c3af8fc5...7ccc4b49) <(git-diff 4dfdabdd...301a443c)
Run Code Online (Sandbox Code Playgroud)
它可以帮助我将注意力转移到某个地方,但这很粗糙。
您知道解决这个问题的更好,更原生的方法吗?谢谢。
编辑:我刚刚发现了interdiff,这使得比较两个diff更好
interdiff <(git-diff -U100 c3af8fc5...7ccc4b49) <(git-diff -U100 4dfdabdd...301a443c) | colordiff
Run Code Online (Sandbox Code Playgroud)
但是仍然缺少git可能提供的上下文-所以...还有什么更好的吗?