一、git的特点
1、版本控制:可以同时解决多人同时开发的代码问题,也可以解决找回历史代码的问题
2、分布式:Git是分布式版本控制系统,同一个GIt仓库,可以分布到不同的机器上。首先,找一台电脑充当服务器的角色,其他每个人都从这个“服务器”仓库可从一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库,也从服务器仓库拉拉取别人的提交,可以自己搭建这台服务器,也可以使用GitHub网站。
二、安装与配置
(1)安装命令如下:
sudo apt-get install git
(2)安装成功后,运行如下命令:
git
三、创建一个版本库
新建一个目录git_test,在git_test目录下创建一个版本库,命令:
git init
(2)在git_test目录下创建一个文件 code.txt
,编辑内容如下:
四、版本创建与回退
1、版本创建
(1)使用下面两条命令来提交文件作为一个版本
git add code.txt
git commit -m 'first commit'
这里的first commit
只是自己提交的一个说明,可以更改为自己的习惯
(2)使用下面命令可以查看版本记录
git log
红色标注的为当前 提交的版本编号
(3)在code.txt中进行添加,并作为 the second commit 进行提交
2、版本回退
(1)现在如果想回到某一个版本,可以使用如下命令
git reset --hard HEAD^
注意:
HEAD^
为上一个版本,两个尖括号为上上一个版本
也可以使用HEAD ~1
为前一个版本,HEAD ~100
为当前版本的前100的版本
可以看出,他已经回退到第一个版本
(2)退回到指定版本,使用命令行
使用
git reflog
查看操作记录,用来得到需要指定版本的版本号
红色的就是每一次操作的版本号,另外,每一次git log后下面的那一串字符串就是当前的版本编号。
git reset --hard 8de1f89
可以看到已经成功到达版本二
五、工作区和暂缓区
1、工作区(Working Directory)
电脑中的目录,比我我们的 git_test,就是一个工作区
2、版本库(Repository)
工作区有一个隐藏目录**.git**,这个不是工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的是称为stage(或者叫index)的暂缓区,还有git为哦我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
因为我们创建 git版本库时,git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交修改.
可以简单理解为,需要提交的文件修改统统放到暂缓区,然后,一次性提交暂缓区的所有修改
(1)我们在这里新建一个 code2.txt 并在code.txt 中进行添加
然后使用命令行git status
进行查看当前工作树的状态
有看到它提示我们code.txt被修改,而code2.txt没有被跟踪
(2)使用如下命令把 code.txt和code2.txt加入到暂缓区,然后再执行git status
命令,结果如下
git add
命令是把所有提交的修改存放到暂缓区。
(3)然后,执行git commit
就可以一次性把暂存的所有修改提交到分支,创建一个版本
(4)一旦提交后,如果你没有对工作区做任何修改,那么工作区就是“干净的”,执行如下命令就可以发现:
六、管理与修改
(1)如果对工作区的文件进行修改,但是没有添加到暂存区就直接git一个新版本,这样这个新版本并不会做出任何改动。
我们可以通过```git chechout – code.txt``来丢弃工作区的改动。
(2)如果对工作区文件的修改已经添加到暂存区了,这个时候想要把暂存区的修改撤掉,可以使用
git reset HEAD code.txt
七、对比文件的不同
(1)对比工作区和HEAD版本文件的不同:
git diff HEAD -- code.txt
(2)对比两个版本文件的不同
git diff HEAD HEAD^ -- code.txt
九、删除文件
(1)这里的删除文件作用于工作区的文件
rm code.txt
我们已经删掉了在工作区的code.txt文件,我们如果使用git status
可以看到已经检测到我们删除了工作区的文件
这时我们如果想撤销这次删除操作,可以使用git checkout -- code.txt
就可以
(2)如果想真正的删除这个文件,可以使用命令git rm code.txt
删掉,并且git commit
(3)如果commit次数过多,这个时候我们git log
就会发现打印不完全,剩余的会自动隐藏,我们可以使用
git log --pretty=online
注意:
命令git rm
用于删除一个文件,如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能回复文件到最新版本,你会丢失最近一次提交后你修改的内容