git pull后的细节变化

在git pull之后,它的输出给出了变化量的总结。

我怎样才能看到每个或一些文件的详细变化?

更新:

谢谢。 我不知道为什么我不能添加评论或投票答案。 好的,这是我对Jefromi的问题:

  1. 我怎么知道我是否要拉高手? 我所做的只是“git pull”。

  2. master指的是什么,master和HEAD,git的两个默认头之间的区别是什么

  3. 如何查看特定文件中的细节更改?

  4. 如何看到最后一次git pull的汇总输出的变化?

  5. git diff和git what有什么区别?

假设你正在拉高手。 您可以通过master@{1} (甚至master@{10.minutes.ago}参考master的前一个位置,参见git-rev-parse手册页的指定修订部分),以便您可以执行喜欢

  • 查看所有更改: git diff master@{1} master

  • 查看给定文件的更改: git diff master@{1} master <file>

  • 查看给定目录中的所有更改: git diff master@{1} master <dir>

  • 再次查看更改摘要: git diff --stat master@{1} master

[编辑清楚说明每个命令的作用]

至于你的问题“我怎么知道我是否在主人身上”……好吧,使用分支是git工作stream程的一个重要部分。 你应该时刻注意你所在的分支 – 如果你拉动了变化,你想把它们拉到正确的分支! 您可以看到所有分支的列表,带有星号(由当前签出的git branch和命令git branch 。 当前分支名称也随着git status的输出一起打印。 我强烈build议浏览要使用的命令页面,这是慢慢获取一些知识的好方法。

最后一个问题: HEAD是当前签出分支的名称。 你的确可以在这个上下文中使用HEADHEAD@{1} ,但是使用这个分支会更健壮一些,因为如果你去检查另一个分支,那么HEAD就是第二个分支,而HEAD@{1}现在是master – 不是你想要的!

为了节省大量这样的小问题,你应该看看git教程。 网上有一百万,例如:

  • Pro Git书
  • Git Magic
  • 和谷歌450万点击git教程

说你做这样的混帐拉:

 $ git pull remote: Counting objects: 10, done. remote: Compressing objects: 100% (6/6), done. remote: Total 6 (delta 4), reused 0 (delta 0) Unpacking objects: 100% (6/6), done. From git@dev.example.com:reponame a407564..9f52bed branchname -> origin/branchname Updating a407564..9f52bed Fast forward .../folder/filename | 209 ++++++++----- .../folder2/filename2 | 120 +++++++++++--------- 2 files changed, 210 insertions(+), 119 deletions(-) 

您可以通过使用版本号来看到更改内容的差异:

 $ git diff a407564..9f52bed 

1.我怎么知道我是否要拉高手? 我所做的只是“git pull”。

命令本身就像这样工作:

 git pull [options] [<repository> [<refspec>…]] 

每默认引用当前分支。 你可以通过使用来检查你的分支

 git branch -a 

这将列出你的本地和远程分支像这样(增加一个---作为本地和远程之间的分隔,使之更清楚)

 *master foo bar baz --- origin/HEAD -> origin/master origin/deploy origin/foo origin/master origin/bar remote2/foo remote2/baz 

当你再看看一个远程回购,你会看到你指的是:

 git remote show origin 

会列出如下:

 * remote origin Fetch URL: ssh://git@git.example.com:12345/username/somerepo.git Push URL: ssh://git@git.example.com:12345/username/somerepo.git HEAD branch: master Remote branches: foo tracked master tracked Local refs configured for 'git push': foo pushes to foo (up to date) master pushes to master (fast-forwardable) 

所以很容易确定从哪里拉到哪里。

3.如何查看特定文件中的细节更改?

4.如何通过上次的git pull再次看到汇总输出的变化?

最简单和最优雅的方式 (imo)是:

 git diff --stat master@{1}..master --dirstat=cumulative,files 

这会给你提供两个关于你最后拉动当前工作状态的变化的信息块。 示例输出(我添加了---作为--stat--dirstat输出之间的分隔符,以使其更清楚):

  mu-plugins/media_att_count.php | 0 mu-plugins/phpinfo.php | 0 mu-plugins/template_debug.php | 0 themes/dev/archive.php | 0 themes/dev/category.php | 42 ++++++++++++++++++ .../page_templates/foo_template.php | 0 themes/dev/style.css | 0 themes/dev/tag.php | 44 +++++++++++++++++++ themes/dev/taxonomy-post_format.php | 41 +++++++++++++++++ themes/dev/template_parts/bar_template.php | 0 themes/someproject/template_wrappers/loop_foo.php | 51 ++++++++++++++++++++++ --- 11 files changed, 178 insertions(+) 71.3% themes/dev/ 28.6% themes/someproject/template_wrappers/ 100.0% themes/ 27.2% mu-plugins/ 9.0% themes/dev/page_templates/ 9.0% themes/dev/template_parts/ 63.6% themes/dev/ 9.0% themes/someproject/template_wrappers/ 72.7% themes/ 

这种方式是hacky,但它可以让你使用graphics工具,如gitkgitggit-gui

 git pull git reset HEAD@{1} gitg (or gitk or whatever tool you like) 

最有效的答案给出了使用git工具的最佳方式,但我使用这种方法,因为我可以使用GUI工具来查看更改:P

然后,我会做额外的一步做一个git checkout . 然后再做git pull ,这样我就可以正确地拉和合并了,但我重视在GUI中检查差异的能力,足以处理额外的两个步骤。