git查看修改了哪些文件 - git log



显示哪些文件在两个修订之间发生了变化 (10)

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

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

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

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

想知道是否有像“git status master..branch”这样的东西只能看到两个分支之间不同的文件。

如果不创建新工具,我认为这是您现在可以做到的最接近的工具(当然,如果文件被修改了多次,这将显示重复):

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

想知道是否有我错过的东西...


Answer #1

另外请记住,git有便宜和容易的分支。 如果我认为合并可能有问题,我为合并创建一个分支。 因此,如果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分支并重新开始。


Answer #2

只是更多的信息给JasonSmith的答案 :

我用这个命令检查了我的分支:

$ git clone -b branchName http://repository_url

但是,建议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 主线的更多信息。


Answer #3

如果您只是在某些文件中查找更改,那么:

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

branch1是可选的,如果没有提供branch1,则默认将考虑当前分支(您所在的分支)。 例如:

git diff master -- controller/index.js


Answer #5

尝试

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

这将为您提供有关每次更改的更多信息,同时仍使用相同数量的行。

如果您想以另一种方式合并,您还可以翻转分支以获得更清晰的差异图像:

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

Answer #6

您还可以使用例如TortoiseGit轻松比较分支以更改已更改的文件。 只需点击Browse References并选择你想要比较的分支。

例如,如果您将您的分支主数据进行比较,您将得到一个结果列表,如果您决定将 分支合并到您的分支中,那么这些文件将在主数据库中进行更改。

注意,如果您将masteryour-branch以及your-branchmaster进行比较,您将得到不同的结果。


Answer #7

比较当前分支与master分支

$ git diff --name-status master

比较任何一对分支

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

如果我能正确理解你,那就应该做你需要的。


Answer #8

请注意,如果您不喜欢结果,git可以轻松地尝试合并并退出任何问题。 这可能比预先寻找潜在问题更容易。


Answer #9

还有一个选择,在这种情况下使用融合:

git difftool -d master otherbranch

这样不仅可以查看文件之间的差异,还可以轻松指向并点击特定文件。


Answer #10

这里有很多答案,但我想添加一些我常用的东西。 如果您在某个想要比较的分支中,我通常会执行以下操作之一。 为了这个答案,我们会说我们在我们的二级分支。 取决于您在当时需要什么视图取决于您选择哪个视图,但大多数时候我正在使用二者中的第二个选项。 如果您尝试恢复原始副本,第一个选项可能会很方便 - 无论哪种方式,都可以完成任务!

这将比较主人和我们所在的分支(这是次要的),原始代码将被添加的行,新的代码将被视为已删除的行

git diff ..master

要么

这也将比较主人和我们所在的分支(这是次要的),原始代码将是旧线,新代码将是新线

git diff master..




git-diff