我有两个分支,即master和开发在一个GitHub库。我正在做我所有的开发在开发分支显示。

git branch development
git add *
git commit -m "My initial commit message"
git push -u origin development

现在我想将开发分支上的所有更改合并到主分支中。我目前的方法是:

git checkout master 
git merge development
git push -u origin master 

请让我知道我所遵循的程序是否正确。


当前回答

1)在分支开发上,使用以下命令检查git状态:

git status

不应该有未提交的代码。如果是,将你的代码推到开发分支:

git add *

git commit -m "My initial commit message"

git push origin Development

2)在Development分支中,运行以下两条命令:

git branch -f master HEAD

git push -f origin master

它将把您的开发分支代码推到主分支。

其他回答

1. //pull the latest changes of current development branch if any        
git pull (current development branch)

2. //switch to master branch
git checkout master 

3. //pull all the changes if any
git pull

4. //Now merge development into master    
git merge development

5. //push the master branch
git push origin master

我通常都是这么做的。首先,确保您已经准备好将更改合并到master中。

通过git获取,检查开发是否与远程服务器的最新更改保持一致 一旦获取完成,git签出主。 通过执行git pull,确保主分支有最新的更新 一旦准备工作完成,就可以开始使用git合并开发进行合并了 用git Push -u origin master进行修改,就完成了。

您可以在本文中找到更多关于git合并的信息。

基于@Sailesh和@DavidCulp:

(on branch development)
$ git fetch origin master
$ git merge FETCH_HEAD
(resolve any merge conflicts if there are any)
$ git checkout master
$ git merge --no-ff development (there won't be any conflicts now)

第一个命令将确保所有上游提交都已提交到远程主服务器,而Sailesh的响应不会发生。

第二个将执行合并并创建冲突,然后您可以解决这些冲突。

这样做之后,您终于可以签出master以切换到master。

然后将开发分支合并到本地主服务器上。no-ff标志将在master中创建一个提交节点,以便整个合并是可跟踪的。

在此之后,您可以提交并推动您的合并。

这个过程将确保人们可以看到从开发到master的合并提交,然后如果他们去查看开发分支,他们可以看到您在开发过程中对该分支所做的各个提交。

如果您想添加在开发分支中所做事情的摘要,您可以选择在推送合并提交之前修改它。

编辑:我最初的答案建议git合并主没有做任何事情,最好是做git合并FETCH_HEAD后获取的起源/主

我认为最简单的解决办法是

git checkout master
git remote update
git merge origin/Develop -X theirs
git commit -m commit -m "New release"
git push --recurse-submodules=check --progress "origin" refs/heads/Master

这也保存了所有正在使用的分支的历史

我通常喜欢先将master合并到开发中,这样如果有任何冲突,我可以在开发分支本身解决,并且master保持干净。

(on branch development)$ git merge master
(resolve any merge conflicts if there are any)
git checkout master
git merge development (there won't be any conflicts now)

这两种方法没有太大的区别,但我注意到,有时在合并它们之后,我还不想将分支合并到master中,或者在合并它们之前还有更多的工作要做,所以我倾向于让master保持不变,直到完成最后的工作。

编辑:来自评论

如果你想跟踪谁在何时进行了合并,你可以在合并时使用——no-ff标志。这通常只在将开发合并到主开发(最后一步)时有用,因为您可能需要在工作流中多次将主开发合并到开发(第一步),并且为这些创建提交节点可能不是很有用。

git merge --no-ff development