Git如何检查另一个分支中是否有任何更改

Git如何检查另一个分支中是否有任何更改,git,github,command,Git,Github,Command,在git中,如何检查另一个分支(相对于当前分支)中是否有任何更改? git fetch origin将显示远程数据库中当前分支的任何更改。有没有办法从另一家分行取同样的东西? 如果我没有错的话,git merge origin/master和git rebase origin/master将直接从另一个分支合并 编辑: 我的情况与我的非常相似。只是我想“检查”在推送功能分支更改之前是否需要合并主分支中的任何更改。您需要的命令(可能)git diff。但问题本身有一种根本性的错误。Git不存储更改

在git中,如何检查另一个分支(相对于当前分支)中是否有任何更改?
git fetch origin
将显示远程数据库中当前分支的任何更改。有没有办法从另一家分行取同样的东西? 如果我没有错的话,
git merge origin/master
git rebase origin/master
将直接从另一个分支合并

编辑:

我的情况与我的非常相似。只是我想“检查”在推送功能分支更改之前是否需要合并主分支中的任何更改。

您需要的命令(可能)
git diff
。但问题本身有一种根本性的错误。Git不存储更改,因此任何分支中都不会有任何更改。事实上,branch这个词本身就很滑,最好谈谈提交。提交不存储更改:提交存储快照(和元数据)

要比较任意两个快照,可以使用
git diff
。这就是为什么答案是(可能)
git diff
。但接下来您将讨论如何使用
git merge
和/或
git-rebase
,而这些实际上更为复杂

git fetch
命令将从其他一些git存储库中获取他们拥有的、您没有的、他们希望您拥有的任何提交。1因此,现在您拥有了您的提交和他们的提交

下一个技巧在于查找提交。一般来说,您的提交在您的分支中,但这是在使用那个狡猾的词branch。为了简短地回答这个问题,我不打算在这里详细介绍,但存储库中的分支名称只是Git记忆某一系列提交中最后一次提交的方式。您可以而且几乎总是在最后一次提交之前进行提交。此外,每个提交可以位于多个分支中,并且通常有人所做的第一次提交都位于每个分支中

使用
git fetch
获取其他人的提交后,git将创建或更新远程跟踪名称,例如
origin/master
。这是Git的一种方式,它可以记住Git在其存储库中作为其
主机上的最后一次提交所做的提交。因此,您现在可以运行:

git diff master origin/master
它将让您的Git从您的
主控中的上次提交中提取快照,然后从其
主控中的上次提交中提取快照(由您的
源/主控中记住),然后比较两个快照。然后,
git diff
命令为您提供了对快照(
master
)中的文件进行更改的方法,如果对这些文件进行更改,将生成快照中的文件(
origin/master

您还可以运行:

git rev-parse master
它将向您显示提交的哈希ID,该哈希ID(当前)是您自己的
主机中最新的哈希ID,并且:

git rev-parse origin/master
它将向您显示提交的哈希ID,该哈希ID(当前)是
origin/master
中的最新哈希ID-您的
master
内存。如果这些散列ID相同,那么它们和您有,或者至少有,相同的最后提交。如果他们不同,你和他们有不同的承诺

这些不同的提交是否持有不同的快照是另一个问题(将回答
git diff
)。如果您和他们有相同的提交,那么,一个特定的提交只有一个快照。因此,
git diff
不会发现任何差异,因为一个快照与它本身是相同的


1一般来说,这是“所有提交”,尽管在特定的系统中,人们可以在特定的情况下隐藏提交,如果他们愿意的话。不过,大多数情况下,你不必担心这一点。我只是小心地在这里添加他们希望您拥有的部分,以确保技术正确

2而且,您现在可以从origin/master运行
git-diff-hash-from-master hash-from-origin/master
。输出将与来自
git diff master origin/master
的输出相匹配。这两个名称只是让Git找到正确哈希ID的方法。

您需要的命令(可能)是
Git diff
。但问题本身有一种根本性的错误。Git不存储更改,因此任何分支中都不会有任何更改。事实上,branch这个词本身就很滑,最好谈谈提交。提交不存储更改:提交存储快照(和元数据)

要比较任意两个快照,可以使用
git diff
。这就是为什么答案是(可能)
git diff
。但接下来您将讨论如何使用
git merge
和/或
git-rebase
,而这些实际上更为复杂

git fetch
命令将从其他一些git存储库中获取他们拥有的、您没有的、他们希望您拥有的任何提交。1因此,现在您拥有了您的提交和他们的提交

下一个技巧在于查找提交。一般来说,您的提交在您的分支中,但这是在使用那个狡猾的词branch。为了简短地回答这个问题,我不打算在这里详细介绍,但存储库中的分支名称只是Git记忆某一系列提交中最后一次提交的方式。您可以而且几乎总是在最后一次提交之前进行提交。此外,每个提交可以位于多个分支中,并且通常有人所做的第一次提交都位于每个分支中

使用
git fetch
获取其他人的提交后,git将创建或更新远程跟踪名称,例如
origin/master
。这是Git的一种方式,它可以记住Git在其存储库中作为其
主机上的最后一次提交所做的提交。因此,您现在可以运行:

git diff master origin/master
这将使Git从代码中的最后一次提交中提取快照