git diff只有我的变化

git diff commit_A commit_B显示了A和B之间的所有差异

在提交A..B的范围内有提交–author = me和–author =其他人

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

我想一个可能的解决方案是解析git log –author = me和“sum”,每次提交的差异.另一个可能的想法可能是将Git归咎于B点,并按A和B之间的变化进行过滤.

语境:

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

最佳答案

Is there a way to get the git diff for my cumulative changes between A and B, excluding changes by others?

不直接,没有.

I imagine one potential solution would be to parse git log –author=me and “sum” together the diffs for each commit.

同样的想法,但我认为更容易实现(虽然我希望补丁不能正常应用的常见问题):从提交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将作为临时分支.以上主要用于说明.)

点赞