最近由于项目的需要,我需要负责整个项目的托管,其中涉及到很多Git相关的命令,所以就将之前用到的git相关的命令做了一个总结和归纳。由于开发环境是Linux,所以我接下来的操作命令均针对Linux环境。

git是一个开源的分布式的版本控制系统,主要用于项目的管理。

分布式:git使用分布式管理。即每个节点关系平等,都保存完整代码,节点之间相互推送或者下载代码。

集中式:有明确的中央服务器统一管理代码,每个节点都将代码上传中央服务器或者从中央服务器下载代码。

一、git安装准备与配置

1、git安装

$ sudo apt-get install git
$ git --version 查看当前git版本

2、git的基本配置

2.1、系统中所有用户均使用的配置

命令:sudo git config --system
配置文件:/etc/gitconfig
e.g. 配置用户名
cassie@com:~$ sudo git config --system user.name Cassie
cassie@com:~$ cat /etc/gitconfig
[user]
name = Cassie

2.2、当前用户的所有项目均使用的配置

命令:git config --global
配置文件:~/.gitconfig
e.g. 配置用户邮箱
cassie@com:~$ git config --global user.email cassie@qq.com
cassie@com:~$ cat ~/.gitconfig
[user]
email = cassie@qq.com
name = 0513Cassie

2.3、只在当前项目中使用的配置

命令:git config (命令只要在git项目文件夹中执行)
配置文件:project/.git/config e.g.配置编译器
git config core.editor vscode

二、git操作

下面这种图是我在网上看到的一张关于git操作总结的一张图,下面我将按照这张图片进行一个Git相关命令行的操作总结。

