是否有一种方法可以在暂存的更改和远程分支(例如 origin/branch1)之间进行 git diff?
只需运行:
git diff --cached origin/branch1
(如果您愿意,可以在此处使用--staged
;我使用--cached
,因为git rm
具有--cached
而不具有--staged
)。这向您展示了一种将origin/branch1
更改为与您已暂存内容相匹配的方法:
$ git show origin/branch1:README
initial version
$ cat README
initial version
second version
$ echo staged >> README && git add README
$ echo replace whole thing > README
$ cat README
replace whole thing
$ git diff --cached origin/branch1
diff --git a/README b/README
index 42549ca..d9074b8 100644
--- a/README
+++ b/README
@@ -1 +1,3 @@
initial version
+second version
+staged
如果您想看到一个将您暂存的更改与origin/branch1
匹配的方法,请添加-R
(反转顺序):
$ git diff -R --cached origin/branch1
diff --git b/README a/README
index d9074b8..42549ca 100644
--- b/README
+++ a/README
@@ -1,3 +1 @@
initial version
-second version
-staged
如您所见,这与没有使用--cached
或 --staged
进行比较非常不同,但这也很容易:
$ git diff origin/branch1
diff --git a/README b/README
index 42549ca..acb8b7a 100644
--- a/README
+++ b/README
@@ -1 +1 @@
-initial version
+replace whole thing
git difftool 有类似的选项吗?
--cached
或非缓存选项,以及使用任何名称标识任何提交的选项也适用于 git difftool
。
这里值得记住的是,在 Git 中实际上并没有远程分支。你拥有一些提交记录,并对其中一些提交记录命名。其中一种可能的命名方式是 远程跟踪名,例如 origin/branch1
。有些人喜欢称之为“远程分支”,但它只是你自己(本地)Git 记忆中的信息——当你运行 git fetch origin
时,从他们的 Git 拾取其分支时,Git 能够知道它们的位置。
Sourcetree
- Nandu Kalidindi