GIT(08)分支管理

介绍


  • Git 处理分支的方式可谓是难以置信的轻量
  • 创建新分支这一操作几乎能在瞬间完成
  • 并且在不同分支之间的切换操作也是一样便捷。
  • Git 鼓励在工作流程中频繁地使用分支与合并
  • 分支管理,主要介绍的是开发过程中本地分支的管理

查看分支


列出本地分支 git branch
git branch
  iss53
* master  // 分支前的 * 字符:它代表现在检出的那一个分支(也就是说,当前 HEAD 指针所指向的分支)
  testing
列出所有分支 git branch -a
git branch -a

* bthss_V3.0.4
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/bthss_V3.0.4
  remotes/origin/bthss_V3.0.5
  remotes/origin/dev_Br20190131
  remotes/origin/master
查看每一个分支的最后一次提交 ,加 v 参数 git branch -v
git branch -v
  iss53   93b412c fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 add scott to the author list in the readmes
  • 过滤已合并和未合并的分支
// 已经合并到当前分支的分支
git branch --merged
  iss53
* master

// 没有合并到当前分支的分支
git branch --no-merged
  testing

新建分支


创建分支
git branch <name>
切换分支
git checkout <name>
创建并切换分支 (git checkout -b [name] )
git checkout -b <name> // 带b参数 
// 等价两个语句
git branch <name>
git checkout <name>
  • 注意:首次切下来的分支,是没有追踪到远程分支的。
    • 需要用git pull origin <branch_name> 做关联
$ git branch -v
// 就像这个 远程分支没有,是init by admin
 - bthss_V3.0.4 a3f6aa4 init by admin
  bthss_V3.1.4 a3f6aa4 init by admin
  master       a3f6aa4 [origin/master] init by admin

切换分支


git checkout <name>
git checkout master // 切回主分支
切换本地分支注意事项
  • 在切换分支的时候,当前分支(A)所做的一些还未add或commit/push的文件改动会带到切换后的分支(B)上
  • 在未提交状态的内容再切换回来可能会丢失
  • 切换分支时,带过去的改动 如果碰到分支冲突,会出现错误,切换不了。
git checkout bthss_V3.0.4
error: Your local changes to the following files would be overwritten by checkout:
        bthss-dao/src/main/java/com/xxx/bthss/dao/SettleOrderDao.java
Please commit your changes or stash them before you switch branches.
Aborting
  • 处理方式
    • 尽量add & commit ,再checkout,切换分支时,尽量工作区和缓存区 保持清洁;
      • commit 之后的版本不会影响到被切换的分支;完整切换到另外一个分支; 再切回原来的分支,代码还是保留的
    • 利用git stash 进行隐藏
      • 利用git stash隐藏改动(当前分支上的改动但没有commit的内容);再git status就没有未commit了可以进行切换
git stash 用法
  • 利用git stash 隐藏改动(当前分支上的改动但没有commit的内容);再git status就没有未commit了可以进行切换
git stash
Saved working directory and index state WIP on bthss_V3.0.5: ab48315 RSF 升级 // 隐藏动作的ID为:ab48315
// 在用git status 就没有修改的内容
  • git stash list查看隐藏内容
git stash list
stash@{0}: WIP on bthss_V3.0.5: ab48315 RSF 升级
  • git stash apply或者git stash pop恢复隐藏
git stash apply  // 恢复后,stash内容并不删除,这时候再执行  $ git stash list 命令还会有记录
git stash apply stash@{0} // 如果有多个stash ,需要恢复其中一个 加上stash@{0} ... stash@{1}

git stash drop  // 删除 stash list下的记录

git stash pop  // 恢复并删除

合并


  • 先切换到需要合并的分支
  • 合并需要被合并的分支
git checkout master
git merge <branch_name>

// 结果
Updating f42c576..3a0874c
Fast-forward
 index.html | 2 ++
 1 file changed, 2 insertions(+)
  • 合并遇到冲突
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

//使用 git status 命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件
git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:      index.html

no changes added to commit (use "git add" and/or "git commit -a")
  • 编辑解决冲突
git add // 来将其标记为冲突已解决 ; 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。
  • git merge 完成会生成一条merge 的commit message

删除分支


git branch -d <branch_name>

变基

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值