首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git重基试运行的差异

git重基试运行的差异
EN

Stack Overflow用户
提问于 2018-06-13 11:44:40
回答 3查看 1.1K关注 0票数 1

我想了解主题分支的哪些部分已经包含在上游分支中,以及在重基时可能出现哪些冲突。

它应该是git-rebase的一种尝试,它显示了主题和上游之间的差异,不包括与主题无关的变化。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-13 11:44:40

一种解决方案是在差异上应用差异。这样做的目的是:

  1. 分叉点和主题之间的区别
  2. 了解上游和主题之间的差异
  3. 比较这些差异

git-diff-rebase脚本文件:

代码语言:javascript
复制
#!/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

如何解释结果:

  • * * < (空右半部分)已被纳入上游
  • + * | * -(标识文本)已经包含在上游
  • - * | + * -冲突
  • + * | - * -可能的冲突
  • + * ( -(空右部分)无冲突,上游无冲突
  • - * ( -(空右部分)没有冲突,存在于上游
  • * ( -(空右部分)同时存在于主题和上游

其中*是任何文本的占位符。

票数 0
EN

Stack Overflow用户

发布于 2018-06-13 12:23:52

我想知道主题分支的哪些部分已经包含在上游分支中,以及在重基时可能出现哪些冲突。

如果我错了,请纠正我,但听起来您想得到一个补丁,其中包含了topic中包含的冲突更改(如果有的话)。

由于重基是一种合并,我认为最简单的方法是在不创建提交的情况下进行合并(您可以称之为“干合并”),并检查未合并(即冲突的)文件的差异:

代码语言:javascript
复制
git checkout topic
git merge upstream --no-commit --no-ff

一旦您在工作目录中拥有了来自develop的合并文件,您所要做的就是检查任何未合并文件的差异:

代码语言:javascript
复制
git diff --diff-filter=U
票数 2
EN

Stack Overflow用户

发布于 2019-06-17 15:07:35

这里的一种方法是复制您的目标分支(git签出-b to分支),在那里进行重基,然后对未修改的分支进行区分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50836423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档