最近实习的时候,遇到git工具,发现好强大之前没用过,特来学习下,然后自己注册了一个github账号,结合git命令练习一下,git的安装就不说了。

学习资料来源:廖雪峰Git教程

git简介:

git是分布式版本控制系统,相对于集中式版本控制系统有很大的优势,集中式版本控制系统最大的毛病就是必须联网才能工作,并且,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

git常用命令:

git init  :初始化git仓库

git clone 地址:克隆仓库(默认克隆的是仓库master主分支的内容)

git clone -b <指定分支名><远程仓库地址> :克隆指定仓库的指定分支内容

git add file1 file2  :添加文件,可以同时添加多个文件

git commit -m "说明文字"  :提交文件,可以一次提交很多文件

git remote add 简称  URL路劲  :添加远程仓库的路径简称

git remote -v   :列出已有的远程仓库的路径

git branch -a  :列出所有分支

git branch    :查看当前分支

git branch -r  :远程分支

git branch -l  :本地分支

git checkout branchname  :切换分支

git checkout -v branchname :创建并且切换到这个分支

git log  :从近到远查看修改历史

git log --pretty=oneline :简单显示修改历史

git reset --hard HEAD^  :回退到上一个版本

git reset --hard 本版id   :回退或前进到任意版本

git reflog:记录每一次命令,包括本版id号

git checkout -- file :放弃工作区中对文件的修改

git reset HEAD file  :可以把暂存区的修改撤销掉(unstage)

git rm  文件名;git commit -m  :从版本库中删除文件

git checkout --文件名  :其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

git push -u origin master :第一次推送master分支的所有内容内容

git push origin master:推送最新修改

git pull origin master  :从远程仓库代码

git merge  dev  :将dev分支的内容合并到当前分支上来

git branch -d dev :删除dev分支

git stash :储存工作现场

git stash list : 列出存储了哪些工作现场

git stash apply :恢复工作现场,但是工作现场的存储,需要用git stash drop 来删除git checkout -b dev origin/dev

git stash pop :恢复工作现场,同时删除工作现场的存储

git checkout -b dev origin/dev  :创建远程origin 的dev分支到本地

......................

下面介绍几个git的概念:

工作区:

就是你在电脑里能看到的目录,比如我的workspace文件夹就是一个工作区

版本库:

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD,关系如下图

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

使用场景:文件修改回退:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交那就回退到上一版本,不过前提是没有推送到远程库。

git checkout -b dev origin/dev

git工具学习的更多相关文章

  1. 阿里菜鸟知识储备之二——git工具学习

    具体的可以参见这篇博客: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 1,什么 ...

  2. Git版本控制工具学习

    Git代码管理工具学习 分布式管理工具:git 相比较svn它更加的方便,基本上我们的操作都是在本地进行的. Git文件的三种状态:已提交,已修改,以暂存. 已提交:表示文件已经被保存到本地数据库. ...

  3. 代码管理工具之git的学习

    1.代码管理工具git的学习  http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 2.github的使用帮助   https:// ...

  4. Git详解之六 Git工具(转)

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力. 接下来你 ...

  5. Git详解之六:Git工具

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线 ...

  6. 版本控制工具Git工具快速入门-Linux篇

    版本控制工具Git工具快速入门-Linux篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.版本管理系统的介绍 1>.版本管理系统的特点 1.1>.自动生成备份: ...

  7. 版本控制工具Git工具快速入门-Windows篇

    版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...

  8. Git操作学习笔记

    根据廖雪峰老师git教程学习整理 这里需要辨析一下概念.Github是代码托管平台,是协作的工具;而Git是版本控制工具.Git不需要联网,在本机就可以使用 集中式版本控制系统与分布式版本控制系统 S ...

  9. Git&GitHub学习日志

    Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件.作为一个 ...

随机推荐

  1. android ------- TCP/IP

    TCP/IP 是针对因特网的通信协议. 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的通信协议. TCP/IP 指传输控制协议/网际协议 (Transmission Cont ...

  2. pytorch构建自己设计的层

    下面是如何自己构建一个层,分为包含自动反向求导和手动反向求导两种方式,后面会分别构建网络,对比一下结果对不对. -------------------------------------------- ...

  3. 有标号的DAG计数

    看了某神仙博客学了一手,基本的思路就是容斥入度为0的点. n^2做法. F(n)=sigema i (-1)^(i-1)✖ C(n,i)✖ F(i)✖ 2^(j*(i-j)) nlogn做法 对上述式 ...

  4. re正则表达式方法

    目录 1.python正则匹配 1.1 re.search 正则表达式 1.2 re.match() 正则表达式 1.3 re.match与re.search的区别 1.4 检索和替换 1.5 正则表 ...

  5. DRF之接口文档以及Xadmin

    1. 自动生成接口文档 REST framework可以自动帮助我们生成接口文档. 接口文档以网页的方式呈现. 自动接口文档能生成的是继承自APIView及其子类的视图. 1.1. 安装依赖 REST ...

  6. JQ 实现监测input中值的变化并绑定到另个input

                    $('#input').bind('input propertychange', function () {                     $('#myDiv ...

  7. php + mysql 分布式事务

    事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元: 事务应该具有4个属性:原子性.一致性.隔离性.持续性 原子性(atomicity).一个事务是一个不可分割的工作单 ...

  8. SpringBoot配置多数据源时遇到的问题

    SpringBoot配置多数据源 参考代码:Spring Boot 1.5.8.RELEASE同时配置Oracle和MySQL 原作者用的是1.5.8版本的SpringBoot,在升级到2.0.*之后 ...

  9. E - Let's Go Rolling!

    题目描述:数轴上有nn个质点,第ii个质点的坐标为xixi,花费为cici,现在要选择其中一些点固定,代价为这些点的花费,固定的点不动,不固定的点会向左移动直至遇到固定的点,代价是这两点的距离,如果左 ...

  10. 记录一下ES6扩展运算符(三点运算符)...的用法

    ...运算符用于操作数组,有两种层面 1. 第一个叫做 展开运算符(spread operator),作用是和字面意思一样,就是把东西展开.可以用在array和object上都行. 比如: let a ...