持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
团队协作往往少不了版本控制工具VCS,而现在主流的Version Control System就是Git了。它就像一个哆啦A梦的时光机一样,带我们回到过去的代码版本。在我们代码出现严重bug的时候,可以很方便回退到之前稳定的版本。
初始化仓库
将一个项目的目录纳入版本控制,然后在这个目录下会生成.git文件夹。
git init //初始化一个git仓库客户端
git init --bare //初始化一个git仓库服务端,可以是U盘或服务器的一个空目录
配置账号
// 配置当前项目
git config user.name "你的用户名"
git config user.email "你的邮箱"
// 配置所有项目
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
克隆仓库代码到本地
git clone 仓库地址
git clone --depth 1 仓库地址
--depth 1参数在仓库比较大,可能会拉取超时的时候使用
添加文件到暂缓区
git add 文件名
提交暂缓区的代码
git commit -m "你的代码提交注释"
push代码
git push origin master
pull代码
git pull
查看代码状态
git status
重置代码到指定版本
git reset --hard 代码提交版本hash
git reset --hard HEAD //当前分支最后一次提交
git reset --hard HEAD^ //当前分支上一次提交
git reset --hard HEAD~2 //当前分支上两次提交
折叠多次提交为一次提交
git rebase -i HEAD~2
比如你有两个提交,使用该命令变基到你的第一个提交前面,会自动进入到vim模式,按i进入insert模式,将你的非最后一次提交的pick字样全部改成s,然后按Esc提出insert模式,或Ctrl+C结束insert模式,按:进入到编辑模式,然后按下wq!保存退出。这样编辑器会继续让你合并注释,你把多余的注释删除掉,然后整理一下。接下来,跟之前一样,重复保存退出的操作,代码提交就成功折叠了,这样你再push就只会看到一次提交。
转移代码
git cherry-pick 代码提交版本hash
git cherry-pick 代码提交版本hash1 代码提交版本hash2
使用cherry pick命令,将所有需要的提交加入到当前分支,类似于merge合并,好处是可以一个命令合并一堆特性。它和merge的区别在于merge是针对分支,而cherry pick是针对提交,用法更加灵活。
总结,我们的代码提交尽量要保证细粒度和纯粹度,细粒度指我们要尽可能地让一次提交改动的文件少,纯粹度指我们的提交不要拖泥带水去附带很多其他不相关的改动。这样在版本上线的时候,可以很方便的使用cherry pick选择性的合并已经没有问题的特性。我们一般在master分支上创建一个dev分支,然后所有新功能,即特性feature基于dev分支创建一个新的分支,然后在新的特性分支改好了,把提交压缩成一个最终的提交。合并到dev分支后,删除特性分支。发行版本则基于dev分支创建release分支进行发布。发布的release分支,如果线上出了问题,则直接在该release分支创建一个hotfix分支,在hotfix分支进行修改,修改好后,再合并到release分支和dev分支。