我想合并两个分开了一段时间的分支,并想知道哪些文件被修改了。

穿过此链接:http://linux.yyz.us/git-howto.html(移动到web.archive.org),这非常有用。

我遇到的比较分支的工具有:

git diff主机。。树枝git日志主机。。树枝git短日志主机。。树枝

我想知道是否有类似于“gitstatus master…branch”的东西来只查看两个分支之间不同的文件。

在不创建新工具的情况下,我认为这是您现在最接近的方法(如果文件被多次修改,这当然会显示重复):

git diff主机。。分支|grep“^diff”

我想知道我是否错过了什么。。。


当前回答

还要记住,git的分支既便宜又容易。如果我认为合并可能有问题,我会为合并创建一个分支。因此,如果master有我想要合并的更改,而ba是我的分支,需要来自master的代码,我可以执行以下操作:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

最终的结果是,我不得不在一个废弃的分支上尝试合并,然后再使用我的分支。如果我陷入困境,我可以删除ba合并分支,重新开始。

其他回答

注意,如果您不喜欢结果,git可以很容易地尝试合并并避免任何问题。这可能比提前寻找潜在问题更容易。

您还可以使用例如TortoiseGit轻松比较已更改文件的分支。只需单击“浏览引用”并选择要比较的分支。

例如,如果您将分支与主文件进行比较,那么如果您决定将分支合并到主文件中,将得到主文件中更改的文件列表。

记住,如果你将master与分支进行比较,将分支与master进行比较,你会得到不同的结果。

如果您使用的是Github/Github Enterprise,则可以通过点击存储库路径的url/compare来使用Web UI,例如,https://github.com/http4s/http4s/compare.您可以选择要比较的分支/提交/标记:

diff将在github接口的url/compare/{x1}。。。{x2}其中x2和x1是要比较的分支/提交/标记,例如:https://github.com/http4s/http4s/compare/main...dotty

您可以在Github文档中看到更多信息。

要将当前分支与主分支进行比较,请执行以下操作:

$ git diff --name-status main

要比较任意两个分支:

$ git diff --name-status firstbranch..yourBranchName

在官方文档中有更多的gitdiff选项(特别是--name status选项)。

这里有很多答案,但我想补充一些我常用的答案。如果你在一个你想比较的分支中,我通常会做下面的一个。为了回答这个问题,我们将说我们在我们的二级分支。取决于你当时需要什么样的视图,这取决于你选择了哪一个,但大多数时候我使用的是二者中的第二个选项。如果您试图恢复到原始副本,第一个选项可能很方便——无论哪种方式,都可以完成任务!

这将把master与我们所在的分支(这是次要的)进行比较,原始代码将是添加的行,新代码将被视为删除的行

git diff ..master

OR

这也会将master与我们所在的分支进行比较(这是次要分支),原始代码将是旧行,新代码将是新行

git diff master..