如何查看Git正在进行的合并过程中已做出的手动修改?
如何在未完成的Git合并中定位手动修改内容
以下几种方法可以帮你快速找到合并过程中手动调整的部分:
对比工作区与Git自动合并的结果
Git在自动合并时会生成一个临时的合并树,你可以先获取这个树的哈希,再对比它与当前工作区的差异,这部分差异就是你手动修改的内容:# 获取自动合并后的树哈希 auto_merge_tree=$(git merge-tree $(git merge-base HEAD MERGE_HEAD) HEAD MERGE_HEAD | grep -E "^merged tree SHA-1:" | awk '{print $4}') # 对比工作区与自动合并结果 git diff $auto_merge_tree利用暂存区与工作区的差异
如果合并过程中你没有手动将变更加入暂存区,暂存区里保存的是Git自动合并后的内容,直接执行以下命令就能看到你手动修改的部分:git diff通过 blame 定位修改行
针对单个文件,使用带-c参数的blame命令,可以看到每行内容的来源分支(1代表当前分支HEAD,2代表要合并的MERGE_HEAD),手动修改的行不会有这些标记,很容易识别:git blame -c <你的文件名>暂存当前修改,重新自动合并后对比
如果你不确定自动合并的原始状态,可以先暂存当前修改,让Git重新执行自动合并,再对比暂存的修改与自动合并结果:# 暂存当前手动修改 git stash # 查看暂存的修改与自动合并结果的差异 git stash show -p # 恢复暂存的修改 git stash pop
内容的提问来源于stack exchange,提问作者Charles
相关产品推荐
相关产品推荐

