我已经从 Master 获取了一个分支(分支 A),并在分支 A 上做了一些提交,与此同时,一些提交从另一个分支 B 合并到主服务器上 问题是:我必须推送我的提交并合并到主 那么哪种方法最好:
1)我将我的提交推送到远程分支 A,然后签出主服务器,然后拉动,然后将分支 A 合并到主分支中,并在主分支中推送合并的代码。
2)我签出主节点和 git 拉
取,重新定位主节点,然后签出分支 A 并将我的提交推送到分支 A,然后签出主节点并将分支 A 合并到主控并推送主控。假设你在纯 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
。这意味着您的本地"当前"分支是master
,并且工作目录表示其当前文件树。
接下来,从origin
中提取master
。如果其他人同时向远程主节点提交某些内容,这将非常有用;这意味着您现在是最新的。如果你知道没有人能做到这一点(因为你是唯一一个在做这件事的人),那么你可以跳过这一步。
第三,您将branchA
合并到本地master
中。我假设您拥有branchA
,也就是说,origin
上不可能有最近的branchA
,因此不需要进一步的推/拉。
最后,您将master
和branchA
都推回origin
。远程(和本地)master
现在将包含合并提交,其中包括源自branchA
的所有更改。branchA
将保持不变,并出于历史目的或进一步的变化而保留。
变基与合并
有些人从不变基,但总是合并。其他人喜欢变基。
你评论说你知道区别,所以我不会写太多。但是对于这个特定的用例(将更改从功能分支恢复到master
),合并是正确的操作,不应该涉及rebase
。
如果您询问如何将更改从master
恢复到branchA
,那么我们将讨论您是使用rebase
还是merge
。
将branchA
推送到远程:
$ git push origin branchA
结帐到master
,用remote master
更新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