系统上线了,但是产品经理又提了新的需求,评估一下工期要两个月,但是同时系统正在上线运行,时不时还要修改bug,如何管理几个版本?
1、创建分支
//创建分支,git branch <分支名>
$ git branch feature_abc
//查看所有分支
$ git branch -v
2、切换分支
//切换分支,git checkout <分支名>
$ git checkout feature_abc
//创建并切换分支,git checkout –b <分支名>
$ git checkout -b mm
3、合并分支
思想:要想合并分支,要在主支上操作,第一步切换回主分支,第二步合并分支,A合并B,就在A分支上操作,ok ?
简单说就是
主干合并分支,在主干上执行 git merge 命令
分支合并主干,在分支上执行 git merge 命令
//切换回主分支
$ git checkout master
//合并 feature_abc 分支
$ git merge feature_abc
4、冲突
冲突一般指同一个文件同一位置的代码,在两种版本合并时版本管理软件无法判断到底应该保留哪个版本,因此会提示该文件发生冲突,需要程序员来手工判断解决冲突。
5、合并时冲突
程序合并时发生冲突,系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。
6、解决冲突
此时通过git diff 可以找到发生冲突的文件及冲突的内容。
然后修改冲突文件的内容,再次git add <file> 和git commit 提交后,后缀MERGING消失,说明冲突解决完成。
7、解决冲突三板斧
(1)修改 merge 后,产生冲突的文件,可以先通过git diff 命令查看 冲突内容
(2)重新对修改后的文件,添加到暂存区 git add
(3)提交到本地库 git commit -m "提交操作描述"
8、分支命令汇总
//创建分支
$ git branch mybranch
//切换分支
$ git checkout mybranch
//创建并切换分支
$ git checkout -b mybranch
//更新master主线上的东西到该分支上
$ git rebase master
//切换到master分支
$ git checkout master
//更新mybranch分支上的东西到master上
$ git rebase mybranch
//提交
$ git commit -a
//对最近一次commit的进行修改
$ git commit -a –amend
//commit之后,如果想撤销最近一次提交(即退回到上一次版本)并本地保留代码
$ git reset HEAD^
//切换分支
$ git checkout master
//(merge from mybranch)
$ git merge mybranch
//删除分支
$ git branch -d mybranch
//强制删除分支
$ git branch -D mybranch
//列出所有分支
$ git branch
//查看各个分支最后一次提交
$ git branch -v
//查看哪些分支合并入当前分支
$ git branch --merged
//查看哪些分支未合并入当前分支
$ git branch --no-merged
//更新远程库到本地
$ git fetch origin
//推送分支
$ git push origin mybranch
//取远程分支合并到本地
$ git merge origin/mybranch
//取远程分支并分化一个新分支
$ git checkout -b mybranch origin/mybranch
//删除远程分支
$ git push origin :mybranch
//rebase
$ git checkout mybranch
$ git rebase master (rebase from master)
//举例
$ git checkout server
$ git rebase –onto master server client
$ git checkout master
$ git merge client (fostforward)
$ git rebase master server (checkout sever)
$ git merge server
$ git branch -d client
$ git branch -d server