GitHub-暂存区与版本回退 – 踏歌行666

0

证明人博文:Liao Xuefeng Git一道菜

1. 任务区和暂时内存区

      Git和别的版本控制设备当切中要害本人分别,诸如。

. 任务挡住通路(任务) 列于表上)

      这是你可以在电脑里检查的列于表上。:zhangtest

1 [root@mini05 zhangtest]# pwd2 /opt/git_repository/zhangtest
3[root@mini05 zhangtest]# ll
4 total 85 -rw-r--r-- 1 root root 96 Sep 2320:54 
6 -rw-r--r-- 1 root root 12 Sep 1723:27 试验的。info

1.2. 版本库(知识库)

       任务区中有本人安置的列于表上。.git,这不是任务区。,这是Git的版本库。。

       Git版本中有很多东西。,最重要的比例是暂时内存区域称为阶段(或参考)。,Git为我们的无意识或下意识行为找到的第本人用枝形叶脉刺绣花纹装饰。master,指路master本人指示剂HEAD

       早点儿时分,我们的适用于了向Git版本库添加贴纸。,它是经过两个跨入来发生的。:

       第一步是运用git add添加贴纸到,实则,将贴纸添加到暂时内存区域。;

       其次步是运用。git commit送交更改,事实上的,将暂时内存区域的全部的使满足送交给T。

       你可以复杂地听说,需求送交的贴纸修正全部情况放到暂存区,话说统计表,对暂时内存区的全部的修正。

试验的练习

       添加充分使满足到;新的答应和添加使满足。

 1[root@mini05 zhangtest]# ll
 2 total 12 3 -rw-r--r-- 1 root root  16 Sep 2919:17 LICENSE
 4 -rw-r--r-- 1 root root 104 Sep 2919:18 
 5 -rw-r--r-- 1 root root  12 Sep 1723:27 试验的。info 6[root@mini05 zhangtest]# 
 7[root@mini05 zhangtest]# git status
 8# On branch master
 9 # Your branch is ahead of ''origin/master'' by 2 送交。
10 #   (运用) "git push" to publish your local 送交)
11#
12 # Changes not staged for commit:
13 #   (运用) "git add ..." to update what will be 承兑的)
14 #   (运用) "git checkout -- ..." to discard changes in working 列于表上)
15#
16#    modified:   
17#
18# Untracked files:
19 #   (运用) "git add ..." to include in what will be 承兑的)
20#
21#    LICENSE
22 no changes added to commit (运用) "git add" and/or "git commit -a")

       由上可知:Git告知我们的很明白的。,先前剪辑。,而LICENSE它从未被添加过。,因而它的限制是Untracked

       如今,运用两个命令git add,把LICENSE添加后,用git status再反省一遍。:

 1[root@mini05 zhangtest]# git add 
 2[root@mini05 zhangtest]# git add LICENSE
 3[root@mini05 zhangtest]# 
 4[root@mini05 zhangtest]# git status
 5# On branch master
 6 # Your branch is ahead of ''origin/master'' by 2 送交。
 7 #   (运用) "git push" to publish your local 送交)
 8#
 9# Changes to be committed:
10 #   (运用) "git reset HEAD ..." to unstage)
11#
12 #    new file:   LICENSE
13#    modified:   
14 #

       如今,暂时内存区域的限制是同样的。:

       因而,git add命令事实上的是把全部的的确切的放在暂时S中。,话说统计表,处决git commit可以将暂时内存区的全部的修正送交给。

1 [root@mini05 zhangtest]# git commit -m "understand how stage works"2[硕士] 53f0f2e] understand how stage works
32 files changed, 6 insertions(+)
4  create mode 100644 LICENSE

      一旦送交,假使还缺勤对任务区举行任何一个更改,,因而任务挡住通路是“彻底”的:

1[root@mini05 zhangtest]# git status
2# On branch master
3 # Your branch is ahead of ''origin/master'' by 3 送交。
4 #   (运用) "git push" to publish your local 送交)
5#
6 nothing to commit, working directory clean

       如今版本库先前成了英雄同样。,暂时内存区中缺勤任何一个东西。:

2. 版本回滚

       繁殖了以下使满足。,并送交。。

