使用远程分支执行或未执行的更改之间的Git差异
是否有一种方法可以通过远程分支(如origin/branch1)在阶段性/非阶段性更改之间进行git差异。git difftool有类似的选项吗 或使用远程分支执行或未执行的更改之间的Git差异,git,git-merge,git-difftool,Git,Git Merge,Git Difftool,是否有一种方法可以通过远程分支(如origin/branch1)在阶段性/非阶段性更改之间进行git差异。git difftool有类似的选项吗 或 有没有一种方法可以通过git remote branch区分本地文件系统中的更改(忘记分段或未分段)?我只想在提交更改之前检查它们。一旦我完成拉入更改并解决与远程分支的冲突,这将非常有用。您可以使用来完成此操作。从文档中,它“从当前索引中创建一个树对象”——基本上为分级内容提供一个“名称” 以这个示例存储库为例。上游包含一个文件f,其内容为hi $
有没有一种方法可以通过git remote branch区分本地文件系统中的更改(忘记分段或未分段)?我只想在提交更改之前检查它们。一旦我完成拉入更改并解决与远程分支的冲突,这将非常有用。您可以使用来完成此操作。从文档中,它“从当前索引中创建一个树对象”——基本上为分级内容提供一个“名称” 以这个示例存储库为例。上游包含一个文件
f
,其内容为hi
$ git diff --staged
diff --git a/f b/f
index 45b983b..f471c09 100644
--- a/f
+++ b/f
@@ -1 +1,2 @@
hi
+hello
$ git diff
diff --git a/f b/f
index f471c09..723cb71 100644
--- a/f
+++ b/f
@@ -1,2 +1,3 @@
hi
hello
+unstaged
从这里,您可以看到添加了行“hello”的diff即将上演
还有一个未分级的差异,添加了行“未分级”
您可以将其与远程分支进行比较,如下所示:
$ git diff origin/master $(git write-tree)
diff --git a/f b/f
index 45b983b..f471c09 100644
--- a/f
+++ b/f
@@ -1 +1,2 @@
hi
+hello
在这种情况下,它恰好与git diff--staged相同,但是如果我们稍微向前转发一点上游分支:
$ git fetch -q && git show origin/master | tail -7
diff --git a/f b/f
index 45b983b..5f69508 100644
--- a/f
+++ b/f
@@ -1 +1,2 @@
hi
+from upstream
现在我们看到了完整的更改:
$ git diff origin/master $(git write-tree)
diff --git a/f b/f
index 5f69508..f471c09 100644
--- a/f
+++ b/f
@@ -1,2 +1,2 @@
hi
-from upstream
+hello
实现这一目标的一个方法是
- 假设您在一个文件夹
dir1
- 在另一个文件夹中签出同一回购协议
,切换到远程 分支机构dir2
- 使用unix
命令查看两个 目录diff
diff--brief-r dir1/dir2/
是否有一种方法可以在阶段性更改和远程分支(如origin/branch1)之间进行git差异
只需运行:
git diff --cached origin/branch1
(如果您愿意,您可以在这里使用--staged
;我使用--cached
,因为git rm
有--cached
但没有--staged
)。这向您展示了一种更改原点/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
(颠倒顺序):
正如您所看到的,这些与不使用--cached
aka--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
或not,并使用任何名称来标识任何提交)也可在git difftool
中使用
这里值得记住的是,在Git中实际上没有任何远程分支。您有一些提交,并且您有一些提交的名称。名称的一种可能形式是远程跟踪名称,如
origin/branch1
。有些人喜欢将其称为“远程分支”,但它只是您自己(本地)Git的内存,其中origin
的branch1
不久前指向了它,当您运行Git fetch origin
并让您的Git拾取Git的分支时。为什么不提交它,用git远程分支来区分本地文件系统中的更改(忘记暂存或未暂存)有什么方法吗?我只想在提交更改之前检查我的更改。一旦我完成了将更改与远程分支的合并,这将非常有用。太棒了!谢谢你,托瑞克。
$ 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