协慌网

登录 贡献 社区

将开发分支与母版合并

我在 GitHub Repository 中有masterdevelopment两个分支。如图所示,我正在开发部门进行所有开发工作。

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

现在,我想将development分支上的所有更改合并到master 。我当前的方法是:

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

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

答案

我通常喜欢先将master合并到development这样,如果有任何冲突,我可以在development分支中解决,而我的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标志。通常,这仅在将development合并到master (最后一步)时才有用,因为您可能需要在工作流中多次将master合并到development (第一步)中,并且为它们创建提交节点可能不是很有用。

git merge --no-ff development

就个人而言,我的方法与您的方法相似,当它们重新掌握时,会增加一些分支和一些提交。

我的一位同事不喜欢必须切换太多分支,而是停留在开发分支上,而类似于下面所有从开发分支执行的操作。

git fetch origin master

git merge master

git push origin development:master

第一行确保他自上次更新其本地存储库以来已进行了任何上游提交。

第二个将那些更改(如果有)从主版本拉入开发阶段

第三个将开发分支(现已与 master 完全合并)推向原始 / master。

我的基本工作流程可能有些错误,但这是其主要要点。

对于那些对分支机构一无所知的人,请从底部进行解释。

基本的 master 分支开发逻辑是:您只能在另一个分支上工作,并且仅使用 master 来合并另一个分支。

您开始以这种方式创建一个新分支:

1)在您的 Web 根目录中克隆所需的存储库:

$ cd /var/www
$ git clone [email protected]:user_name/repository_name.git

2)创建一个新分支。它将包含您的主分支存储库的最新文件

$ git branch new_branch

3)将 git 分支更改为 new_branch

$ git checkout new_branch

4)像往常一样进行编码,提交…

$ git add .
$ git commit -m “Initial commit”
$ git push (pushes commits only to “new_branch”)

5)当该分支上的作业完成时,与 “master” 分支合并:

$ git merge master
$ git checkout master (goes to master branch)
$ git merge development (merges files in localhost. Master shouldn’t have any  commits ahead, otherwise there will be a need for pull and merging code by hands!)
$ git push (pushes all “new_branch” commits to both branches - “master” and “new_branch”)

更新:我强烈建议为此使用 GitKraken 来查看可视化的更改树并更好地查看所有逻辑和提交。