原创 git合并分支流程
git 合并分支
情景:
现有两个分支:
master 主分支,已经上线
dev 开发分支
因为master分支有一些上线的配置,所以需要将master合并到dev上
然后测试无误后,再将dev分支合并回master
详情如下:
# 查看分支信息
$ git branch
* dev
master
# 切换到master
$ git checkout master
# 查看标签信息
$ git tag -l
v1.0
# 添加版本提交记录
$ git add tag_info.txt
$ git commit -m 'add tag for version'
$ git push origin master
# 添加标签
$ git tag -a v1.1 -m "version yyyy.mm.dd"
# 推送标签
$ git push origin master v1.1
# 查看标签信息
$ git tag
v1.0
v1.1
# 截止到当前步骤,已经将master做了commit备份和tag备份
# 先拉取
$ git pull
# 切换到dev分支
$ git checkout dev
# 将master分支合并到dev分支上
$ git merge master
# 如果
Auto-merging cons/urls.py
Auto-merging Project_test/settings.py
CONFLICT (content): Merge conflict in Project_test/settings.py
Automatic merge failed; fix conflicts and then commit the result.
# 不要慌,先执行下STATUS,看下情况
$ git status
On branch dev
Your branch is up to date with 'origin/dev'.
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Changes to be committed:
modified: cons/urls.py
modified: cons/views.py
...
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: Project_test/settings.py
# 重点来了,绿色的忽略,红色的最后一句,both modified ,意思是两个分支这个文件都修改,git也不知道要用哪个分支上的了
# 所以合并失败,也给你了提示
# 打开该文件,找到一堆<<<的地方如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my_db',
'USER': 'root',
<<<<<<< HEAD
'PASSWORD': '123456',
'HOST': '192.168.1.1',
'PORT': '3306',
=======
'PASSWORD': '123456_Server',
#'HOST': 'localhost',
'HOST': '192.168.16.25',
'PORT': '3307',
>>>>>>> master
}
}
# 看这个错误是什么意思
<<<<<<< HEAD # 此行表示当前分支开始
======= 在此行之前HEAD之后的内容表示当前分支修改的代码
>>>>>>> master 在此行之前 === 之后的内容表示master分支修改的代码
# 这个看懂之后就明白了,原来是master分支上的数据配置和dev分支的数据库配置冲突了
# 将此处处理好之后,添加
$ git add Project_test/settings.py
$ git add .
# 提交合并信息
$ git commit -m 'fix merge conflict'
# 推送
$ git push origin dev
# 截至到当前步骤,已经将master 分支内容合并到dev分支上了
# 下一步需要将dev的代码合并会master分支(前提是已经测试通过)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
# 拉取一下
$ git pull
# 开始合并至master
$ git merge dev
# 如果足够幸运,你不会出现冲突,如果你十分幸运,又出现了冲突,参照上方冲突的解决方式
# 然后看一下状态
$ git status
On branch master
Your branch is ahead of 'origin/master' by 4 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
# 然后别忘了最后一步,将合并过来的代码推送的远程!!!
$ git push origin master
# 至此合并分支的流程结束