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

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

9193428-83d7b0291a98cf3b.png

1、创建分支

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

//查看所有分支
$ git branch -v

9193428-0e5f15a0a8a0f190.png

2、切换分支

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

//创建并切换分支,git checkout  –b  <分支名>
$ git checkout -b mm

9193428-045062e3fd5b186a.png

9193428-06a49978b489ecd6.png

3、合并分支

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

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

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

//合并 feature_abc 分支
$ git merge feature_abc

9193428-5859f45b97deb121.png

4、冲突

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

5、合并时冲突

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

 

9193428-2db7d726cbf78ebb.png

9193428-73400278047b47c6.png

6、解决冲突

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

 

9193428-bd49afac4adca5ba.png

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

 

9193428-d76d674137267d11.png

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值