从我的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
我想看到这样的信息:
- 已添加/修改/删除这个文件?
- 在哪个分支上文件被添加/修改/删除?
编辑:我不感兴趣看到所有的变化 - 我想要介于两者之间的东西。丰富的总结。
答
您可以使用下面的命令来查看当前的分支和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
您可以使用'--name-status'而不是'--name-only'来获取每个文件的状态(即添加/修改/删除)。 – adrianbanks
或删除它们以查看实际更改 – Udy
问***在哪个分支上发生更改不是在Git中要求的正确问题,因为分支只是可以从提交中应用和删除的便宜标签,并且可能不再存在于您正在使用的任何回购/遥控器中。要问的更好的问题是“哪个***在stage/master中引入了这个变化?” – 2013-08-02 01:23:19