git pull origin master
合并到develop
分支git merge master
合并到develop
分支
这是我最喜欢的工作流程:
git checkout -b develop
......做出一些更改......
......注意主分支已经更新......
......将更改提交到开发分支......
git checkout master
git pull
将这些更改带回到develop分支中...
git checkout develop
git rebase master
进行一些修改...
将它们提交到develop分支中...
将它们合并到master分支中...
git checkout master
git pull
git merge develop
git merge develop
之前执行git pull
。那么这样做的目的是什么? - crdxgit pull --rebase origin master
会更快一些。 - Nathan Lilienthaldevelop
分支不是被多个用户共享的,对吗?或者,如果我们有一个master
和一个develop
分支被多个用户拉取,这个解决方案是否可行?例如,如果每个用户通常将他们的特性分支发送到develop
中,但某些热修复被应用到了master
中,我们该如何将热修复的更改更新到我们的develop
分支上?似乎对其他用户来说,变基共享的develop
分支是个坏消息,因为它需要强制推送变基后的develop
分支。 - modulitos谨慎使用变基(rebase)操作。如果你与别人共享开发分支,变基可能会搞砸一些东西。变基只适用于你自己的本地分支。
通常情况下,如果你已经将分支推送到远程仓库,请勿使用变基操作,应使用合并(merge)操作。
git push origin rebasedBranch --force
是安全的吗?唯一的用户是我自己。 - k0pernikus在这种情况下,最好的方法可能是使用git rebase
。 它允许您将主分支中的更改拉入开发分支,但保留所有开发工作“置于”(提交日志中较晚)主分支的内容之后。 当您的新工作完成时,合并回到主分支就变得非常简单。
develop
与其他贡献者共享,那么当一些热修补直接推到主分支时,我们该如何更新develop
?我们应该执行合并操作,例如git checkout master && git pull --rebase && git checkout develop && git merge master
吗?我在上面得票最高的答案中留下了评论,其中也详细说明了这个问题。 - modulitos如果你不与任何人共享develop分支,那么每当主分支更新时,我会仅对其进行变基操作,这样一来,当你将develop合并回主分支时,你的历史记录中就不会有合并提交了。在这种情况下,工作流程如下:
> git clone git://<remote_repo_path>/ <local_repo>
> cd <local_repo>
> git checkout -b develop
....do a lot of work on develop
....do all the commits
> git pull origin master
> git rebase master develop
> git checkout -b master
> git merge develop
> git branch -d develop
我的经验法则是:
rebase
用于具有相同名称的分支,否则使用merge
。
具有相同名称的示例包括 master
、origin/master
和 otherRemote/master
。
如果 develop
仅存在于本地存储库中,并且始终基于最近的 origin/master
提交,您应该将其称为 master
,并直接在那里工作。这简化了您的生活,并呈现实际情况:您直接在 master
分支上进行开发。
如果 develop
是共享的,则不应将其重新基于 master
,而应使用 --no-ff
合并回去。您正在 develop
上进行开发。 master
和 develop
具有不同的名称,因为我们希望它们成为不同的事物,并保持分离。不要使用 rebase
使它们相同。
我更喜欢使用git pull origin <branch_name>
而不是合并到我要合并的分支。
事实上,我从来没有使用过git merge <branch_name>
。原因是我在开始使用GitLab时遇到了一个错误。
但现在这种方法更加合理...因为git pull
执行以下操作:
(a) git fetch
(b) git merge
两个命令相比于一个命令,使得工作更快捷。
附注:如果你不确定会发生什么,最好使用“拆分”的命令;)
git pull
=git fetch
+git merge FETCH_HEAD
- Yousha Aleayoub