在命令中提供分支名称时,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