![](https://user-gold-cdn.xitu.io/2018/11/2/166d3a92f4930bda?w=554&h=157&f=png&s=61714)

首先,对上图的几个概念进行讲解一下:
- 工作区(workspace):通过自己的主机操作的git目录。
- 暂存区(index):用来记录工作行为的,即所有的操作git的记录,作为一个暂时保存。
- 本地仓库(Repository):本地用来备份同步工作区内容的区域。
- 远程仓库(Remote):其他主机的git。

2.1、工作区、缓存区、本地仓库之间数据操作

初始化仓库

$ mkdir gittest
$ cd gittest
$ git init

查看工作分支的状态

$ git status
* 当工作区和仓库没有任何差异的时候不会有任何提示
* 默认工作分支为master,可以通过创建新的分支进行切换

文件提交到暂存区

$ git add [file]
$ git add * 全部提交
* 可以一次提交多个内容,中间用空格隔开
* 提交的内容可以是文件也可以是文件夹

删除暂存区的记录

删除内容为文件:
$ git rm --cached 文件名称
删除内容为文件夹:
$ git rm --cached 文件夹名称 -r

将暂存区记录的修改内容同步到本地仓库

$ git commit -m "message"

查看提交日志

$ git log
$ git log --pretty=online 日志单行显示

2.2、工作区操作

查看工作区文件和本地仓库的差别
$ git diff [file] 放弃工作区的修改
$ git checkout -- [file] 恢复本地仓库文件到工作区
$ git checkout [file]

2.3、文件移动

删除工作区文件并提交到暂存记录
$ git rm [file] 移动工作区文件并提交到暂存区
$ git mv file dir

2.4、版本控制命令

回到之前的版本
$ git reset --hard HEAD^
* HEAD后面有几个^表示回到之前的几个版本 通过commit_id回到指定的版本
$ git reset --hard commit_id 查看操作日志
$ git relog
* 获取到操作记录后可以根据commit_id去往比较新的版本

2.5、标签管理(属于本地仓库的操作)

创建标签
$ git tag v1.
*默认会在最新的commit_id 查看标签
git tag 查看所有标签
git show v2. 查看某个标签的具体信息 在某个指定的commit_id处打标签
$ git tag v1. [commit_id] 恢复标签时的状态
$ git reset --hard v1. 删除标签
git tag -d v2.

3、常见问题

3.1、git reset --hard commit_id 误操作如何回到之前的版本

注意git log 命令是查看提交日志,所以如果我们进行上面的回到之前的版本在git log里面是无法查看commit_id的,这时候我们就需要使用 git reflog命令。

注意:git reflog命令是查看操作日志的,在这里我们可以查到所以操作的详细信息,

拿到commit_id 之后,通过git reset --hard commit_id这个命令回到指定版本即可

第一篇:Git操作详解的更多相关文章

  1. 入木三分学网络第一篇--VRRP协议详解第一篇(转)

    因为keepalived使用了VRRP协议,所有有必要熟悉一下. 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是解决局域网中配置静态网关时,静 ...

  2. git操作详解

    前言:一般公司git的master主干与线上代码保持一致,在使用git的时候,偶尔会发生一些莫名其妙的事情,很容易导致运营事故.so- 总结一下经常使用的git命令以及git的一些小坑,方便日后查阅 ...

  3. web运维第一篇:nginx配置文件详解笔记

    #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | ...

  4. Python操作Mysql数据库进阶篇——查询操作详解(一)

    前面我们已经介绍了在Python3.x中如何连接一个Mysql数据库,以及怎么样对这个数据库创建一个表,增删改查表里的数据.想必大家对Mysql数据库和简单的sql语句有了一定的了解,其实sql语句博 ...

  5. 爬虫第一篇:爬虫详解之urllib.request模块

    我将urllib.request 的GET请求和POST请求两种方法做了总结 GET请求 GET请求爬取: import urllib.request import urllib.parse head ...

  6. Git远程操作详解(转)

    转自:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git远程操作详解   Git是目前最流行的版本管理系统,学会Git几乎成了开发者的 ...

  7. 转载: GIt远程操作详解

    Git远程操作详解   作者: 阮一峰 日期: 2014年6月12日 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介 ...

  8. Git应用详解第二讲:Git删除、修改、撤销操作

    前言 前情提要:Git应用详解第一讲:Git分区,配置与日志 在第一讲中我们对Git进行了简单的入门介绍,相信聪明的你已经了解Git的基本使用了. 这一讲我们来进一步深入学习Git应用,着重介绍Git ...

  9. Git应用详解第三讲:本地分支的重要操作

    前言 前情提要:Git应用详解第二讲:Git删除.修改.撤销操作 分支是git最核心的操作之一,了解分支的基本操作能够大大提高项目开发的效率.这一讲就来介绍一些分支的常见操作及其基本原理. 一.分支概 ...

随机推荐

  1. JS-以鼠标位置为中心的滑轮放大功能demo1

    以鼠标位置为中心的滑轮放大功能demo1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...

  2. 【MIG专项测试组】如何准确评测Android应用的流畅度?

    转自 腾讯Bugly 叶方正,2008年加入腾讯,就职于无线研发部[专项测试组].曾经负责多个产品的性能优化工作,积累大量的移动终端平台优化以及评测经验. 怎样获取SM值? 前文我们分析了通过测量应用 ...

  3. /var/log目录下的Linux日志文件功能详解_转

    摘自:http://www.niaoyun.com/help/application/386.html 学习linux应该知道日志文件的所在位置以及它们包含的内容,在系统运行正常的情况下学习了解这些不 ...

  4. jsonp 小结

    JSONP是JSON with Padding的略称. 它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实 ...

  5. [转]linux terminal中使用proxy

    转自:http://www.cnblogs.com/JoJosBizarreAdventure/p/5892383.html 在linux terminal中使用代理 方法一: terminal中输入 ...

  6. Office Web Apps 2013对文档的精细定位

    在一般情况下,我们使用Office Web Apps查看文档都是从第一页开始查看,不过在SharePoint搜索中,我们看到这样的结果: 这是2013搜索的一个新特性,可以深入定位到文档内部,支持PP ...

  7. SuperAgent使用文档

    SuperAgent是一个轻量级.灵活的.易读的.低学习曲线的客户端请求代理模块,使用在NodeJS环境中.官方文档:http://visionmedia.github.io/superagent 简 ...

  8. iOS解决导航引起视图高度问题

    经过导航栏跨越的坑,总结出有两种方法可以无痕解决(前提>=iOS7版本)(TabBar与导航栏类似) 1.通过设置导航栏的透明度实现(这种方式的控制器view的起始坐标是充(0,64)开始的) ...

  9. 【python】-- 元组、字典

    元组 元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表 用途:一般情况下用于自己写的程序能存下数据,但是又希望这些数据不会被改变,比如:数据库连接信息等 1.访问元 ...

  10. Python读属性文件

    # coding:utf-8 class Properties: def __init__(self, file_name): self.file_name = file_name self.prop ...