Git 从入门到精通(git分支学习)(三)

首先有一个主分支master

创建一个dev分支。从现在开始,对工作区的修改和提交就是针对dev分支了。比如新的一次提交后,dev指针往前移动一步,而master指针不变。

当你在dev上的工作完成了,就可以把dev分支合并到master上,可以直接把master指向dev的当前提交,就完成了合并。合并完成后,甚至可以删除dev分支。

过程:

$git checkout -b dev
$git add a.file
$git commit -m "D"
$git checkout master
$git merge dev //用于合并指定分支到当前分支
$git branch -d dev //删除本地dev分支。

这里涉及到了合并模式:fast-forward:直接把master指向dev的当前提交,所以合并速度很快。但是删除分支后,会丢失分支信息。
git是鼓励大量使用分支的。
查看分支:git branch
创建分支:git branch <分支名>
切换分支:git checkout <分支名>
创建+切换分支:git checkout -b <分支名>
合并某分支到当前分支:git merge <分支名>
删除分支:git branch -d<分支名>

分支冲突:
在上述情况下,假设切换了分支后,master和dev分别各自有了新的提交,在这种情况下,git无法执行“快速合并”,并且可能会有冲突。这种情况下,就要解决冲突在合并。

–no-ff模式
合并分支时,加上上面参数就可以使用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
简单的说:就是–no-ff模式进行了一次新的git commit操作。

bug分支:
场景:软件开发中,bug需要修改。当你在dev分支进行的工作没有提交,但此时有个bug需要你处理时。 git stash命令可以解决这个问题。
他可以把当前工作现场保存起来,等以后恢复现场后继续工作。

假设现在有master dev分支,现在需要在master上修改bug
$git stash //保存现场
$git checkout master
$git checkout -b issue-1
$git add/ git commit
$git checkout master
$git merge -no-ff -m "merge bug fix issue-1"
$git branch -d issue-1
$git checkout dev //回到dev分支干活
$git status //此时会发现工作区是干净的
$git stash list//该命令可以查看被存起来的stash
此时,恢复有2个办法
1$git stash apply//恢复,但是不删除stash内容。你需要git stash drop删除
$git stash pop 恢复的同时把stash的内容也删了。


总结:修改bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,可以先git stash一下,然后去修改bug,修改后,在git stash pop回到现场工作。

多人协作
当你从远程仓库克隆时,实际上GIT自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库默认名称是origin。
要查看远程仓库的信息,用git remote,或者用git remote -v查看更详细的信息:
$git remote -v
origin url(fetch)
origin url(push)
上面显示了你可以抓取和推送的origin地址。如果没有推送权限,就看不到push的地址。

git remote shou <主机名> 可以查看该主机的详细信息。
git remote add <主机名> <网址> 用于添加远程主机。

推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,git就会把该分支推送到远程库对应的远程分支上:
gitpushoriginmasterdev git push origin dev

但是,并不是一定要把本地分支往远程分支推送。

master分支是主分支,因此与远程同步
其它的可以看情况。总之,当你明白每条命令是干嘛的,你就不会犯错。 只要不犯错,其它的可以慢慢来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值