Git 在命令中提供分支名称时 pull not 不起作用(git 版本 1.7.1)
Git pull not does not work when providing branch name in the command (git version 1.7.1)
我无法理解这个案例。为什么 git pull origin develop
不执行 fast-forward
。为什么我需要 运行 git pull
来更新文件。
这是一个服务器副本。永远不会进行本地更改。开发人员在 develop
分支中更新他们的工作,然后在服务器上借助 hooks 执行 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 develop
不会执行 fast-forward
.
请帮忙。
更新(.git/config
内容)
[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
您使用的是旧版本 git(1.8.4 之前的版本)。
首先请记住 git pull
只是 git fetch
后跟 git merge
、1 但 git pull
将附加参数传递给这些两步。
当你 运行 git pull
没有 附加参数时,git pull
运行s git fetch origin
.2 如果加上origin develop
,然而,git pull
运行s git fetch origin develop
。最后一个附加参数是 refspec。对于 git fetch
,缺少冒号 :
字符的 refspec 告诉获取进程告诉另一端(服务器上的另一个 git 进程)传送它为名称,但随后——仅在 git 的旧版本中——skip 更新 origin/<em>name</em>
该参考的版本。 (新带来的项目,如果有的话,存放在特殊参考 FETCH_HEAD
中,您在 git fetch
的输出中看到 git pull
运行s。)
这意味着这种特殊形式的获取,并且仅这种特殊形式,跳过 正在更新您的 origin/develop
.
获取完成后,git pull
的两种形式都会像往常一样进行合并(或变基);在这种情况下,两次都无事可做。
当您 git pull
运行 git fetch
使得您的 origin/develop
未 更新时,您的 git 立即忘记 origin/develop
可能已经更新。你 运行 git status
并且你认为自己是 "two commits ahead".
当您 运行 git pull
这样 git fetch
确实 更新您的 origin/develop
— 请注意 origin/develop
出现在输出中,而不是 FETCH_HEAD
——您的 git 现在会记住它从 origin
获得的新 develop
。这一次,git status
显示您和 origin
同步。这是因为这一次,您允许 git 更新其对服务器引用的了解(任何获取的 origin/*
分支)。
这种特殊的怪异行为最终被丢弃(在 git 版本 1.8.4 中),如果您更新自己的 git,git fetch origin develop
将更新其对 [=25 的想法=] 并且这种奇怪现象将停止。但它现在发生了,因为四参数 git fetch
形式使用了无冒号 refspec。
1或者如果这样配置的话后面跟着git rebase
。对于这种情况,没关系。
2这样的话,反正;附加参数可以命名一些存储库而不是 origin
.
我无法理解这个案例。为什么 git pull origin develop
不执行 fast-forward
。为什么我需要 运行 git pull
来更新文件。
这是一个服务器副本。永远不会进行本地更改。开发人员在 develop
分支中更新他们的工作,然后在服务器上借助 hooks 执行 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 develop
不会执行 fast-forward
.
请帮忙。
更新(.git/config
内容)
[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
您使用的是旧版本 git(1.8.4 之前的版本)。
首先请记住 git pull
只是 git fetch
后跟 git merge
、1 但 git pull
将附加参数传递给这些两步。
当你 运行 git pull
没有 附加参数时,git pull
运行s git fetch origin
.2 如果加上origin develop
,然而,git pull
运行s git fetch origin develop
。最后一个附加参数是 refspec。对于 git fetch
,缺少冒号 :
字符的 refspec 告诉获取进程告诉另一端(服务器上的另一个 git 进程)传送它为名称,但随后——仅在 git 的旧版本中——skip 更新 origin/<em>name</em>
该参考的版本。 (新带来的项目,如果有的话,存放在特殊参考 FETCH_HEAD
中,您在 git fetch
的输出中看到 git pull
运行s。)
这意味着这种特殊形式的获取,并且仅这种特殊形式,跳过 正在更新您的 origin/develop
.
获取完成后,git pull
的两种形式都会像往常一样进行合并(或变基);在这种情况下,两次都无事可做。
当您 git pull
运行 git fetch
使得您的 origin/develop
未 更新时,您的 git 立即忘记 origin/develop
可能已经更新。你 运行 git status
并且你认为自己是 "two commits ahead".
当您 运行 git pull
这样 git fetch
确实 更新您的 origin/develop
— 请注意 origin/develop
出现在输出中,而不是 FETCH_HEAD
——您的 git 现在会记住它从 origin
获得的新 develop
。这一次,git status
显示您和 origin
同步。这是因为这一次,您允许 git 更新其对服务器引用的了解(任何获取的 origin/*
分支)。
这种特殊的怪异行为最终被丢弃(在 git 版本 1.8.4 中),如果您更新自己的 git,git fetch origin develop
将更新其对 [=25 的想法=] 并且这种奇怪现象将停止。但它现在发生了,因为四参数 git fetch
形式使用了无冒号 refspec。
1或者如果这样配置的话后面跟着git rebase
。对于这种情况,没关系。
2这样的话,反正;附加参数可以命名一些存储库而不是 origin
.