我想了解主题分支的哪些部分已经包含在上游分支中,以及在重基时可能出现哪些冲突。
它应该是git-rebase的一种尝试,它显示了主题和上游之间的差异,不包括与主题无关的变化。
发布于 2018-06-13 11:44:40
一种解决方案是在差异上应用差异。这样做的目的是:
git-diff-rebase脚本文件:
#!/bin/bash
upstream="$1"
topic="$2"
root=$( git rev-parse --show-toplevel )
forkpoint=$( git merge-base $upstream $topic )
if [ -z "$forkpoint" ] ; then
echo "Merge base is not found" 1>&2
exit 1
fi
# list of the changed files (space separated)
files=$( git -C "$root" diff --name-only $forkpoint $topic | paste -s -d ' ' )
diff -t --tabsize=4 -W $(tput cols) -y --left-column \
<( git -C "$root" diff $forkpoint $topic ) \
<( git -C "$root" diff $upstream $topic -- $files ) \
| grep -vP '(^ *> )' \
# skip changes that do not interfere with topic (empty left part)注意:这个脚本不应该适用于名字中有空格的文件。
用法:git-diff-rebase master topic | less
如何解释结果:
* * < (空右半部分)已被纳入上游+ * | * -(标识文本)已经包含在上游- * | + * -冲突+ * | - * -可能的冲突+ * ( -(空右部分)无冲突,上游无冲突- * ( -(空右部分)没有冲突,存在于上游* ( -(空右部分)同时存在于主题和上游其中*是任何文本的占位符。
发布于 2018-06-13 12:23:52
我想知道主题分支的哪些部分已经包含在上游分支中,以及在重基时可能出现哪些冲突。
如果我错了,请纠正我,但听起来您想得到一个补丁,其中包含了topic中包含的冲突更改(如果有的话)。
由于重基是一种合并,我认为最简单的方法是在不创建提交的情况下进行合并(您可以称之为“干合并”),并检查未合并(即冲突的)文件的差异:
git checkout topic
git merge upstream --no-commit --no-ff一旦您在工作目录中拥有了来自develop的合并文件,您所要做的就是检查任何未合并文件的差异:
git diff --diff-filter=U发布于 2019-06-17 15:07:35
这里的一种方法是复制您的目标分支(git签出-b to分支),在那里进行重基,然后对未修改的分支进行区分。
https://stackoverflow.com/questions/50836423
复制相似问题