一、从远端克隆
创建SSH Key
查看有没有.ssh文件,如果有再次查看该文件下有没有id.rsa和id.rsa.pub两个文件。
其中id.rsa是私钥,id.rsa.pub是公钥
从远程库克隆
git clone
支持两种格式:
ssh://git@git.sankuai.com/...
http://cuihongzhen@git.sankuai.com/...
二、分支管理
1、创建与合并分支
创建一个分支Dev,Git会创建一个指针dev,指向的是master相同的提价,再把HEAD指向dev,就表示当前分支在dev了。
现在对dev分支做了修改和提交,提交后dev指针向前前进一步,而master不动。
dev开发完成,需要将dev分支的代码和内容合并到master上,然后将master指向dev当前的提交。就完成合并。
总之:git的合并就是改改指针,工作区内容不变。
创建和合并分支指令:
git checkout -b dev #创建Dev分支并切换到Dev分支
git checkout -b表示创建和合并,相当于两条操作
git branch dev
git checkout dev #切换分支
git merge dev 用于合并指定分支到当前分支
删除多余的分支
git branch -d dev
2、解决冲突
两个同级别的分支修改相同的内容,提交后会出现冲突。原理示意图:
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,根据修改的文件内容进行手动修改。
需要手动解决冲突,然后重新提价。
提交后可以用git log查看提交的结构图
git log --graph
3、分支管理策略
(1)git的合并有两种方式,一个是默认的git merge操作,其中参数为Fast-forward,另一个是添加一个--no-ff参数。
主要区别:
1)默认合并方式
git merge
参考二(1)中的合并图
2)普通模式的合并
带参数的合并(本质:创建一个分支,自动提交(commit)一下,然后再合并)
git merge --no-ff -m"带参数的合并" dev
指针HEAD一致在master上。
(2)一般情况下master版本比较稳定,只是用来合并代码,而开发只能在Dev上。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
4、bug分支
4.1)在修复bug时,工作区修改的内容还不想提交,此时,需要将工作区的内容进行临时保存。
git stash可以把当前的工作现场给“存储”起来,
$ git stash
Saved working directory and index state WIP on dev: f52c633 add merge
此时工作区就非常干净了,然后再用git status查看。
4.2)查看存储的“工作现场”
$ git stash list
stash@{0}: WIP on dev: f52c633 add merge
4.3)恢复工作现场
两种方式:
1)git stash apply 恢复
恢复后但不删除stash存储的内容,需要使用指令git stash drop 进行删除。
git stash apply
2)git stash pop 恢复
恢复后,同时删除stash存储的内容
5、分支强行删除
git branch -D <name>
6、多人协作
git push origin dev #推送自己的分支
git pull #如果提交一次,需要将远端的分支拉取到本地(远端的分支信息比较自己的新)
如果使用git pull提示no tracing information 说明本地和远端没有建立连接,使用下面指令建立连接:
git branch --set-upstream-to dev origin/dev
附:查看远端的分支信息
git branch -v
7、Rebase
“曲线救国”