您的位置:首页 > 其它

git比较多个文件在两个分支下的差异

2018-02-12 17:00 417 查看

简介

一般工作中,我们每次代码测试通过后,代码需要合并到master分支,并将master分支的代码发布到线上。在合并回master过程,如果涉及到多团队并行开发时,可能会遇到代码合并冲突。在修复冲突过程中,可能将别人的代码误删或自己的代码被别人误删。这时我们如何快速判断,master分支上包含了本次开发功能的所有代码?本文主要介绍如何通过管道命令,快速地找出本次需求中开发过的文件在master分支和测试环境分支下的代码差异。

示例



从上图可知,从master拉取新分支名为test,且该分支上有两个提交。

提交内容如下





commit1的提交内容有:创建了test1和test_dir/test2文件,并添加内容
commit2的提交内容有:修改test2文件的内容

如何找到一次需求开发中所有修改或新建的文件列表(即查找连续commit修改文件列表)

将分支切换到当前的需求的开发分支

git checkout '分支名'


找到分支拉取时的基点

HEAD 当前最新commit
HEAD^ 上一个commit
HEAD^^ 上上个commit
HEAD~N (N为整数) 前N个commit

也可以是具体的commit id值


查找完整命令


git diff --name-only HEAD^^
or
git diff --name-only d4e1b3f03feec5bcd60508959dc70f29cfe1bc41

# 结果
test1
test_dir/test2


过滤掉不关心的文件/文件夹

git diff --name-only [HEAD or commit id] | grep -v [要过滤的文件名/文件夹名]

例: git diff --name-only HEAD^^|grep -v test_dir
结果
test1


比较某文件在两个分支下的差异

git diff 分支1名 分支2名 文件名

例:
git diff test origin/master test1

diff --git a/test1 b/test1
deleted file mode 100644
index 58c9bdf..0000000
--- a/test1
+++ /dev/null
@@ -1 +0,0 @@
-111


某期需求涉及到多个文件比较

git diff --name-only HEAD^^|grep -v test_dir |xargs git diff test master


查看原文:https://www.huuinn.com/archives/558
更多技术干货:风匀坊
关注公众号:风匀坊
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: