git pull后的细节变化
在git pull之后,它的输出给出了变化量的总结。
我怎样才能看到每个或一些文件的详细变化?
更新:
谢谢。 我不知道为什么我不能添加评论或投票答案。 好的,这是我对Jefromi的问题:
-
我怎么知道我是否要拉高手? 我所做的只是“git pull”。
-
master指的是什么,master和HEAD,git的两个默认头之间的区别是什么
-
如何查看特定文件中的细节更改?
-
如何看到最后一次git pull的汇总输出的变化?
-
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
是当前签出分支的名称。 你的确可以在这个上下文中使用HEAD
和HEAD@{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工具,如gitk
或gitg
或git-gui
:
git pull git reset HEAD@{1} gitg (or gitk or whatever tool you like)
最有效的答案给出了使用git工具的最佳方式,但我使用这种方法,因为我可以使用GUI工具来查看更改:P
然后,我会做额外的一步做一个git checkout .
然后再做git pull
,这样我就可以正确地拉和合并了,但我重视在GUI中检查差异的能力,足以处理额外的两个步骤。