Git是什么?
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
Git有什么特点?简单来说就是:高端大气上档次!
在项目开发过程中,经常有做着做着推翻重来的时候。在没有版本管理工具的时候咋办,自己复制个备份,完美解决。但是多人开发协作,你也做了我也做了,如何合并,合并完出问题想找找谁写的bug,合并完又做错了想回退到上个版本,上上个版本,开发版本、上线版本、测试版本都要搞等等问题都需要的时候,版本管理工具方便解决了这些问题。版本管理工具的核心也是不断保存各种版本,保存各种版本的修改,用算法方便查询及调整需要使用的版本和分支。
版本管理工具:分布式GIT和集中式SVN
版本管理工具中,流行的工具有主要是Git和svn。
svn属于集中式代表,搭建一个服务器,需要开发的时候拉最新代码开始做,做完传上去。
git属于分布式代表,是所有需要使用的机器上都有完整的版本,需要的合并的时候我们同步下就行。但是 实际项目应用中,应该很少这么干的,反而也会有一个服务器存所有代码,推拉代码都是从服务器上。原因嘛,管理体制,网络状况,在岗状态都有可能影响。
Git安装
Git安装还是比较简单的,没什么好配置的。直接搜索git,去git官方下载页面。一般会自动识别你当前电脑版本并自动开始下载的。下载完之后运行,下一步下一步就结束了。
安装完之后,使用cmd命令git –version能正常弹出版本信息,说明安装成功。
然后进行自报家名,配置下姓名和邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
创建版本库
自己用的话,创建文件夹,cmd到对应文件夹下,然后使用git init命令进行创建,根据提示来就行。
git init
公司已经使用线上的gitlab之类的版本建设好之后,直接使用git clone <线上地址>,将线上版本复制到本地,也叫检出、克隆,中间需要输入密码 。复制好之后需要进入对应的目录下。
小技巧:检出远程仓库到本地之后,后续所有推拉代码都需要输入这个密码,如果你对办公室小伙伴放心或者自己有离席锁屏的习惯,克隆的时候线上地址里面直接把密码也填进去,这样推拉代码的时候刷刷的。格式:
git clone
username:password@path.git
基本操作
在文件夹下面进行开发。之后开始进行各种编辑完成之后进行git操作
git add readme.txt //这个命令是把要提交的文件添加到版本库里面去做提交的准备,可以多次使用
git rm readme.txt //删除文件
git commit -m ‘Your explain’ //这个命令把你前面准备好的文件进行提交
git status //查看当前git的状态,那些文件修改了,那些文件准备好了。用于随时掌握工作状态
git reset –hard HEAD^ //向前回退到上一个版本,HEAD~数字表示向上几个版本,也可以用 commit_id值来确定。
git log //用于查看提交历史,确定回退版本使用
git reflog //查看所有提交的历史
git checkout — file //丢弃工作区的修改
git reset HEAD <file> //回退场景1
分支操作
git branch //查看分支
git branch <分支名称> //创建分支
git checkout <分支名称> //切换分支
git checkout -b <name> //创建并且切换分支,注意与丢弃工作区修改命令
git merge <name> //合并某分支到当前分支
git branch -d <name> //删除分支
git log –graph //查看分支合并图。
git stash //暂存工作区,不过需要先让git管理起来才可以。
git stash list //查看当前暂存区的内容
git stash apply //恢复暂存区的内容,stash内容不删除
git stash apply stash@{0} //恢复指定内容
git stash pop //恢复暂存的内容回工作区,并且删除暂存区的内容
git rebase //梳理分支提交历史为直线的操作
创建分支之后,有可能同时进行两个分支的文件修改。结果就会造成同一个文件的不同修改,造成冲突。合并之后,把造成冲突的文件进行修改,重新提交就可以了。
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
远程仓库推送
ssh-keygen -t rsa -C “Your Email” //生成本地的一个秘钥对
git remote //查看远程库的信息 -v 详细。(fetch抓取 push推送)
git remote add <远程> <git地址> //远程关联一个git库
git push -u <远程> <本地> //推送库到远程git库,-u只在第一次使用
git clone <git地址> //克隆一个项目到本地
并不是所有的本地分支都要远程推送的
master是最主要的分支,需要时刻同步的。
dev属于开发分支,开发成员之间要同步
bug分支属于本地修复bug时开的临时分支。除非老板要看你修复了多少bug
feature分支属于新功能开发的分支,取决于是否跟小伙伴在上面开发新功能。
分支完全可以自己藏着玩,是否推送看你自己。
标签
命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令git tag -a <tagname> -m “blablabla…”可以指定标签信息;
命令git tag可以查看所有标签。
命令git push origin <tagname>可以推送一个本地标签;
命令git push origin –tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
多人协作模式
- 首先,可以试图用git push origin <branch-name>推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
- 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream-to <branch-name> origin/<branch-name>。
- 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
- 建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name;
总结
个人平时用到的工作流程
- 安装:官网下载,然后下一步
- 检出:git clone https://username:password@path.git
- 切换并绑定远程分支:git checkout -t origin/develop
- 拉去最新代码:git pull
- 添加更新:git add .
- 添加版本: git commit -m “版本说明”
- 推送远程:git push
工作中平时就是4567来回走。
说到底,这就是个工具,半天看看就行了。录入命令熟了就行了。遇到问题,具体再翻翻问题再具体翻翻文档。 几乎所有IDE工具都搭载git环境,直接配置好就行,用的也挺好。不过个人感觉没有命令行看着清晰,而且电脑配置一般的话,也会卡。看官您根据自己想法来就行!
参考资料:
- 廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
- Git小白入门指南:http://rogerdudler.github.io/git-guide/index.zh.html
- Git的奇技淫巧:https://github.com/521xueweihan/git-tips
除非注明,否则均为日常生活博客原创文章,转载必须以链接形式标明本文链接