文章目录

  • 安装git
  • 设置用户
  • 创建版本库
  • 初始化仓库
  • 添加文件到仓库
  • 添加文件
  • 提交文件到仓库
  • 将文件更改后在提交
  • 查看一下仓库的当前状态
  • 对比修改内容
  • 提交到仓库
  • 查看各版本信息
  • 退回版本
  • 返回未来
  • 历史命令查看


安装git

zhou@zhou-PC:~/Desktop$ sudo apt-get install git -y

设置用户

zhou@zhou-PC:~/Desktop$ git config --global user.name "chineselijie"
zhou@zhou-PC:~/Desktop$ git config --global user.email "1915521482@qq.com"

注意: 参数--global 表示这台机器所有的git仓库都会归属到这个配置,也可以对某个单独仓库指定其他的用户和email地址。去掉--global即可。

创建版本库

zhou@zhou-PC:~/Desktop$ mkdir test
zhou@zhou-PC:~/Desktop$ cd test/
zhou@zhou-PC:~/Desktop/test$ pwd
/home/zhou/Desktop/test

初始化仓库

将目录变为git可以管理的仓库

zhou@zhou-PC:~/Desktop/test$ git init
已初始化空的 Git 仓库于 /home/zhou/Desktop/test/.git/
zhou@zhou-PC:~/Desktop/test$ ls -a
.  ..  .git

添加文件到仓库

首先创建一个文件,添加内容进去

zhou@zhou-PC:~/Desktop/test$ echo "natasha" > a.txt
zhou@zhou-PC:~/Desktop/test$ cat a.txt 
natasha

添加文件

zhou@zhou-PC:~/Desktop/test$ git add a.txt

提交文件到仓库

zhou@zhou-PC:~/Desktop/test$ git commit -m "创建了一个文件" a.txt 
[master(根提交) 1909f1a] 创建了一个文件
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt

将文件更改后在提交

提前将文件添加一行

zhou@zhou-PC:~/Desktop/test$ echo "hahahahaha" >> a.txt
zhou@zhou-PC:~/Desktop/test$ cat a.txt 
natasha
hahahahaha

查看一下仓库的当前状态

zhou@zhou-PC:~/Desktop/test$ git status 
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

	修改:     a.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

此时就可以看到文件被修改过但是还没有提交

对比修改内容

zhou@zhou-PC:~/Desktop/test$ git diff a.txt
diff --git a/a.txt b/a.txt
index 2e6fa88..a9d322e 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1,2 @@
 natasha
+hahahahaha

这里就可以看到a.txt增加了一行

提交到仓库

zhou@zhou-PC:~/Desktop/test$ git add a.txt 
zhou@zhou-PC:~/Desktop/test$ git status 
位于分支 master
要提交的变更:
  (使用 "git reset HEAD <文件>..." 以取消暂存)

	修改:     a.txt

zhou@zhou-PC:~/Desktop/test$ git commit -m "添加了一行信息" a.txt 
[master 60f2917] 添加了一行信息
 1 file changed, 1 insertion(+)
zhou@zhou-PC:~/Desktop/test$ git status 
位于分支 master
无文件要提交,干净的工作区

查看各版本信息

zhou@zhou-PC:~/Desktop/test$ git log a.txt
commit 60f29172f1d154a0cd02188b8d2cd4f657cf97b4
Author: chineselijie <1915521482@qq.com>
Date:   Thu Sep 12 16:55:10 2019 +0800

    添加了一行信息

commit 1909f1aa1335742aa5110a129ec4228ed900a5f5
Author: chineselijie <1915521482@qq.com>
Date:   Thu Sep 12 16:34:16 2019 +0800

    创建了一个文件

此处的commit后面的一串数字代表了版本号

如果觉得太复杂,可以使用参数--pretty=oneline

zhou@zhou-PC:~/Desktop/test$ git log --pretty=oneline a.txt 
60f29172f1d154a0cd02188b8d2cd4f657cf97b4 添加了一行信息
1909f1aa1335742aa5110a129ec4228ed900a5f5 创建了一个文件

退回版本

zhou@zhou-PC:~/Desktop/test$ git reset --hard 1909
HEAD 现在位于 1909f1a 创建了一个文件
zhou@zhou-PC:~/Desktop/test$ cat a.txt 
natasha

如果不小心退回了版本,不用担心,还可以返回未来

返回未来

zhou@zhou-PC:~/Desktop/test$ git reset --hard 60f2
HEAD 现在位于 60f2917 添加了一行信息
zhou@zhou-PC:~/Desktop/test$ cat a.txt 
natasha
hahahahaha

注意:此处的60f2还有上面的1909,都是版本号的缩写,没必要写全,只需要前几位就可以了

假如忘记了版本号,也可以使用命令来查看每一次的命令

历史命令查看

zhou@zhou-PC:~/Desktop/test$ git reflog 
60f2917 HEAD@{0}: reset: moving to 60f2
1909f1a HEAD@{1}: reset: moving to 1909
60f2917 HEAD@{4}: commit: 添加了一行信息
1909f1a HEAD@{5}: commit (initial): 创建了一个文件

此处的第一列就是版本号,它详细地记录着各个版本的历史信息