我在 GitHub Repository 中有master
和development
两个分支。如图所示,我正在开发部门进行所有开发工作。
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 来查看可视化的更改树并更好地查看所有逻辑和提交。