《Git葵花宝典》:Git Book
1. 实验环境
主机信息 | 主机功能 |
---|---|
git(192.168.1.50) | 搭建git仓库 |
物理机(192.168.1.250) | 提供资源 |
2. Git Status状态显示分类
Git有三种状态:已提交(committed)、已修改(modified)和已暂存(staged)
- 已修改表示修改了文件,但还没保存到数据库
- 已暂存表示对一个已经修改的文件当前版本做了标记,使之包含在下次提交的快照中
- 已提交表示数据已经安全的保存在本地数据库中
状态标记 - 新添加的未跟踪文件前面有 ?? 标记
- 新添加到暂存区中的文件前面由 A 标记
- 修改过的文件前面有 M 标记
- 出现在 右边的M 表示该文件被修改了但还没有放入暂存区
- 出现在 靠左边的M 表示该文件被修改了并放入了暂存区
- MM 表示工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录
3. Git部署过程
(1)安装git命令
(2)创建本地仓库,并初始化
mkdir demo # 这里创建的版本库的名字为demo
cd demo/ #
ls -a
git init #进行初始化,需要在版本库目录中(这里的版本库目录为demo)
l.
可以发现当前目录下多了一个.git的目录,这个目录是Git来管理版本库的,一般不要手动修改这个.git目录里面的文件
(3)添加用户信息
初始化完后,接下来就要设置用户名和邮件地址,每次Git提交都会附带上这些信息 仓库所有者的标签
git config --global user.email "du@westos.org"
git config --global user.name "du"
cat ~/.gitconfig
(4)创建文件,查看文件状态
echo This text is test >> test.txt
git status -s
新添加的未跟踪的文件前面有??标志,表示没有添加到暂存区
git add test.txt
git status -s
标志A表示已经添加到暂存区了
echo linux >> test.txt
git status -s
内容修改但是还没有放入暂存区,此时M在靠右边
git add test.txt
git status -s
内容修改且放入暂存区,此时M在靠左边
echo dsd >> test.txt
git status -s
工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录
git add test.txt
git status -s
git commit -m "v1"
将修改后的内容放入到暂存区,此时M靠左边
提交之后我们就会发现没有文件状态了
(5)忽略文件
在创建过程中总会自动生成一些我们不需要的文件,比如日志文件、编译过程中的临时文件等。这种情况下,创建一个 .gitignore 的文件,列出要忽略的文件模式
[root@git demo]# git status -s
?? env/
[root@git demo]# touch .file1
[root@git demo]# git status -s
?? .file1
?? env/
[root@git demo]# ls
env test.txt
[root@git demo]# l.
. .. .file1 .git
[root@git demo]# vim .gitignore
[root@git demo]# cat .gitignore
.*
env
[root@git demo]# git status -s
[root@git demo]#
(6)版本回退
Git同系统也是一样,每当文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。
一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是将成果全部丢失
git log命令显示从最近到最远的提交日志
git log --pretty=oneline查看简略日志信息
git reflog查看历史记录
git reset --hard HEAD^
上一个提交状态就是HEAD,上上一个提交状态就是HEAD^
git reset --hard … 回退到指定状态
(7)删除恢复
git checkout – file
以丢弃工作区的修改,就是让这个文件回到最近一次git commit或git add时的状态
删除后没有提交,直接:git checkout – file即可
删除且提交后: git reset --hard 指定状态