我从Master那里拿了一个分支(分支A)并在分支A上做了一些提交,同时,一些提交从另一个分支B合并到Master 问题是:我必须推送我的提交并合并为Master 那么哪种方法最好:
1)我将我的提交推送到远程分支A,然后检查主服务器,然后拉动然后合并主服务器中的分支A并在主服务器中推送合并代码。
2)我检查了master和git pull,然后重新设置了master,然后Checkout分支A并将我的提交推送到分支A然后Checkout Master并合并Master中的分支A并推送Master。
答案 0 :(得分:1)
将branchA
推送到远程:
$ git push origin branchA
结帐至master
,使用master
更新remote master
。将branchA
拉入master
,然后按到远程:
$ git checkout master # master branch
$ git pull origin master # update local master history = remote master history
$ git pull origin branchA # pull 'branchA' changes into 'master' branch
$ git push origin master # update remote master with branchA changes
答案 1 :(得分:1)
你不需要,假设你在一个纯粹的git环境中工作(即,没有"外部"工作流管理,如Github"拉请求"或类似的东西)。
只需在本地合并您的分支,然后推送您想要远程分支的那些分支(即,如果您想长期保留该分支,并且还希望拥有branchA
它可以远程查看后验性。)
git checkout master
git pull origin master # just in case someone else changed it meanwhile...
git merge branchA
git push origin master branchA
说明:
首先,您结帐master
。这意味着您当地的当前" branch为master
,工作目录表示其当前文件树。
接下来,从master
提取origin
。如果其他人同时向远程主机提交了某些内容,这将非常有用。这意味着你现在是最新的。如果你知道没有人能够做到这一点(因为你是唯一一个在其上工作的人),那么你可以跳过这一步。
第三,您将branchA
合并到本地master
。我假设您拥有branchA
,也就是说,branchA
上不可能有更新的origin
,因此无需进一步推/拉。
最后,您将master
和branchA
同时推回origin
。远程(和您的本地)master
现在将包含合并提交,其中包含源自branchA
的所有更改。 branchA
将保持不变并坚持用于历史目的或进一步更改。
有些人从不改变,但总是合并。其他人喜欢改变。
你评论说你知道差异,所以我写的不多。但是对于这个特定的用例(从功能分支更改回master
),合并是正确的操作,并且不应该涉及rebase
。
如果您询问如何将master
更改回branchA
,然后,我们会讨论您是使用rebase
还是{{1 }}