用了两年git,rebase原来这样用
Å目录
SourceTree简介
git merge使用教程
git rebase使用教程
一、SourceTree简介
SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等操作。
附上两图
仓库目录:
新版的工作窗口,也是走扁平化风格
基本的操作就不多说了,说下sourcetree新手偶尔会遇到的坑,就是账号设置。
sourcetree=>preferences=>network这里有账户信息,可以多账户。
第一次clone的时候账号密码如果写过可以来这里修改,windows版本好像略坑爹,
可以直接remove账号,重新clone一次。
二、git merge教程
上面有两种merge方式,一种是from log,一种是fetched,笔者一般用后者,可以直接直观和其它分支合并
合并完之后一般会有冲突,怎么处理冲突呢?
1.简单粗暴的方法:
假如我当前分支在develop分支,现在merge jack分支出现了这个冲突,
Resolve Using 'Mine',就是当前这出现冲突的整个文件以develop分支这边的为准,
也就是整个文件处理后就是和develop分支一样。
Resolve Using 'Theirs',就是以jack分支的文件为准。
这样做显然有点low
2.直接处理冲突代码
用subline打开这个冲突的文件,可以看到>>>>分割的两块代码,这两块代码就是冲突的地方咯,下面的就是develop分支的代码,这里我是在jack分支合并develop分支,所以第一块代码就是jack分支的代码,那几个很low的汉字就是我打的,制造冲突。
这样我们就可以根据我们需要来删掉那一部分或者微调,然后把三处>>>删掉,
冲突就处理完了。
三、git rebase教程
以前遇到commit写错总是使用git reset --soft回退到之前的状态,再commit后push -f强推到远程库,能够覆盖掉之前的commit。
现在想想也是很low的做法,git rebase 可以帮你搞定这个问题。
好了,随便提交了几个
工作中,我们可能不小心写错commit,例如上面那个 “测试 git rebase”我写错了,我想改一改,怎么办呢?
1.(打开terminal)
git rebase -i 233d7b3( 这个commit是在我们要修改的commit前一个)
git rebase -i 233d7b3
然后就进入下面这里:
这里就是我们熟悉的vi,按i进入insert模式,
我们是要修改,所以改成
reword 345c70f 测试 git rebase
esc : wq 保存退出
i进入insert模式,修改commit内容,esc : wq 保存退出。
最后害得强push
git push --force
那么我们要如何合并几个commit呢?
和上面类似,我们首先
git rebase -i f290515(我们要合并的commit的前一个)
pick 766f348 dsfdsf
squash 233d7b3 sdfdsf
squash 345c70f 测试 git rebase
我们可以这样修改 将后面两个改成squash,就是合并到第一个上去
如果没有冲突就可以看到这个界面
保存退出
最后git push -f
rebase和merge有什么区别呢
我们可以看下其他人写的
http://www.jianshu.com/p/cca69cb695a6
#相关文章
原来写文章那么费时间,下次再写写git hotfix(分支模型(master - hotfix - develop - feature - release))