我有一个git日志,如:
commit: abasued1..
commit: jsdiq7di..
commit: 2348fbvb..
commit: 0123ruhw..
commit: 9chvef87..
commit: 834rhbf3..
我希望在提交834rhbf3..
和abasued1..
之间进行不同的更改,而不包含其中包含的提交0123ruhw..
和2348fbvb..
。
我知道如何在两次提交之间获得整个差异,但有没有办法从某个范围中排除某些提交?
答案 0 :(得分:2)
我想我终于明白了你。你可以使用它。
$ git revert --no-edit 2348fbvb
$ git revert --no-edit 0123ruhw
$ git diff 834rhbf3 HEAD
原始帖子
也许我误解了你,但你试过git diff 834rhbf3 abasued1
吗?见here。
答案 1 :(得分:0)
如果我理解正确,你需要一个包含两个时间点之间变化的差异,除了作为特定两次提交的一部分发生的变化。
我不相信用一个命令就可以做到这一点;如果您以后的任何更改都依赖于被排除的提交,那么git就无法构建有意义的差异。
如果你想在没有修改分支的情况下拍摄,你可以做三个不同的差异:
git diff 834rhbf3 9chvef87 # changes made in 9chvef87
git diff 2348fbvb jsdiq7di # changes made in jsdiq7di
git diff jsdiq7di abasued1 # changes made in abasued1
请注意,如果abasued1
或jsdiq7di
中的更改建立在两个排除的提交中的更改之上,您仍会将其中的部分视为上下文。
答案 2 :(得分:0)
一种间接方法,但可以达到目的:
现在,对两个分支进行比较,如下所示:
const
答案 3 :(得分:-1)
这是一种非常规和蛮力的方法。
首先,为了安全起见,请在.git目录所在的根目录下制作整个项目的副本。
现在,使用此副本 ...
使用交互式rebase流程,例如git rebase -i HEAD~10
并实际删除您不想要的提交(通过删除代表这些提交的整行)并保存您的工作。
然后你就可以在没有提交的情况下对commitB执行git diff
commitA。
然后删除此目录(rm -r
),这样您就不会意外地将其推到任何地方!