Git拉动后的细节更改

Git拉动后的细节更改,git,git-pull,Git,Git Pull,在Git拉取之后,它的输出给出了更改量的摘要 如何查看每个或部分文件的详细更改 好的,这是我对杰弗里米的问题: 我怎么知道我是不是在拉主人的车?我所做的一切都是“胡扯” master指向什么?master和HEAD(Git的两个默认头部)之间的区别是什么 如何查看特定文件中的详细更改 我如何再次看到最后一次git pull对摘要输出的更改 git diff和git whatchanged之间有什么区别 假设你在向大师挑战。您可以通过master@{1}(甚至master@{10.minutes.

在Git拉取之后,它的输出给出了更改量的摘要

如何查看每个或部分文件的详细更改

好的,这是我对杰弗里米的问题:

  • 我怎么知道我是不是在拉主人的车?我所做的一切都是“胡扯”

  • master指向什么?master和HEAD(Git的两个默认头部)之间的区别是什么

  • 如何查看特定文件中的详细更改

  • 我如何再次看到最后一次
    git pull
    对摘要输出的更改

  • git diff
    git whatchanged
    之间有什么区别


  • 假设你在向大师挑战。您可以通过
    master@{1}
    (甚至
    master@{10.minutes.ago}
    ;请参阅的“指定修订”部分)参考
    master
    ,以便执行以下操作


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


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


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

    • 再次查看更改摘要:
      gitdiff--statmaster@{1}master

    至于你的问题“我怎么知道我是不是在大师级”。。。嗯,使用分支是Git工作流的一个重要部分。您应该始终了解您所在的分支-如果您拉取了更改,那么您希望将它们拉到正确的分支!使用命令
    git branch
    ,您可以看到所有分支的列表,并在当前签出的分支旁边加上星号。当前分支名称也将与
    git status
    的输出一起打印。我强烈建议浏览要使用的命令手册页——这是慢慢学习一些知识的好方法

    最后一个问题:
    HEAD
    是当前签出分支的名称。在这个上下文中,您确实可以使用
    HEAD
    HEAD@{1}
    ,但是使用分支会更加健壮,因为如果您去签出另一个分支
    HEAD
    现在是第二个分支,
    HEAD@{1}
    现在是
    master
    ——不是你想要的

    为了避免问很多像这样的小问题,您可能应该看看Git教程。网络上有一百万,例如:

    • 还有“Git教程”在谷歌上的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 pull [options] [<repository> [<refspec>…]]
    
    您可以使用修订号查看更改内容的差异:

    $ git diff a407564..9f52bed
    

    这种方法有点粗糙,但它允许您使用图形工具,如
    gitk
    gitg
    gitgui

    git pull
    git reset HEAD@{1}
    gitg (or gitk or whatever tool you like)
    
    投票最多的答案给出了使用git工具的最佳方法,但我使用这种方法是因为我可以使用带有GUI的工具来查看更改:p

    然后我会有一个额外的步骤,执行
    git签出。
    然后再次执行
    git pull
    ,这样我就可以正确地进行拉取和合并,但我重视在GUI中检查差异的能力,足以处理额外的两个步骤

    1.我怎么知道我是不是在拉向大师?我所做的一切都是“胡扯”

    命令本身的工作方式如下:

    $ 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 pull [options] [<repository> [<refspec>…]]
    
    这将列出您的本地和远程分支,例如so(添加了一个
    --
    作为本地和远程之间的分隔符,以使其更加清晰)

    然后,当您查看一份远程回购协议时,您将看到您所指的内容:

    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)是:

    这将为您提供两组关于上一次拉动与当前工作状态之间的更改的信息。示例输出(我添加了一个
    --
    作为
    --stat
    --dirstat
    输出之间的分隔符,以使其更加清晰):


    这比我的解决方案要好:)我知道这很旧,但是。。。应该是另一种方式:
    git diff master{1}master
    ,否则更改显示为“向后”,即插入变为删除等。
    git diff master{1}master
    没有为我工作,而是
    git diff master~1 master
    为我做了工作。@unrealsoul007那么你的情况就不同了。master~1是当前指向的一个master的父提交;你将看到这一承诺的差异。master@{1}是指向的上一个提交master;例如,如果你刚刚拉,那就是在拉之前的master位置,如这里所述。如果它没有这样做,那么你可能已经做了一些其他的事情,以掌握,因为你拉。请尝试
    git reflog master
    了解原因。@Jefromi
    致命:参数“firstDesign”不明确:未知修订或路径不在工作树中。
    我一直收到此错误。虽然git reflog firstDesign有这样的功能。好吧,通过编辑重复添加新问题并不是系统的预期使用方式。您也可以通过查看手册页或尝试一些东西来非常轻松地回答许多问题。例如,
    git diff
    清楚地输出一个diff,而
    git whatchanged
    清楚地输出一个提交信息列表,每个列表包含一个文件更改的列表。可能是因为您的代表性较低。@T.E.D。只需50个代表性意见,15个代表性意见。在我的Ubuntu笔记本电脑上,它有时有效,有时无效。我临时用Centos找到了另一台计算机,并发表了此评论。在这两台电脑上我都使用Firefox。非常奇怪。你可能想去meta看看这是否是一个已知的问题/报告它
    git diff --stat master@{1}..master --dirstat=cumulative,files
    
     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/