Git pull:确定哪个分支包含更新

时间:2015-07-06 13:24:05

标签: git git-pull

我们看到这样做git pull on branch myfeature git reports:

remote: Counting objects: 78, done.
remote: Compressing objects: 100% (74/74), done.
remote: Total 78 (delta 36), reused 0 (delta 0)
Unpacking objects: 100% (78/78), done.
From ssh://stash.xeon.net:7999/core/myproject
   eb0523c..a796ad2  myfeature     -> origin/myfeature
   63c5668..a11d406  master     -> origin/master
 * [new tag]         myproject-7.9.0.13 -> myproject-7.9.0.13
 * [new tag]         myproject-8.0.0.0 -> myproject-8.0.0.0
Updating eb0523c..a796ad2
Fast-forward
 xxxmyproject/pom.xml       | 2 +-
 app/pom.xml          | 2 +-
 database/pom.xml     | 2 +-
 distribution/pom.xml | 2 +-
 env/pom.xml          | 2 +-
 pom.xml              | 2 +-
 server/pom.xml       | 2 +-
 web/pom.xml          | 2 +-
 xsd/pom.xml          | 2 +-
 9 files changed, 9 insertions(+), 9 deletions(-)

如何确定这两个分支(myfeature或master)中的哪一个包含78(或9)个变化?

另外为什么git会指出Total 78 (delta 36)但是只能看到9 files changed

4 个答案:

答案 0 :(得分:2)

总delta线中的数字是git对象,在this answer

中进行了详细讨论

至于哪个分支更新了9个文件,您将原始myfeature拉到本地功能分支,因为这是活动分支。

Updating eb0523c..a796ad2向您显示正在移动的提交shas,您会注意到它们与myfeature行中列出的shas相同:

eb0523c..a796ad2  myfeature     -> origin/myfeature

答案 1 :(得分:1)

  

为什么你会看到Total 78(delta 36)但是只看到9个文件发生了变化?总/ delta表示什么?

Delta是压缩后保存的KiB空间;我总的来说并不完全确定,但这可能是未经压缩的变化大小。

  

如何确定这两个分支(myfeature或master)中的哪一个包含78(或9)个变化?

完全没有。这不是git的工作方式。 myfeature和master可以完全相同,或完全不相交。你看到的是变化的数量 - 这对你的当地国家的影响在另一张纸上。

一般来说,如果你在分支" A"并且执行拉动,您将通过合并您在拉动时指定或隐式指定的分支来更改该分支。当你结帐分支" B",并且有变化时,git会告诉你类似的东西

Local branch B 91 commits behind remote origin. Use git pull to update.

答案 2 :(得分:1)

在您的提取日志中,您可以获得63c5668..a11d406的主人更新以及myfeature eb0523c..a796ad2的更新,例如diff --stat可以查看从63c5668移至a11d406的更改内容

git diff --stat 63c5668 a11d406

并通过拉动确定哪个文件在哪个分支中发生了变化。

答案 3 :(得分:1)

remote: Counting objects: 78, done.
remote: Compressing objects: 100% (74/74), done.
remote: Total 78 (delta 36), reused 0 (delta 0)
Unpacking objects: 100% (78/78), done.
From ssh://stash.xeon.net:7999/core/myproject
   eb0523c..a796ad2  myfeature     -> origin/myfeature
   63c5668..a11d406  master     -> origin/master
 * [new tag]         myproject-7.9.0.13 -> myproject-7.9.0.13
 * [new tag]         myproject-8.0.0.0 -> myproject-8.0.0.0

这部分输出涉及整个存储库,而不是任何一个分支。

git pull实际上是一个便利命令,相当于运行git fetch,然后将当前分支快速转发到其远程上游(如果有)。上面引用的输出来自git fetch

  

另外,为什么git会指出Total 78 (delta 36)但是只能看到9 files changed

正如我上面所写,前一个数字涉及从远程存储库获取更改的结果(通常有一个,默认情况下名为origin)。该数字实际上是指git对象的数量,即驻留在.git/objects中的文件。 9 files changed涉及当前分支的快进(myfeature)。