git:确定在分支上更改的文件

时间:2012-01-10 16:16:42

标签: git

我们有一个git工作流程,其中包含最新的稳定版本的代码 包含在我们的主分支中。持续开发和错误修正工作 在单独的分支中并合并到一个临时分支进行测试 合并为主人。在将错误修复程序合并到暂存分支之前, 开发人员需要将登台分支合并到他们的bugfix分支中 用它们分支后发生的任何变化来测试它们的变化 主。一旦完成,bugfix分支将合并到暂存分支中。 我们的流程规定我们必须提供所有更改为的文件的列表 错误修复的结果。我们希望避免给开发人员带来负担 这种额外的会计工作通过强迫他们做标记他们的分支的事情 当他们从master分支出来然后在合并之前生成列表 分期。那么,确定更改文件的最佳方法是什么 它被合并到临时分支后下面的bugfix分支? 从本质上讲,我们希望从commit(1)开始更改的文件,但是 不是由于将登台分支合并到错误修复程序而更改的任何文件 分支。

master (A)---(B)-----------------------(G)
               \                       /
staging         \  (C)---(D)-----(E)-(F)
                 \                 \ /
bugfix           (1)---(2)---(3)---(4)

2 个答案:

答案 0 :(得分:2)

假设你在合并提交(4)和(F)中没有做任何恶事,你只需要:

git diff --name-only commit-B commit-3

如果你真的很想要,你可以这样做:

git diff --name-only $(git merge-base bugfix~1 master) bugfix~1

git merge-base找到两个命名提交的最新共同祖先,bugfix~1引用bugfix之前的提交,即commit(3)。

如果由于某种原因暂存分支被多次合并,你必须做一些这样的差异并采取联合,例如:

(git diff --name-only B 3; git diff --name-only 5 13) | sort -u

答案 1 :(得分:0)

怎么样:

git checkout bugfix
git diff HEAD~1 master

这应该为您提供合并前的错误修正提交和主数据之间的区别。