系统上线了,但是产品经理又提了新的需求,评估一下工期要两个月,但是同时系统正在上线运行,时不时还要修改bug,如何管理几个版本?

黑猴子的家:Git 实战操练 之 分支

1、创建分支

//创建分支,git  branch  <分支名>  
$ git branch feature_abc

//查看所有分支
$ git branch -v
黑猴子的家:Git 实战操练 之 分支

2、切换分支

//切换分支,git checkout  <分支名>
$ git checkout feature_abc

//创建并切换分支,git checkout  –b  <分支名>
$ git checkout -b mm
黑猴子的家:Git 实战操练 之 分支
黑猴子的家:Git 实战操练 之 分支

3、合并分支

思想:要想合并分支,要在主支上操作,第一步切换回主分支,第二步合并分支,A合并B,就在A分支上操作,ok ?

简单说就是
主干合并分支,在主干上执行 git merge 命令
分支合并主干,在分支上执行 git merge 命令

//切换回主分支
$ git checkout master

//合并 feature_abc 分支
$ git merge feature_abc
黑猴子的家:Git 实战操练 之 分支

4、冲突

冲突一般指同一个文件同一位置的代码,在两种版本合并时版本管理软件无法判断到底应该保留哪个版本,因此会提示该文件发生冲突,需要程序员来手工判断解决冲突。

5、合并时冲突

程序合并时发生冲突,系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。


黑猴子的家:Git 实战操练 之 分支
黑猴子的家:Git 实战操练 之 分支

6、解决冲突

此时通过git diff 可以找到发生冲突的文件及冲突的内容。


黑猴子的家:Git 实战操练 之 分支

然后修改冲突文件的内容,再次git add <file> 和git commit 提交后,后缀MERGING消失,说明冲突解决完成。


黑猴子的家:Git 实战操练 之 分支

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

相关文章:

  • 2021-07-10
  • 2022-01-09
  • 2021-12-07
  • 2022-01-19
  • 2021-08-21
  • 2021-05-08
  • 2021-04-24
  • 2021-04-27
猜你喜欢
  • 2022-01-07
  • 2021-06-10
  • 2021-06-25
  • 2021-05-19
  • 2021-12-23
  • 2021-07-22
  • 2021-06-12
相关资源
相似解决方案