git的安装 :
在CentOS 7.6环境下可以使用一条语句就能安装git
yum -y install git
如果上面命令包以下错误,说明权限不够
[leijie@fl ~]$ yum -y install git
Loaded plugins: fastestmirror
You need to be root to perform this command.
可以转换成root用户再次执行
或者对该用户添加sudo权限后在使用,
(16条消息) linux中创建用户并赋予用户sudo权限_赋予sudo权限_小逍遥1127的博客-CSDN博客
sudo yum -y install git
在安装之前也可以用
git --version
命令查看是否已经安装好git
卸载git命令
sudo yum remove git -y
git的基本操作
创建git本地仓库
创建一个git目录
mkdir [目录名]
进入这个git目录 ,然后使用git init 对这个目录进行初始化
git init
当前⽬录下多了⼀个 .git 的隐藏⽂件, .git ⽬录是Git来跟踪管理仓库的,不要⼿动修改这个⽬录⾥⾯的⽂件,不然改乱了,就把Git
仓库给破坏了
配置git
当安装Git
后⾸先要做的事情是设置你的用户名称和e-mail地址 ,其中这个 --global
选项是指我们对这个的配置会在当前机器下的所以的git仓库都生效
git config [--global] user.name "Your Name"
git config [--global] user.email "email@example.com"
配置完后用
git config -l
命令查看配置是否成功
如果想重置一个配置, 其中对于用--global
配置的内容也要用--global
进行重置
git config [--global] --unset [重置的属性名]
⼯作区、暂存区、版本库
- ⼯作区:是在电脑上你要写代码或⽂件的⽬录。
- 暂存区:英⽂叫
stage
或index
。⼀般存放在.git
⽬录下的index
文件(.git/index)中,我们把暂存区有时也叫作索引(index)。 - 版本库:⼜名仓库,英⽂名
repository
。⼯作区有⼀个隐藏⽬录.git
,它不算⼯作区,⽽是Git
的版本库。这个版本库⾥⾯的所有⽂件都可以被Git
管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
- 图中左侧为⼯作区,右侧为版本库。Git的版本库⾥存了很多东西,其中最重要的就是暂存区。
- 在创建Git版本库时,Git会为我们⾃动创建⼀个唯⼀的master分⽀,以及指向master的⼀个指针叫HEAD。
- 当对⼯作区修改(或新增)的⽂件执⾏ git add 命令时,暂存区⽬录树的⽂件索引会被更新。
- 当执⾏提交操作 git commit 时,master分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中
提交命令
将文件从工作区添加到暂存区,在add后就会多一个index,就是里面的暂存区
git add . #将当前目录的所以文件都加入暂存区
git add [name] #指定文件加入暂存区
git add [name1] [name2] .. #一次性添加多个文件
将暂存区内容添加到本地仓库
git commit -m "[描述]" #这个描述说这个操作是干什么
查看提交记录
git log #可以查看git的提交记录
git log --pretty=oneline
git log [file] #指定查看某一个文件的记录
查看git文件 :
.git
中的HEAD是指向一个分支的,默认是master,修改的工作区内容会写入对象库的一个新的git对象中
git 修改文件
在git中只要是新增,修改,删除文件,都叫做 修改,所以知道了Git中追踪管理的其实是修改,而不是文件
git status #查看当前仓库状态 可以通过这个查看上次提交后到现在是否有文件被修改了
不过这个git status 只能查到那个文件被修改了,但是不知道修改的内容,要想知道,就需要用
git diff [file] #查看工作区与暂存区的差异
除了git diff
git diff HEAD -- [file]#用来查看工作区与版本库的差异
版本回退
Git能够管理⽂件的历史版本,这也是版本控制器重要的能⼒。如果有⼀天你发现之前前的⼯作做的出现了很⼤的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能了
版本回退的命令是git reset
,该命令⽤于回退版本,可以指定退回某⼀次提交的版本。要解释⼀下“回退”本质是要将版本库中的内容进行回退,⼯作区或暂存区是否回退由命令参数决定
git reset [--soft | --mixed | --hard] [HEAD]
--mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变。
--soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
--hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重
HEAD 说明:
◦ 可直接写成 commit id,表⽰指定退回的版本
◦ HEAD 表⽰当前版本
◦ HEAD^ 上⼀个版本
◦ HEAD^^ 上上⼀个版本
◦ 以此类推...
• 可以使⽤〜数字表⽰:
◦ HEAD~0 表⽰当前版本
◦ HEAD~1 上⼀个版本
◦ HEAD^2 上上⼀个版本
◦ 以此类推...
可以看到,对应现在一共有4个版本,那么我们对其使用git reset --hard
将版本库,暂存区,工作区的都回退到第一个版本
git reset --hard HEAD^3 #写法一
git reset --hard [commit id]
通过commit id 回退到第一个版本后,就发现在提交第一次之后提交的test2,test3就没了,想恢复回退前的版本也可以使用commit id
不过我们回退后使用git log其实是看不到后面版本的commit id的,
想要在回退后查看到对应版本的commit id
就需要使用git reflog
对于上面的第一列的 b4c2a30 , f61af46 ,7df5220其实是commit id的一部分,Git版本回退的时候,也可以使⽤部分 commit id 来代表⽬标版本
撤销修改
如果我们在工作区中的编写感觉不太行,不想用这个版本了,想重新从上个版本写,就需要恢复到上一个版本,这个就叫撤销修改,撤销的目的是为了不去影响远程仓库的代码(没有进行git push)
不过撤销修改有多个场景,
场景一:
我们修改后的内容只存在在工作区中,没有将修改后的存入暂存区和版本库,简单来说就是修改后没有进行Add和Commit操作
这个场景下,我们只需要撤销工作区的操作就行了
git checkout -- [file] #将工作区文件回到最近一次提交的状态,切记 -- 不能省略
场景二:
我们修改后的内容不止在工作区有,也存在到了暂存区中,但是版本库中没有,就是进行了Add操作,但是没有进行Commit操作
这个场景下,我们需要撤销工作区与暂存区的操作
这个想要回退就可以
方法一:先使用前面的git reset --mixed [HEAD]
命令去回退暂存区的内容,再使用git checkout -- [file]
去回退
工作区的内容
方法二:直接使用git reset --hard HEAD
将工作区和暂存区的全回退到当前版本
场景三:
我们修改后的内容在工作区,暂存区,版本库中都有,就是进行了add和commit操作了
这个场景下我们需要撤销工作区,暂存区和版本库的操作
只需要使用git reset --hard HEAD^
命令就行了
删除版本库的文件
我们在git目录中的rm操作其实是只对工作区进行删除了,但是版本库中没有真的删除,就需要操作add和commit 才能对版本库的文件也删除
步骤:使用git rm [file]
对工作区与暂存区的删除,在commit将这个删除操作提交到版本库进行删除