我想要合并两个分支机构,已经分开一段时间,并想知道哪些文件已被修改。

碰到这个的链接: http://linux.yyz.us/git-howto.html 这是非常有用的。

该工具为进行比较分支机构,我已经遇到的是:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

想知道,如果没有东西像"混帐状态master..分支"只看到那些文件之间不同的两个分支。

没有创建新的工具,我认为这是接近你可以得到现在做到这一点(这当然会重复显示,如果一文件是修改超过一次):

  • git diff master..branch | grep "^diff"

想知道如果有什么我错过了...

有帮助吗?

解决方案

比较的目前分支对 master 分支机构:

$ git diff --name-status master

到比较的任何两个分支:

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

读了 git diff官方文件.

其他提示

尝试

$ git diff --stat --color master..branchName

这会给你更多的信息的每一个变化,同时仍然使用相同的行数。

你还可以翻该分支机构得到更清晰的画面的差异如果你是以合并的其他方式:

$ git diff --stat --color branchName..master

还记得混帐具有廉价和容易的分支。如果我认为一个合并可能会有问题我创建一个分支,用于合并。所以如果 master 有变化我想合并和 ba 是我的分支,需要从主人,我可能会做到以下几点:

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-merge 分开始。

如果任何人试图产生一种差异文件从两个分支:

git diff master..otherbranch > myDiffFile.diff

还有一个GUI基础的方法。

你可以使用 gitk.

  1. 运行:

    $ gitk --all
    
  2. 右击犯下的一个分支选择 标志这个承诺 在持久性有机污染物的-菜单。

  3. 右击犯的另一个分支选择 变化,这->标承诺差异标提交>这个.

然后会有一个改变的文件列表中的正确的底板和差异的详细信息在左边的底板。

多一个选择,采用融合在这种情况下:

git difftool -d master otherbranch

这不仅允许见之间的差异的文件,但也提供了一个简单的方法来点和点击进入一个具体的文件。

注意到那个混帐很容易只是试试合并及远离任何问题,如果你不喜欢的结果。它可能更易于寻找潜在的问题。

如果你是在寻找的变化,只有在某些文件(s),则:

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1是可选的和当前的部门(分你是)将被视为默认,如果branch1是没有提供。e.g:

git diff master -- controller/index.js

当协同工作,或者在多个特在一次,这是常见的,上游或甚至你的主人,包含工作是不包括在分支机构,并将错误地出现在基本差异.

如果你的上游可能具有移动时,你应该这样做:

git fetch
git diff origin/master...

只是令差异的主人可以包括或不包括的、相关的变化。

如果您使用 IDEA, 你还可以比较的任何分支与当前工作分支。看看 http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 更多的信息。这是在 免费版 为好。

有两个分支机构,可以说

  • A(分上,你的工作)
  • B(另一个分支,与其要比较)

在一个分支,你可以的类型

git diff --color B

然后这将给你一个输出

enter image description here

重要的一点是

  1. 案文在绿色的是内部存在一个分支

  2. 案文在红色的是存在的分支机构B

有很多的答案在这里,但我想增加一些东西,我通常使用。如果你在一个树枝,你想来比较,我通常做的下列操作之一。为了这个答案,我们会说,我们在我们的次级分支。根据什么认为你需要的时间将取决于你的选择,但大多数时间我是使用第二种选择中的两个。第一选择可能是方便的,如果你们试图恢复到原来的复制--无论是哪种方法,都把工作做好!

这将比较主要分支,我们是在(其是二级)和原始代码将增加的线路和新的编码,将考虑删除线

git diff ..master

这也将比较主要分支,我们是在(其是二级)和原始代码将旧线和新的编码,将新的线条

git diff master..

如果你喜欢GUI和使用的Windows,这是一个简单的方法。

  1. 下载WinMerge
  2. 检查了两个分支机构为不同的文件夹
  3. 做一个文件夹中的文件夹比较使用WinMerge.你也可以很容易地进行修改,如果一个人的分行是一个你们的工作。
git diff revision_n revision_m

如果 revision_nrevision_m 是连续的提交然后它就输出一样 git show revision_m

人人都在寻找一个GUI解决方案, Git可口可乐 有一个非常好的"分支的比较观众(差异 -> 支..).

你也可以使用 可视化差异.

例如,如果您使用 Sourcetree, 你可以简单 选择任何两次提交以登录查看.

(我本人更喜欢使用图在大多数情况下为此,我张贴这为那些可能不熟悉GUI选项。)

你也可以很容易地进行比较分支机构对于改变的文件使用的例如 TortoiseGit.只是点击 浏览引用 和挑树枝,你想来比较。

例如,如果你比较 你的分支 你将得到的结果列表的文件,将被改变 如果你决定合并 你的分支.

Remmber,你会有不同的结果,如果你比较 你的分支你的分支.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top