参考文档:

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. Redis—简介与安装

    Redis 简介 Redis 安装 Redis 配置文件 # Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程.daemonize yes # 当Redis以守护进 ...

  2. Linux系统学习 八、SSH服务—SSH远程管理服务

    1.SSH简介 ssh(安全外壳协议)是Secure Shell的缩写,是建立在应用层和传输层基础上的安全协议.传输的时候是经过加密的,防止信息泄露,比telnet(明文传递)要安全很多. ftp安装 ...

  3. 使用scale等比例缩放图片

    功能需求: 在下拉框中选择你所需要缩放的比例, 选择好了之后,图片会按照你选择的比例进行缩放 1==>如何获取select中option选中的值 在select添加事件change 和双向绑定v ...

  4. ios App 开发指南

    开发者账号申请 http://www.applicationloader.net/blog/zh/547.html https://zhuanlan.zhihu.com/p/66118041 http ...

  5. 剑指Offer-30.连续子数组的最大和(C++/Java)

    题目: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量中 ...

  6. Luogu P5408 【模板】第一类斯特林数·行

    为什么要做这题呢,当然是有用啊qwq 首先我们考虑非常经典的式子: \[x^{\overline{n}}=\sum_i \left[^n_i\right] x^i\] 然后上倍增: \[x^{\ove ...

  7. css样式的介绍

    1.什么是css? 简单的来说css就是配合HTML的,HTML主要负责页面的结构,css就像一个美容师,主要负责页面的美化. 2.css的样式 css的样式有三种:行内样式  内部式  外部链接式 ...

  8. 解决root用户下都无权限操作的问题

    问题现象: 有时系统设置了一种文件,无法编辑其所有权​ sudo chown users:username {filename} 或者root用户下执行 chown users:username {f ...

  9. hive creating temporary folder on: Error encountered near token 'TOK_TMP_FILE'

    执行create tmp.tablename  as select .....语句的时候报以下错误: SemanticException 0:0 creating temporary folder o ...

  10. 转:用 Python 一键分析你的上网行为, 看是在认真工作还是摸鱼

    简介 想看看你最近一年都在干嘛?看看你平时上网是在摸鱼还是认真工作?想写年度汇报总结,但是苦于没有数据?现在,它来了. 这是一个能让你了解自己的浏览历史的Chrome浏览历史记录分析程序,当然了,他仅 ...