gpt4 book ai didi

远程分支的暂存或未暂存更改之间的 Git diff

转载 作者:太空狗 更新时间:2023-10-29 14:35:53 24 4
gpt4 key购买 nike

有没有一种方法可以使用远程分支(比如 origin/branch1)在暂存/未暂存更改之间执行 git diff。 git difftool 有类似的选项吗?

有没有办法通过 git 远程分支来区分本地文件系统中的更改(忘记暂存或未暂存)?我只想在提交之前检查我的更改。一旦我完成了更改并解决了与远程分支的冲突,这就非常有用。

最佳答案

Is there a way to do a git diff between staged changes and a remote branch say origin/branch1.

只需运行:

git diff --cached origin/branch1

(如果你愿意,你可以在这里使用 --staged;我使用 --cached 因为 git rm--缓存但不是--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

Is there a similar option with git difftool?

这些相同的选项(--cached 或不缓存,以及使用任何名称来标识任何提交)也可用于 git difftool


这里值得记住的是,在 Git 中实际上并没有任何远程分支。您有一些提交,并且您有一些提交的名称。一种可能的名称形式是 远程跟踪名称,例如 origin/branch1。有些人喜欢称其为“远程分支”,但它只是你自己的(本地)Git 对 originbranch1 指向的位置的内存,当你运行时git fetch origin 并让你的 Git 获取他们的 Git 分支。

关于远程分支的暂存或未暂存更改之间的 Git diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47585962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com