git diff commit_A commit_B
向我展示了A
和B
在提交范围A..B
内,有提交--author=me
和--author=someone else
有没有办法在git diff
和A
之间获得我的累积更改的B
,不包括其他人的更改?
我想一个可能的解决方案是解析git log --author=me
和"总和"每个提交的差异。另一个可能的想法可能是git blame
点B
,并按A
和B
之间更改的行进行过滤。
上下文:
假设我在很长一段时间内处理大型功能。在这项工作中,我做了许多子功能提交。为了及时了解最新的代码库,git pull
创建了与其他贡献者的合并提交'贡献。我希望能够看到我迄今为止所做的累积更改,而不会看到其他所有人的更改。假设没有合并冲突(我们触摸不同的代码区域,但可能在同一个文件中。
答案 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);
},