正在从我的Git diff命令中查找更多信息

正在从我的Git diff命令中查找更多信息,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

我的基本
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 log ...stage/master --graph --decorate --cherry --name-status
我在本地有哪些提交没有推送到
stage/master

git log stage/master... --graph --decorate --cherry --name-status
$ git diff --name-status ..stage/master
M       practice.txt
A       shazbot.txt
D       foobar.txt
  • --装饰
    --在提交旁边显示标记和分支名称
  • --cherry
    --在合并的提交上显示“
    =
    ”而不是“
    *
就提交而言,这两者之间的对称差异是什么:

git log ...stage/master --cherry-pick --left-right --name-status
  • --left-right
    --在提交上显示“
    ”,以分别指示提交是从
    ..
    的左侧还是从右侧

另请参阅:

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

git log stage/master... --graph --decorate --cherry --name-status
$ 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中,分支只是可以应用并从提交中删除的廉价标签,并且可能不再存在于您正在使用的任何repo/remote中。

您可以使用
--name status
而不是
--name only
来获取每个文件的状态(即添加/修改/删除)。或者删除它们以查看实际的更改在Git中,查看发生更改的分支不是正确的问题,因为分支只是便宜的标签,可以从提交中应用和删除,并且可能不再存在于您正在使用的任何repo/remote中。一个更好的问题是“在
stage/master
中哪个提交引入了此更改?”