我有我的master
分支机构,还有一个develop
要进行一些更改的分支机构。我需要合并从master
到的更改develop
,但最终将合并所有从develop
到的更改master
。我想到了两个不同的工作流程:
git pull origin master
进入develop
分支git merge master
进入develop
分支
最好的方法是哪种,为什么?
git pull
= git fetch
+git merge FETCH_HEAD
我有我的master
分支机构,还有一个develop
要进行一些更改的分支机构。我需要合并从master
到的更改develop
,但最终将合并所有从develop
到的更改master
。我想到了两个不同的工作流程:
git pull origin master
进入develop
分支git merge master
进入develop
分支最好的方法是哪种,为什么?
git pull
= git fetch
+git merge FETCH_HEAD
Answers:
变基要小心。如果您要与任何人共享您的开发分支,那么变基可能会使事情变得一团糟。Rebase仅对您自己的本地分支机构有用。
凭经验,如果您已将分支推至原点,请不要使用rebase。而是使用合并。
git push origin rebasedBranch --force
并进行私人回购是否安全?唯一的用户是我自己。
此工作流程最适合我:
git checkout -b develop
...进行一些更改...
...通知主文件已更新...
致力于发展
git checkout master
git pull
...将这些变化带回发展...
git checkout develop
git rebase master
...进行更多更改...
...让他们发展...
...将它们合并为主人...
git checkout master
git pull
git merge develop
git pull
是决赛之前的事情git merge develop
。目的是什么?
git pull --rebase origin master
在您的开发分支上要快一些。
这类事情的最佳方法可能是git rebase
。它允许您将更改从master拖入您的开发分支,但将所有开发工作都保留在master的内容之上(在提交日志中)。新工作完成后,合并回母版非常简单。
develop
不会与其他任何人共享。
develop
共享,将develop
某些修补程序直接推送到时,我们将如何更新master
?我们应该合并git checkout master && git pull --rebase && git checkout develop && git merge master
吗?我对上面投票最高的答案发表了评论,这也详细说明了这一担忧。
如果您不与任何人共享开发分支,那么我将在每次主服务器更新时对其重新设置基础,这样,一旦您将开发合并到主服务器中,您就不会在整个历史中拥有合并提交。在这种情况下的工作流程如下:
> 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
以上步骤将确保您的开发分支始终位于master分支的最新更改之上。一旦完成了develop分支并将其基于master的最新更改,您可以将其合并回去:
> 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
。