Git版本管理--分支管理

本文详细介绍Git中分支的创建、切换、合并及解决冲突的方法,并演示如何通过rebase更新分支及利用stash暂存更改。

一、分支

#查看分支,输出master前带*
$ git log --oneline --graph

#建立分支
$ git branch 分支名(这里举例,分支名为dev)

#删除分支
$ git branch -d 分支名

# 查看当前分支,* 代表了当前的 HEAD 所在的分支
$ git branch 

#把 HEAD 切换到dev 分支,此时dev前带*
$ git checkout dev   

 #直接创建和切换到新建的分支
 $ git checkout -b  dev   

# "-am": add 所有改变 并直接 commit。***文件必须在git管理库中,新文件不能使用***
$ git commit -am "change 3 in dev"  


# 切换至 master 才能把其他分支合并过来,****切换很重要****
$ git checkout master  

# 将 dev merge 到 master 中,确定回到master上(查看:master上带信号)
$ git merge dev
#注意:直接 git merge dev,log 中也不会有分支的图案.采取 --no-ff 这种方式保留 merge 的 commit 信息.
$ git merge --no-ff -m "keep merge info" dev         # 保留 merge 信息
#查看分支         
$ git log --oneline --graph

二、merge 分支冲突
主分支和分支上都有改变,git 发现在 master 和 dev 上的版本是不同的, 所以提示 merge 有冲突. 具体的冲突, 打开 master上的文件就能看到。我们需要手动修改CONFLICT 的部分,然后commint.

$ git commit -am "solve conflict"

三、rebase 分支冲突
!!! 只能在自己的分支中使用 rebase, 和别人共享的部分是不能用 !!!, 如果用了, master 的历史会被 rebase 改变, master 当中别人提交的 内容就被无情地修改掉了。如果你不小心弄错了。 用在 reset 这一节 提到的 reflog 恢复原来的样子。

错误示范:rebase了主分支

$ git rebase dev #主分支基于dev分支进行修改

$ git add demo.txt
$ git rebase --continue

#再来看看 master 的 log: 
$ git log --oneline --graph
# 输出
* c844cb1 change 4 in master    # 这条 commit 原本的id=3d7796e, 所以 master 的历史被修改
* f7d2e3a change 3 in dev       # rebase 过来的 dev commit

四、临时修改 (stash)

$ git checkout dev    #假设现在在 dev 分支上改代码
$ git stash     #将这些改变暂时放一边,没有提交

$ git checkout -b boss    #建立另一个 branch 用来完成老板的任务

#提交任务到master
$ git commit -am "job from boss"
$ git checkout master
$ git merge --no-ff -m "merged boss job" boss #可能有冲突解决,因为boss分支是从dev分支中分出来的,手动在文件中将dev的部分删掉

#提交修改冲突后的文件,查看master的log
$ git commit -am "solve conflict"
$ git log --oneline --graph

#拿回缓存区的文件
$ git checkout dev    
$ git branch -D boss    #任务完成,可以删除boss分支
$ git stash list        # 查看在 stash 中的缓存
$ git stash pop         #拿回缓存区文件

参考视频1
参考视频2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值