分类
Git 程序员

Git简明教程

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>可以删除一个远程标签。

多人协作模式

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
  5. 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream-to <branch-name> origin/<branch-name>。
  6. 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  7. 建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name;

总结

个人平时用到的工作流程

  1. 安装:官网下载,然后下一步
  2. 检出:git clone https://username:password@path.git
  3. 切换并绑定远程分支:git checkout -t origin/develop
  4. 拉去最新代码:git pull
  5. 添加更新:git add .
  6. 添加版本: git commit -m “版本说明”
  7. 推送远程:git push

工作中平时就是4567来回走。

说到底,这就是个工具,半天看看就行了。录入命令熟了就行了。遇到问题,具体再翻翻问题再具体翻翻文档。 几乎所有IDE工具都搭载git环境,直接配置好就行,用的也挺好。不过个人感觉没有命令行看着清晰,而且电脑配置一般的话,也会卡。看官您根据自己想法来就行!

参考资料:

  1. 廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
  2. Git小白入门指南:http://rogerdudler.github.io/git-guide/index.zh.html
  3. Git的奇技淫巧:https://github.com/521xueweihan/git-tips

除非注明,否则均为日常生活博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.mezgy.com/124.html

由日常生活

欣赏代码之美!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

有人回复时邮件通知我