例如,我有以下分支:
local remote
master -> origin/master (other users will update)
develop -> origin/develop (other users will update)
到目前为止,master / develop都指向相同的提交
说我只有一个README文件,其内容为 master
1,我关注
$ git checkout develop
$ echo 'develop' >> README && git commit -am 'aaa'
问题:假设没有其他人更改origin/develop
,无论我在哪个分支,git push origin develop
都将本地推develop
送到origin/develop
?
2,在1之后成为:
local remote
master (README: master) -> origin/master (README: master)
develop(README: develop) -> origin/develop (README: develop)
接下来,有人将Origin / develop:README更改为 other develop
local remote
master (README: master) -> origin/master (README: master)
develop(README: develop) -> origin/develop (README: other develop)
所以如果我这样做
A. [在开发分支] $ git pull起源
我的本地发展:README将成为 other develop
B. [在master分支中] $ git pull起源开发
我的本地开发人员:README不会更改,但我的本地管理员:README将变为other develop
???
所以git pull origin develop
,并不意味着拉动origin/develop
当地/发展?
这意味着拉origin/develop
并合并到当前分支中?
那么,当我在其他分支机构时,该如何去origin/develop
本地化develop
呢?
git pull
将本地主更新为origin/master
本地开发为origin/develop
,对吗?无论我在哪个分支,git push origin development都会将本地开发推向origin / develop?
正确的。
那么当我在其他分支机构时,如何将起源/发展带到本地发展呢?
git pull
= git fetch
+git merge
你可以git fetch
-这将获取从遥远而明亮回购所有的变化到本地跟踪的分支(例如origin/master
,origin/develop
)。
但是您不能git merge
进入非当前分支,因为在合并期间可能会出现冲突,除非分支是当前分支,否则您将无法修复它们。
如果您正在使用master,而您想搁置工作,合并develop分支,然后继续在master上工作,则可以执行以下操作:
git stash
git co develop
git pull
<resolve conflicts if any>
git ci
git co master
git stash apply
ci = commit,co = checkout。
git pull会将本地master更新为origin / master,将本地development更新为origin / develop,对吗?
它将获取两者,但仅合并当前分支。
更新:作为@torek对问题的评论的一个例证,这是一个更精确的方案。实际上分支比您绘制的要多:
local repo remote repo
local branch remote tracking branch local branch
master (README: master) origin/master (README: master) <-> master (README: master)
devel (README: devel) origin/devel (README: devel) <-> devel (README: devel)
通常,中心仓库(在此方案中为“ remote repo”)是在没有工作树(git init --bare
)的情况下创建的,因此它没有远程分支,只有本地分支。
现在
git push:
local repo remote repo
local branch remote tracking branch local branch
master (README: master) ---------------------------------> master (README: master)
git获取:
origin/master (README: master) <-- master (README: master)
git合并:
master (README: master)<-origin/master (README: master)
最后,git pull
= git fetch
+git merge
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句