1Git is a distributed version control 体系。
2 Git is free software distributed under the GPL。

       送交

 1[root@mini05 zhangtest]# vim  
 2# zhangtest
 3zhangtest
 4有害的幼虫
 5Git is a distributed version control 体系。
 6 Git is free 软件。
 7Git is a distributed version control 体系。
 8 Git is free software distributed under the GPL。
 9[root@mini05 zhangtest]# git add .  # 添加到暂时内存区
10 [root@mini05 zhangtest]# git commit -m "append GPL"  # 送交仓库栈

. 检查版本日记交流

 1# 运用 git add . 用于涌流列于表上
 2[root@mini05 zhangtest]# git log    # 指画贴纸
 3commit 9f27dce0f57cf811a8e3bdab545e8b98ca9bd41f
 4 Author: Zhang San 163.com>
 5 Date:   Sun Sep 2320:38:532018 +0800 6 7    append GPL
 8 9commit 65a58f2661c4d73dc0dc9c2e5bff4c350c42c98e
10 Author: Zhang San 163.com>
11 Date:   Mon Sep 1723:31:252018 +08001213     add info1415commit d4fb57e8a892060db07fe862058a1a8477be49aa
16 Author: 张亮 163.com>
17 Date:   Mon Sep 1723:10:572018 +08001819    Update 
2021commit e7306765445375e4c1b52ebde07a666da5517b22
22 Author: 张亮 163.com>
23 Date:   Mon Sep 1722:34:572018 +08002425     Initial commit

2.2. 使单纯版本日记

1 [root@mini05 zhangtest]# git log --pretty=在线 
29f27dce0f57cf811a8e3bdab545e8b98ca9bd41f append GPL
3 65a58f2661c4d73dc0dc9c2e5bff4c350c42c98e add info4d4fb57e8a892060db07fe862058a1a8477be49aa Update 
5 e7306765445375e4c1b52ebde07a666da5517b22 Initial commit

2.3. 版本回滚到65a58f2661

       在GIT中,用HEAD表现涌流版本,这是最新的送交。9f27dce...(理睬我送交的ID与你的确切的),最末本人版本是HEAD^,上最末本人版本是HEAD^^,自然,写出下面100个版本切中要害100个。^计数比得上轻易。,那样地写前进~ 100

 1 # git reset --hard 65a58f2661  回滚到详述版本,其优点是不需求对数个版本举行计数。
 2 [root@mini05 zhangtest]# git reset --hard HEAD^    # 回滚到先前的版本
 3 HEAD is now at 65a58f2 add info 4 [root@mini05 zhangtest]# cat   # 检查使满足,可见以回滚到先前的版本
 5# zhangtest
 6zhangtest
 7有害的幼虫
 8Git is a distributed version control 体系。
 9 Git is free 软件。
10 [root@mini05 zhangtest]# git log --pretty=在线   # 依送交日记,也意识到先前统计表了。
11 65a58f2661c4d73dc0dc9c2e5bff4c350c42c98e add info12d4fb57e8a892060db07fe862058a1a8477be49aa Update 
13 e7306765445375e4c1b52ebde07a666da5517b22 Initial commit

2.4. 回滚规律

       Git的版本回滚变速器充分快,由于Git有本人指路涌流版本的室内的版本。HEAD指示剂,当您复发版本时,GIT无论如何做手势示意或强调。append GPL

  

而不是指路add info

  

       话说统计表经过任务方法翻新的任务区切中要害贴纸。。因而你让HEAD它指路哪个版本号?,你在哪里找到涌流版本?。

. 记载每本人定单。

       回滚到本人版本,假使据我看来恢复校订,我该怎么办?我未查明新的Vcommit id怎么办?

       Git暂代他人职务了本人命令git reflog用来记载你的每本人定单。:

       用git reflog检查命令历史,结果决定复发到逼近的的版本。。

1[root@mini05 zhangtest]# git reflog  
2 65a58f2 HEAD@{0}: reset: moving to 65a58f2661
3 9f27dce HEAD@{1}: reset: moving to 9f27dce0f57cf
4 65a58f2 HEAD@{2}: reset: moving to HEAD^
5 9f27dce HEAD@{3}: commit: append GPL
6 65a58f2 HEAD@{4}: commit: add info7 d4fb57e HEAD@{5}: pull git@: Fast-forward
8 e730676 HEAD@{6}: clone: from git@

LEAVE A REPLY