Git维护历史简化

时间:2018-04-10 11:37:43

标签: git git-merge git-rebase

我从Master那里拿了一个分支(分支A)并在分支A上做了一些提交,同时,一些提交从另一个分支B合并到Master 问题是:我必须推送我的提交并合并为Master 那么哪种方法最好:

1)我将我的提交推送到远程分支A,然后检查主服务器,然后拉动然后合并主服务器中的分支A并在主服务器中推送合并代码。

2)我检查了master和git pull,然后重新设置了master,然后Checkout分支A并将我的提交推送到分支A然后Checkout Master并合并Master中的分支A并推送Master。

2 个答案:

答案 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,因此无需进一步推/拉。

最后,您将masterbranchA同时推回origin。远程(和您的本地)master现在将包含合并提交,其中包含源自branchA的所有更改。 branchA将保持不变并坚持用于历史目的或进一步更改。

关于rebase vs. merge

有些人从不改变,但总是合并。其他人喜欢改变。

你评论说你知道差异,所以我写的不多。但是对于这个特定的用例(从功能分支更改回master),合并是正确的操作,并且不应该涉及rebase

如果您询问如何将master更改回branchA然后,我们会讨论您是使用rebase还是{{1 }}