git学习记录二

一.版本回退

duankun@ubuntu:~/learngit$ git log
commit 8e749cbd2e6be927c4aa6ffcd8e56df142457654
Author: duankun <[email protected]>
Date:   Wed Sep 26 00:41:24 2018 -0700

    second develop

commit 7ff8d82010e32d0d4790550fa61486795c7e3dcc
Author: duankun <[email protected]>
Date:   Wed Sep 26 00:26:02 2018 -0700

    wrote a readme file

现在有已经有两个版本被提交到Git仓库里了。

duankun@ubuntu:~/learngit$ git log --pretty=oneline
bc2f19ab6dcbd2b1dbede906c9a79bc885666a0b third develop wrote
8e749cbd2e6be927c4aa6ffcd8e56df142457654 second develop
7ff8d82010e32d0d4790550fa61486795c7e3dcc wrote a readme file
duankun@ubuntu:~/learngit$

这里的一大串字符串就是commit id ,因为 Git是分布式的版本控制系统。

 现在Git需要知道当前版本是哪个版本,在Git中, 用HEAD表示当前版本,上一版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易说不过来,所以写成HEAD~100。

duankun@ubuntu:~/learngit$ git reset --hard HEAD^
HEAD is now at 8e749cb second develop
duankun@ubuntu:~/learngit$ git reset --hard HEAD
HEAD is now at 8e749cb second develop
duankun@ubuntu:~/learngit$ git log
commit 8e749cbd2e6be927c4aa6ffcd8e56df142457654
Author: duankun <[email protected]>
Date:   Wed Sep 26 00:41:24 2018 -0700

    second develop

commit 7ff8d82010e32d0d4790550fa61486795c7e3dcc
Author: duankun <[email protected]>
Date:   Wed Sep 26 00:26:02 2018 -0700

    wrote a readme file

如果要回到以前的版本,git 提供了一个命令git reflog用来记录你的每一次命令,可以看到每一个版本的commit id, 然后通过命令

$ git reset --hard commit_id

回到制定的版本。

总结:

   1.1 HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id。

    1.2 穿梭前,使用git log 可以查看提交的历史,以便确定要回退到哪个版本。

    1.3 要重返回来,用git reflog 查看命令历史,以便确定要回到未来的哪个版本。

二. 工作区(work directory)和暂存区(repository), 

    工作区就是你在电脑里能看到的目录,比如我创建的learngit文件夹就是一个工作区。

    版本库就是工作区有一个隐藏目录.git ,这个不算是工作区,而是Git的版本库。

    把文件往Git版本库里添加的时候,是分两步执行的:

     第一步是用git add 把文件添加进去,实际上就是把文件修改添加到暂存区;

     第二步是用 git commit 提交更改,实际上就是把暂存区的所有内容提交但当前分支;

    在创建git版本库的时候,git 自动为我们创建了唯一一个master 分支,所以现在git commit 就是往master分支上提交更改 ,也就是需要提交的文件修改通通放在暂存区,然后,一次性提交暂存区的所有修改。

  git diff HEAD -- readme.txt 命令可以查看工作区与版本库里面最新版本的区别:

$ git diff HEAD -- readme.txt 
diff --git a/readme.txt b/readme.txt
index 76d770f..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@
 Git is a distributed version control system.
 Git is free software distributed under the GPL.
 Git has a mutable index called stage.
-Git tracks changes.
+Git tracks changes of files.

第一次修改->git add->第二次修改->git add-> git commit

二.撤销修改

场景1:当你改乱了工作区的某个文件的内容,想直接工作区的修改时,用命令 git checkout -- file

场景2:当你不但改乱了工作区的某个文件的内容,还添加到了暂存区时,想丢弃修改,第一步用命令git reset HEAD file, 返回了场景1,第二步按场景1操作

场景3: 已经提交了不合适的修改到版本库时, 想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

三. 删除文件

  命令 git rm file 用于删除一个文件。 如果一个文件已经被提交到版本库, 那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改动内容。

猜你喜欢

转载自blog.csdn.net/DuanKun7323/article/details/82855172