从我的Git diff命令中寻找更多信息

问题描述:

我的基本git diff对我来说并不是很重要。在这里,我版本比较我的主分支对临时服务器的主分支:从我的Git diff命令中寻找更多信息

(~/hbb.vm) debian $ git diff ..stage/master --name-only 
sites/all/libraries/attachment_email/attachment_email.php 
sites/all/modules/redirect/redirect.module 
sites/all/modules/redirect/redirect.test 
sites/all/themes/HBB/css/elements.css 
sites/all/themes/HBB/templates/node--enterprise_blog.tpl.php 

我想看到这样的信息:

  • 已添加/修改/删除这个文件?
  • 在哪个分支上文件被添加/修改/删除?

编辑:我不感兴趣看到所有的变化 - 我想要介于两者之间的东西。丰富的总结。

+5

您可以使用'--name-status'而不是'--name-only'来获取每个文件的状态(即添加/修改/删除)。 – adrianbanks

+0

或删除它们以查看实际更改 – Udy

+1

问***在哪个分支上发生更改不是在Git中要求的正确问题,因为分支只是可以从提交中应用和删除的便宜标签,并且可能不再存在于您正在使用的任何回购/遥控器中。要问的更好的问题是“哪个***在stage/master中引入了这个变化?” – 2013-08-02 01:23:19

您可以使用下面的命令来查看当前的分支和stage/master之间的差异的摘要:

$ git diff --name-status ..stage/master 
M  practice.txt 
A  shazbot.txt 
D  foobar.txt 

其中M代表“修改”, A代表“已添加”,D代表“已删除”。

如果你想看到在提交这些文件进行了修改,增加或删除,则可以使用log命令代替,用相同的--name-status说法:

$ git log --oneline --name-status ..stage/master 
31b9628 Add shazbot.txt 
A  shazbot.txt 
e56da37 Merge branch 'develop' 
790f3bf Revert "Revert "Merge branch 'develop'"" 
M  practice.txt 
d9493e0 Merge branch 'master' into develop 
8832960 Revert "Merge branch 'develop'" 
M  practice.txt 
2b82909 Merge branch 'develop' 
2d41fb6 Fix bug 01 
M  practice.txt 
526bf16 Add feature 02 
M  practice.txt 
ba8700c Add feature 01 
M  practice.txt 
bb8ced2 Add practice.txt 
A  practice.txt 

询问有关其中提交介绍修改是更可靠在Git里比问哪个分支,因为在Git中,分支只是便宜的标签,可以在提交中应用和删除,并且可能不再存在于您正在使用的任何回购/远程存储中。

什么提交他们有在stage/master,我没有在本地有:

git log ...stage/master --graph --decorate --cherry --name-status 

我有什么地方提交,我没有推到stage/master

git log stage/master... --graph --decorate --cherry --name-status 
  • --decorate - 在提交旁边显示标签和分支名称
  • --cherry - 显示“=“而不是”*“。

什么是对称差,在提交的期限,这两者之间:

git log ...stage/master --cherry-pick --left-right --name-status 
  • --left-right - 显示“<”和“>”的承诺,以指示是否提交由左...,或右边。

也要看:git-log