Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git BitBucket--查看合并提交中的手动更改_Git_Bitbucket - Fatal编程技术网

Git BitBucket--查看合并提交中的手动更改

Git BitBucket--查看合并提交中的手动更改,git,bitbucket,Git,Bitbucket,BitBucket具有用于查看与提交关联的代码更改的功能。但有时我们会发现自己处于两个长期存在的分支中,例如“开发”和“未来发布”,这两个分支可能会有很大的分歧。当需要将未来的_版本合并到develope中时,由于这些分支的分歧,需要一些手动工作来协调问题 假设“开发”和“未来发布”中合并之前的所有代码更改都已通过同行评审,无需再次评审 使用BitBucket Pull Requests UI或其他方式,是否有好的方法专门检查作为合并本身的一部分所做的手动代码更改,以解决冲突和其他差异?BitB

BitBucket具有用于查看与提交关联的代码更改的功能。但有时我们会发现自己处于两个长期存在的分支中,例如“开发”和“未来发布”,这两个分支可能会有很大的分歧。当需要将未来的_版本合并到develope中时,由于这些分支的分歧,需要一些手动工作来协调问题

假设“开发”和“未来发布”中合并之前的所有代码更改都已通过同行评审,无需再次评审


使用BitBucket Pull Requests UI或其他方式,是否有好的方法专门检查作为合并本身的一部分所做的手动代码更改,以解决冲突和其他差异?

BitBucket目前无法查看在合并提交中作为解决合并冲突的一部分所做的更改。但是,在命令行中执行此操作并不太困难

这样想:有人试图进行合并,但由于冲突,他们处于“未合并”状态。他们进行了一些更改以解决冲突,提交了这些更改,然后留下一个新的合并提交作为结果。如果您知道这个合并提交,那么您就知道他们试图合并的两件事(因为它们是合并提交的父提交)。因此,您可以将自己置于与它们相同的未合并状态,然后在该状态和结果合并提交之间进行区分

下面是一个bash脚本,它正好为您实现了这一点:

#/bin/bash
#将合并提交作为唯一参数传递给脚本
COMMIT=“$1”
#创建一个临时目录,我们将在其中使用repo的副本
TMP_REPO=“$(mktemp-d)”
#将原始repo克隆到临时目录中,并设置
#原始回购作为“替代品”使用--shared
git克隆--安静--共享。“${TMP_REPO}”
cd“${TMP_REPO}”
#签出合并提交的第一个父级(这是“目标”
#提交(合并的提交)
git签出--安静的“${COMMIT}^1”
#合并合并的第二个父级(合并的“源”)
#承诺进入第一个状态,创建“未合并”的冲突状态
printf“GIT合并输出:\n\n”
git合并--安静--不提交“${commit}^2”
#在工作树中放置所有内容,包括所有未解决的冲突
git添加。
#提交更改
git提交--安静--消息“提交所有合并冲突”
printf“\n========================================================================================\n\n”
#在刚刚创建的提交和原始合并提交之间进行区分
git diff--find重命名“HEAD..${COMMIT}”
rm-rf“${TMP_REPO}”
从git repo内部运行它,并将merge-commit散列作为唯一参数传递,如下所示:

$ /path/to/script.sh d29ce0c1420b18c7e8f1ce2bf3667f6609bf215d
GIT MERGE OUTPUT:

Auto-merging numbers.txt
CONFLICT (content): Merge conflict in numbers.txt
Automatic merge failed; fix conflicts and then commit the result.

==================================================

diff --git a/numbers.txt b/numbers.txt
index 18ac646..a4ab7d4 100644
--- a/numbers.txt
+++ b/numbers.txt
@@ -1,9 +1,4 @@
-<<<<<<< HEAD
+two
 four
-five
 six
-=======
-seven
 eight
-nine
->>>>>>> d29ce0c1420b18c7e8f1ce2bf3667f6609bf215d^2
$/path/to/script.sh d29ce0c1420b18c7e8f1ce2bf3667f6609bf215d
GIT合并输出:
自动合并数字.txt
冲突(内容):在numbers.txt中合并冲突
自动合并失败;修复冲突,然后提交结果。
==================================================
diff——git a/numbers.txt b/numbers.txt
索引18ac646..a4ab7d4 100644
---a/numbers.txt
+++b/numbers.txt
@@ -1,9 +1,4 @@
->d29ce0c1420b18c7e8f1ce2bf3667f6609bf215d^2

为了澄清这一点,您只想看看在解决合并冲突的过程中,在合并提交中做了哪些更改?也许可以更新你的标题,让它更具体一些?@jnrbsn谢谢你的建议。更新标题。你可以从你希望合并的分支创建一个新分支,对该分支执行合并提交,然后从该新分支创建一个PR到你希望合并的分支?差异应该正是您所寻找的(尽管您最终会得到另一个您必须压缩的提交)。