我是否正确理解git push和git pull?

佐藤

例如,我有以下分支:

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呢?

  1. git pull将本地主更新为origin/master本地开发为origin/develop,对吗?
安东尼·哈奇金斯

无论我在哪个分支,git push origin development都会将本地开发推向origin / develop?

正确的。

那么当我在其他分支机构时,如何将起源/发展带到本地发展呢?

git pull= git fetch+git merge

你可以git fetch-这将获取从遥远而明亮回购所有的变化到本地跟踪的分支(例如origin/masterorigin/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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章