参考文档:

https://www.liaoxuefeng.com/wiki/896043488029600

https://git-scm.com/docs/git-fsck

一、介绍

Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

集中式      (svn)

分布式(git)

二、安装

如果使用yum安装的话 默认是使用1.8版本的。建议使用更高的版本

yum  install  -y   git
yum list  git

推荐使用编译安装。版本更高。

yum install  -y  curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
wget https://github.com/git/git/archive/v2.21.0.tar.gz
tar -xzvf v2.21.0.tar.gz
cd /opt/git-2.21.0 make prefix=/opt/git all
make prefix=/opt/git install
rm -rf /usr/bin/git
ln -s /opt/git/bin/git /usr/bin/git
git --version

三 、创建版本库

就是创建目录,然后初始化 就可以了 。

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init ## 初始化
Initialized empty Git repository in /Users/michael/learngit/.git/

提交用户信息指令

git config --global  user.name  "rrtest"
git config --global user.emial "rrtest@test.com"
git  config --list # 查看信息

git的4个 区域

新的文件(untracked未被追踪管理的状态)------------>  add  暂存区的文件(staged 筹划状态 newfile,staged)-------> commit 本地仓库文件(未被修改的状态)------->  push  就到远程库了。

提交指令

git add readme.txt                           # 提交到暂存区
修改的文件名
git commit -m "wrote a readme file" # 提交暂存区的所有修改
git status 查看状态
git status -s 转改概览
git diff 尚未暂存的文件
git diff --staged 暂存区文件
git rm 从版本库中移除
git reset HEAD <file> 从暂存区中移除 ==== 老版本用这个指令 git rm --cached <file>
git mv 相当于mv 、git rm 、 git add 三个命令

撤销之前的修改 可以使用 checkout

这边 修改了一个文件

[root@localhost jenkins_git]# cat user.txt
admin qq124536393
[root@localhost jenkins_git]# echo "aaaaa" >> user.txt
[root@localhost jenkins_git]# cat user.txt
admin qq124536393
aaaa

查看状态

这个时候如果这个文件我们修改太多,想还原回去的话,可以之后--checkout

[root@localhost jenkins_git]# git checkout -- user.txt      ##  撤销操作,其实相当于切换了文件的head头指针。
(文件名)
[root@localhost jenkins_git]# cat user.txt
admin qq124536393

这样之前的操作就取消了。再次查看状态,其实是还原了。

查看提交日志

git log                            #  查看提交日志
git log --pretty=oneline # 可以屏蔽一些信息
git reflog # 查看提交历史记录
[root@localhost jenkins_git]# git log  --pretty=oneline
da7e0c371a9738e267e0c9314eceebca462facd3 add hello jenkins
aff4019ae0ad390dac43b5fe4b3643c93e6453ef add pro1
版本号 提交信息

退回

git  本机有3个工作区域 工作目录,缓存目录,本机仓库

工作目录回滚

git checkout -- user.txt

缓存目录回滚

git reset HEAD <file>    从暂存区中移除 ==== 老版本用这个指令  git rm --cached <file>

本地仓库回滚 ,使用reset

一些参数介绍

--soft   只回退了本地仓库。缓存区和工作目录都不会改变。 
--mixed 默认选项,本地仓库和缓存区到你指定的提交同步,但工作目录不受影响。
--hard 本地仓库,缓存区和工作目录都同步到你指定的提交
git  reset   --hard   HEAD^
HEAD是当前版本的意思。 上一个版本就是HEAD^,上上一个版本就是HEAD^^,HEAD~100退回之前100版本。
git reset  --hard  da7e0c ## 指定回退版本。 需要知道准确的版本号。

一些报错处理:

一、

git fatal: index file smaller than expected

解决:

rm .git/index
$ git reset HEAD . > Unstaged changes after reset:
modified foo.txt
modified bar.txt 参考: https://www.e-learn.cn/content/wangluowenzhang/634484

二、

error: object file .git/objects/xxxxxxxx  is empty

这个要复杂点

cp -a .git .git-old                                      #  本分一下
git fsck --full # 验证数据库中对象的连接性和有效性
find . -type f -empty -delete -print # 删除空文件
git fsck --full # 再检查次

参考

https://stackoverflow.com/questions/11706215/how-to-fix-git-error-object-file-is-empty

