git diff only my changes

时间:2015-09-24 15:46:16

标签: git git-diff

git diff commit_A commit_B向我展示了AB

之间的所有差异

在提交范围A..B内,有提交--author=me--author=someone else

有没有办法在git diffA之间获得我的累积更改的B,不包括其他人的更改?

我想一个可能的解决方案是解析git log --author=me和"总和"每个提交的差异。另一个可能的想法可能是git blameB,并按AB之间更改的行进行过滤。

上下文:

假设我在很长一段时间内处理大型功能。在这项工作中,我做了许多子功能提交。为了及时了解最新的代码库,git pull创建了与其他贡献者的合并提交'贡献。我希望能够看到我迄今为止所做的累积更改,而不会看到其他所有人的更改。假设没有合并冲突(我们触摸不同的代码区域,但可能在同一个文件中。

2 个答案:

答案 0 :(得分:1)

  

有没有办法获得A和B之间累积变化的git diff,排除其他人的变化?

不直接,没有。

  

我想一个可能的解决方案是解析git log --author = me和“sum”将每次提交的差异解析。

同样的想法,但我认为更容易实现(虽然我希望修补程序不能正常应用的常见问题):从提交A开始创建一个临时分支,挑选你要保留的每个提交(你或他们的)忽略了你想要跳过的那些,然后将最终结果与原始结果区分开来。一旦对差异感到满意,就丢弃临时分支。因此:

git checkout -b temp A
for commit in $(git rev-list A..B); do
    if want_commit $commit; then git cherry-pick $commit; fi
done
git diff A
git checkout realbranch; git branch -D temp

(不需要命名临时分支:分离的HEAD将作为临时分支。以上主要用于说明。)

答案 1 :(得分:-2)

您可以使用分支进行此操作(从上下文中看来,您的分支未合并到主分支中。)

此评论对此进行了解释:git diff showing only commits that revision/branch A is ahead of revision/branch B

因此,如果您的分支是分支A中的分支B,则可以运行:

 onTap: () {
                  Navigator.push(context, slides[index].url);
                },

或者简单地:

 onTap: () {
                  Navigator.push(context, slides[index].url as Route);
                },