在Git拉动之后,其输出给出了变化量的摘要。
如何查看每个或部分文件的详细更改?
好的,这是我对Jefromi的问题:
git pull
的摘要输出中的更改?git diff
和git whatchanged
有什么区别?假设你正在掌握。你可以参考master
以前的master@{1}
的位置(甚至master@{10.minutes.ago}
;参见git-rev-parse man page的指定修订部分),这样你就可以做类似的事情了
git diff master@{1} master
git diff master@{1} master <file>
git diff master@{1} master <dir>
git diff --stat master@{1} master
关于“我怎么知道自己是否掌握”的问题......好吧,使用分支是Git工作流程的重要组成部分。您应该始终了解您所在的分支 - 如果您进行了更改,则需要将它们拉到正确的分支!您可以使用命令git branch
查看所有分支的列表,当前已检出的分支带有星号。当前分支名称也与git status
的输出一起打印。我强烈建议略读命令的手册页 - 这是慢慢学习一些知识的好方法。
你的最后一个问题:HEAD
是当前签出的分支的名称。你确实可以在这个上下文中使用HEAD
和HEAD@{1}
,但是使用分支会更加健壮,因为如果你去看看另一个分支。 HEAD
现在是第二个分支,而HEAD@{1}
现在是master
- 不是你想要的!
为了节省不得不提出这样的很多小问题,你应该看一下Git教程。网上有一百万,例如:
假设你像这样做一个git pull:
$ 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 [email protected]: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://[email protected]:12345/username/somerepo.git
Push URL: ssh://[email protected]: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,但它允许你使用像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中的差异足以处理额外的两个步骤的能力。