在命令中提供分支名称时,Git pull不起作用(Git版本1.7.1)

在命令中提供分支名称时,Git pull不起作用(Git版本1.7.1),git,git-pull,pull,Git,Git Pull,Pull,我不能理解这个案子。为什么仅仅git-pull-origin-develope不执行fast-forward。为什么我需要运行git pull来更新文件 它是一个服务器副本。永远不会进行局部更改。开发人员在develope分支中更新他们的工作,然后在hook的帮助下在服务器上执行pull 以下是终端命令和输出 [dev1st@ds3 rosplay]$ git branch -vv * develop d555ff7 [origin/develop: ahead 2] add comment [

我不能理解这个案子。为什么仅仅
git-pull-origin-develope
不执行
fast-forward
。为什么我需要运行
git pull
来更新文件

它是一个服务器副本。永远不会进行局部更改。开发人员在
develope
分支中更新他们的工作,然后在hook的帮助下在服务器上执行
pull

以下是终端命令和输出

[dev1st@ds3 rosplay]$ git branch -vv
* develop d555ff7 [origin/develop: ahead 2] add comment
[dev1st@ds3 rosplay]$ git pull origin develop
From http://115.112.117.254/php/rosplay
 * branch            develop    -> FETCH_HEAD
Already up-to-date.
[dev1st@ds3 rosplay]$ git status
# On branch develop
# Your branch is ahead of 'origin/develop' by 2 commits.
#
nothing to commit (working directory clean)
[dev1st@ds3 rosplay]$ git pull
From http://115.112.117.254/php/rosplay
   2d3bb3a..d555ff7  develop    -> origin/develop
Already up-to-date.
[dev1st@ds3 rosplay]$ git status
# On branch develop
nothing to commit (working directory clean)
我已正确设置跟踪信息。但仍然仅限于此项目,
git-pull-origin-develope
无法实现
快进

请帮忙

更新(
.git/config
内容)
您有一个较旧版本的git(1.8.4之前)

首先请记住,
git pull
只是
git fetch
,然后是
git merge
,1但是
git pull
将附加参数传递给这两个步骤

当您在没有附加参数的情况下运行
git-pull
时,
git-pull
运行
git-fetch-origin
。2但是,如果添加
origin-develop
,则
git-pull
运行
git-fetch-origin-develop
。最后一个附加参数是refspec。对于
git-fetch
,缺少冒号的refspec
字符告诉fetch进程告诉另一端(服务器上的另一个git进程)将其拥有的名称全部交付,但在较旧版本的git中,只会跳过更新该引用的
源代码/name
版本。(新带过来的项目(如果有)存放在特殊参考
FETCH\u HEAD
中,您可以在运行
git pull
git FETCH
输出中看到该参考。)

这意味着此特定形式的fetch和仅此特定形式的fetch会跳过更新您的
源代码/开发代码

一旦抓取完成,两种形式的
git pull
都会像往常一样进行合并(或重新基址);在这种情况下,两次都无事可做

当您执行
git pull
运行
git fetch
时,您的
origin/develope
没有更新,您的git会立即忘记
origin/develope
可能已经更新。您运行
git status
,您将自己视为“提前两次提交”

当您运行
git pull
时,
git fetch
会更新您的
origin/develope
-请注意,
origin/develope
显示在输出中,而不是
fetch\u HEAD
-您的git现在会记住从
origin
获得的新
develope
。这一次,
git status
显示您和
origin
处于同步状态。这是因为这一次,您允许git更新其对服务器引用的知识(任何获取的
origin/*
分支)

这种特殊的奇怪行为最终被丢弃(在git版本1.8.4中),如果您更新自己的git,
git fetch origin develop
将更新其
origin/develop
的概念,这种奇怪现象将停止。但是现在发生这种情况是因为四个参数
git fetch
表单使用了无冒号refspec


1或之后是
git-rebase
(如果已配置)。在这种情况下,这并不重要


2无论如何,在这种情况下;附加参数可以命名一些存储库,而不是
origin

您有一个较旧版本的git(1.8.4之前)

首先请记住,
git pull
只是
git fetch
,然后是
git merge
,1但是
git pull
将附加参数传递给这两个步骤

当您在没有附加参数的情况下运行
git-pull
时,
git-pull
运行
git-fetch-origin
。2但是,如果添加
origin-develop
,则
git-pull
运行
git-fetch-origin-develop
。最后一个附加参数是refspec。对于
git-fetch
,缺少冒号的refspec
字符告诉fetch进程告诉另一端(服务器上的另一个git进程)将其拥有的名称全部交付,但在较旧版本的git中,只会跳过更新该引用的
源代码/name
版本。(新带过来的项目(如果有)存放在特殊参考
FETCH\u HEAD
中,您可以在运行
git pull
git FETCH
输出中看到该参考。)

这意味着此特定形式的fetch和仅此特定形式的fetch会跳过更新您的
源代码/开发代码

一旦抓取完成,两种形式的
git pull
都会像往常一样进行合并(或重新基址);在这种情况下,两次都无事可做

当您执行
git pull
运行
git fetch
时,您的
origin/develope
没有更新,您的git会立即忘记
origin/develope
可能已经更新。您运行
git status
,您将自己视为“提前两次提交”

当您运行
git pull
时,
git fetch
会更新您的
origin/develope
-请注意,
origin/develope
显示在输出中,而不是
fetch\u HEAD
-您的git现在会记住从
origin
获得的新
develope
。这一次,
git status
显示您和
origin
处于同步状态。这是因为这一次,您允许git更新其对服务器引用的知识(任何获取的
origin/*
分支)

这种特殊的奇怪行为最终被丢弃(在git版本1.8.4中),如果您更新自己的git,
git fetch origin develop
将更新其
origin/develop
的概念,这种奇怪现象将停止。但是它
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = http://username:password@...php/rosplay.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "develop"]
        remote = origin
        merge = refs/heads/develop