混帐拉后的细节变化(Detail change after Git pull)

2019-07-04 06:43发布

一个Git拉后,其输出给出的变化量的摘要。

我怎么能看到每一个或一些细节变化的文件?

好吧,这是我Jefromi问题:

  1. 我怎么知道,如果我是拉掌握? 我所做的一切是“混帐拉”。

  2. 什么大师点,是什么大师和头之间的差别,Git的两个默认的头?

  3. 如何查看特定文件的详细变化?

  4. 我怎么看到最后在总结输出的变化git pull一遍吗?

  5. 有什么区别git diffgit whatchanged

Answer 1:

假设你拉掌握。 你可以参考以前的位置, mastermaster@{1}甚至master@{10.minutes.ago} ;看到的指定修订部分的git-REV-解析手册页 ),这样就可以做的事情喜欢

  • 查看所有的变化: 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是针对当前已签出分支的名称。 您可以确属自用的HEADHEAD@{1}在这种情况下为好,但它更健壮一点用树枝,因为如果你去看看另一个分支。 HEAD现在是第二个分支, HEAD@{1}现在是master -不是你想要的!

为了节省不必问了很多像这样的小问题,你应该看看一个Git教程。 有100万在网络上,例如:

  • 在临Git的书
  • Git的魔术
  • 而在谷歌的450万次点击率的“混帐教程”


Answer 2:

说你做一个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(-)

你可以看到使用的版本号是什么改变了DIFF:

$ git diff a407564..9f52bed


Answer 3:

1.我怎么知道,如果我是拉掌握? 我所做的一切是“混帐拉”。

该命令本身的工作原理是这样的:

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拉在总结输出的变化?

最简单, 最优雅的方式 (IMO)是:

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

这会给你的关于更改的信息两个区块在你的上拉的当前工作状态之间。 示例输出(I加入---作为分频器之间--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/


Answer 4:

这样的一种哈克,但它会允许你使用像图形工具gitkgitggit-gui

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

最upvotes答案给出了使用Git的工具,最好的方式,但我用这个方法,因为我可以然后利用工具,GUI看到的变化:P

然后我不得不做的额外步骤git checkout . 然后做git pull再次让我正常拉和合并,但是我很重视考察在GUI足以应付额外的两个步骤差异的能力。



文章来源: Detail change after Git pull
标签: git git-pull