1. git 基础
参考文档:
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
最新文章
- SQLPrompt 7.2发布
- IOC-AOP
- LeetCode 1 Two Sum(二分法)
- MFC获取光标相对于控件所在行
- laravel Authentication and Security
- 重温sql语句中的join操作
- Date.prototype.format,js下的时间格式处理函数
- Python 可变对象和不可变对象
- HDU_2045——RPG问题,递推
- IT痴汉的工作现状18-思维定式
- Struts2流程分析与工具配置
- 1.用代码演示String类中的以下方法的用法 (2018.08.09作业)
- (转)CentOS7中防火墙的基本操作
- MySQL 遇到的问题以及解决方案
- mysql 5.7 ERROR 1820 (HY000):
- NVMe协议1.3c(一) 概述
- 滑动条QSlider
- python.numpy.std()计算矩阵标准差
- noip第33课作业
- J-Link调试查看变量值总是显示<;not in scope>; 和<;cannot evaluate>;问题