显示两个修订版本之间哪些文件已更改
我想合并两个已经分离了一段时间的分支,并想知道哪些文件已被修改。
遇到这个链接: http : //linux.yyz.us/git-howto.html这是非常有用的。
比较我遇到的分支的工具是:
git diff master..branch
-
git log master..branch
-
git shortlog master..branch
想知道是否有像“混帐状态master..branch”只看到这两个分支之间的不同文件。
没有创build一个新的工具,我认为这是最接近你现在可以做到这一点(当然,如果一个文件被修改多次,这将显示重复):
-
git diff master..branch | grep "^diff"
想知道是否有我错过了…
尝试
$ git diff --name-status master..branchName
如果我能正确理解你,那就应该做你所需要的。
尝试
$ git diff --stat --color master..branchName
这会给你更多关于每个更改的信息,同时仍然使用相同数量的行。
如果要合并另一种方式,您也可以翻转分支以获得更清晰的差异图像:
$ git diff --stat --color branchName..master
还要记住,git有便宜和容易的分支。 如果我认为合并可能有问题,我创build一个合并分支。 所以,如果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
分支,重新开始。
如果有人试图从两个分支生成一个diff文件:
git diff master..otherbranch > myDiffFile.diff
请注意,如果不喜欢结果,git可以轻松地尝试合并,退出任何问题。 事先预见潜在的问题可能比较容易。
还有一个基于GUI的方法。
你可以使用gitk 。
-
跑:
$ gitk --all
-
右键单击分支的提交 ,然后在popup菜单中select标记此提交 。
- 右键单击另一个分支的提交并selectDiff this – >标记提交或Diff标记提交 – > this 。
然后在右下方的面板中会出现一个已更改的文件列表,并在左下方的面板中显示不同的详细信息。
在这种情况下使用融合的另一种select是:
git difftool -d master otherbranch
这样不仅可以查看文件之间的差异,还可以轻松地指向并点击特定的文件。
当协同工作或同时使用多个function时,通常上游甚至是主人都包含未包括在分支中的工作,并且会错误地显示在基本差异中。
如果你的上游可能已经移动,你应该这样做:
git fetch git diff origin/master...
只是使用git diff master可以包含或不包含相关更改。
如果您正在使用IntelliJ IDEA ,则还可以将任何分支与您当前的工作分支进行比较。 有关更多信息,请参阅http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 。 这也是免费版本 。
如果您只是在某些文件中查找更改,那么:
git diff branch1 branch2 -- myfile1.js myfile2.js
branch1是可选的,如果没有提供branch1,则默认将考虑当前分支(您所在的分支)。 例如:
git diff master -- controller/index.js
只是更多的信息给JasonSmith的答案 :
我用这个命令检查了我的分支:
$ git clone -b branchName http://repository_url
但是,build议git diff
命令失败:
$ git diff --name-status master..branchName fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'
我调查了这个线程之后的分支:
$ git branch * branchName $ git branch -a * branchName remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/branchName
我本地没有分支master
,所以我用remotes/origin/master
来进行比较:
$ git diff --name-status remotes/origin/master..push . . . . . . . . .
remotes/origin/master
主线更多信息在这个线程 。
这里有很多答案,但是我想添加一些我常用的东西。 如果你是在你想比较的分支之一,我通常会做以下其中一个。 为了这个答案,我们会说我们在我们的二级分支。 这取决于你当时需要什么样的视angular取决于你select哪一个,但是大多数时候我正在使用二者中的第二个选项。 如果您尝试恢复原始副本,第一个选项可能会很方便 – 无论哪种方式,都可以完成任务!
这将比较主人和我们在(这是次要的)的分支,原来的代码将被添加的行,新的代码将被视为删除的行
git diff ..master
要么
这也将比较主人和我们所在的分支(这是次要的),原来的代码将是旧的线,新的代码将是新的线
git diff master..
有两个分支让我们说
- A(你正在工作的部门)
- B(你想要比较的另一个分支)
在分支A你可以input
git diff --color B
那么这会给你一个输出
关于这一点的重要一点是
-
绿色的文本出现在分支A中
-
分部B中出现红色文字
你也可以使用例如TortoiseGit轻松比较分支的变化文件。 只需点击Browse References并select你想要比较的分支。
例如,如果您将您的分支与主数据进行比较,那么您将获得将在主数据库中进行更改的文件列表,如果您决定将分支合并到主数据库中 。
如果你把master和your-branch以及你的分支与master比较,你会发现你会得到不同的结果。