假设我在git中有一个branch0。
从这个branch0我创建了一个branch1并开始处理它。一段时间后,我对这个分支进行了更改1。同时branch0正在被改变。
如果我将branch1 的最新版本与branch0 进行比较,我将看到分支之间的所有更改,而不仅仅是与branch1 中的更改相关的更改。
例如,如果在branch0中修改了文件,但在branch1上未修改该文件,则会git diff显示对该文件的更改。但是该文件在branch1 上没有被修改。所以我希望它在差异中被忽略。
从某种意义上说,我想git diff在branch1和branch0之间执行 a 操作,但仅限于在branch1中修改的文件。
在git中可以吗?我可以想象在 bash 中执行此操作,列出所有文件并逐一进行比较。但想知道 git 是否有更简单的方法。
\n\n\n
git diff位于branch1 和branch0 之间,但仅适用于在branch1 中修改的文件。
那是
\ngit diff branch0 branch1 -- $(git diff --name-only branch0...branch1)\nRun Code Online (Sandbox Code Playgroud)\n上面用于生成文件名的三点形式是
\n\n\n\n
git diff [--options] <commit>...<commit> [--] [<path>\xe2\x80\xa6]在包含 和 的分支上进行更改,直到第二个分支,从两者的共同祖先开始。“git diff A...B”相当于“git diff $(git-merge-base AB) B”。您可以省略其中任何一项,这与使用 HEAD 具有相同的效果。
\n
您可以为此使用比较任意提交
与任意提交比较
Run Code Online (Sandbox Code Playgroud)$ git diff test <1> $ git diff HEAD -- ./test <2> $ git diff HEAD^ HEAD <3>
不使用当前分支的尖端,而是与“测试”分支的尖端进行比较。
不与“test”分支的尖端进行比较,而是与当前分支的尖端进行比较,但限制与文件“test”进行比较。
比较上次提交之前的版本和上次提交的版本。
来自http://git-scm.com/docs/git-diff的示例。
假设你有这个 git 树
1---2 (branch0)
\
3 (branch 1)
Run Code Online (Sandbox Code Playgroud)
在提交 3 中,您对branch1 进行了更改,现在我们将一些更改应用并提交到branch0
1---2---4 (branch0)
\
3 (branch 1)
Run Code Online (Sandbox Code Playgroud)
如果你现在这样做
$ git checkout branch1
$ git diff branch0
Run Code Online (Sandbox Code Playgroud)
它将显示这些分支之间的所有更改,包括在提交 4 中应用的更改,就像您已经说过的那样。但是您只想查看branch1的更改,这基本上是与它分支的提交的差异,所以这应该可以完成工作
$ git checkout branch1
$ git diff 2
Run Code Online (Sandbox Code Playgroud)
其中 2 只是提交哈希的一个示例,实际上看起来更像 e542ghe 或类似的东西
| 归档时间: |
|
| 查看次数: |
1922 次 |
| 最近记录: |