https://www.cnblogs.com/chinxi/p/6139469.html

1. git 基础的更多相关文章

  1. [转] Git 基础 - 打标签

    2.6 Git 基础 - 打标签 打标签 同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签.人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做.本节我们一起来学习如何列 ...

  2. Git基础操作

    配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...

  3. git基础及分支

    关于版本控制 git是一种分布版本控制系统,每一主机都保存了完整副本.必杀技是分支. 在Windows可安装git客户端msysgit. git基础 第一次看progit觉得有点不懂,不懂版本控制,一 ...

  4. 《Pro Git》笔记2:Git基础操作

    第二章 Git基础 Git基础包括:版本库的创建和获取,文件添加修改提交等基本操作,状态查询,远程版本库管理和同步,打标签. 1.取得项目的Git版本库 基于Git的工作流要以Git版本库为基础,即可 ...

  5. Git详解之二 Git基础

    Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置: ...

  6. 2.4 Git 基础 - 撤消操作

    2.4 Git 基础 - 撤消操作 撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失 ...

  7. ###Git 基础图解、分支图解、全面教程、常用命令###

    一.Git 基础图解 转自:http://www.cnblogs.com/yaozhongxiao/p/3811130.html Git 图解剖析 git中文件内容并没有真正存储在索引(.git/in ...

  8. 【git学习二】git基础之git管理本地项目

    1.背景        git基础打算分两部分来说,一部分是对于本地项目的管理,第二部分是对于远程代码仓库的操作. git运行本地项目管理包含对于相关文件的追踪,暂存区的比較分析,提交,撤销等功能. ...

  9. Git基础教程(二)

    继续上篇Git基础教程(一),在开篇之前,先回顾一下上篇中的基本命令. 配置命令:git config --global * 版本库初始化:git init 向版本库添加文件:git add * 提交 ...

  10. Git详解之二:Git基础

    Git 基础 读完本章你就能上手使用 Git 了(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读).本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到 ...

随机推荐

  1. benchmarks (主要用于分布式文件系统性能测试)

    最近进行学习过程中,遇到一些可以用得上的benchmark,在这里进行简要记录:之后估计会用到 TensorFlow benchmarks https://github.com/tensorflow/ ...

  2. webpack打包 The 'mode' option has not been set, webpack will fallback to

    webpack 打包报错 The 'mode' option has not been set, webpack will fallback to 'production' for,Module no ...

  3. ora-12505报错解决方法(转)

    用oracle数据库新建连接时遇到ora-12505,此问题解决后又出现ora-12519错误,郁闷的半天,经过一番折腾问题解决,下面小编把我的两种解决方案分享给大家,仅供参考. 解决方案一: 今天工 ...

  4. Codeforces Round #594 (Div. 1) C. Queue in the Train 模拟

    C. Queue in the Train There are

  5. IT兄弟连 HTML5教程 HTML5和CSS3的关系

    HTML5是第五版HTML的标准,CSS3则是第三版CSS,新增一些非常实用的选择器和样式属性,并且CSS3语言开发是朝着模块化发展的.以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为 ...

  6. Linux网络基础协议和ip管理

    1.简述osi七层模型和TCP/IP五层模型 osi七层模型分别是:物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. 1)物理层:这一层的主要功能是二进制传输数据,界定连接器和网线的规格: ...

  7. Linux 安装指定版本Git

    git二进制文件下载地址: https://mirrors.edge.kernel.org/pub/software/scm/git/ 1.下载v2.21.0版本 wget https://mirro ...

  8. P站全新官方精选集Pixivision

    P站是一个主要由日本艺术家所组成的虚拟社群,主打插画.漫画.二次元作品网上沟通. 不过好消息是,P站全新的精选网站Pixivision上线了,多种语言界面,国内用户访问毫无压力. 近期精选的一系列作品 ...

  9. git 创建分支 提交到远程分支

    git 创建分支 并 提交到远程分支 git branch 0.可以通过git branch -r 命令查看远端库的分支情况 1,从已有的分支创建新的分支(如从master分支),创建一个dev分支 ...

  10. CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

    CSV文件数据如何读取.导入.导出到新的CSV文件中以及CSV文件的创建 一.csv文件的创建 (1)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...