• Git学习笔记--版本控制


    版本控制

    我们试着提交一个readme.txt文件,并用其感受版本控制功能。

    原readme文件内容:

    this is cp's channel.
    nice to meet u.

    使用add,commit提交到仓库。

    然后修改第二行的u->you保存。

    this is cp's channel.
    nice to meet you.

    这时我们可以通过命令:git status 查看库的当前状态。

    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   readme.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")

    会告诉我们readme已经被修改。

    我们可以使用命令:git diff filename 查看具体的更改内容。

    $ git diff readme.txt
    diff --git a/readme.txt b/readme.txt
    index 962cb11..fb5ee03 100644
    --- a/readme.txt
    +++ b/readme.txt
    @@ -1,2 +1,2 @@
     this is cp's channel.
    -nice to meet u.
     No newline at end of file
    +nice to meet you.
     No newline at end of file

    然后我们再add、commit修改后的版本。

    此时再查看status就显示

    nothing to commit, working tree clean

    没东西要commit,工作目录是干净的。

    版本回退

    此时我们已经提交了两次readme,怎么回退到上一个版本呢?

    首先我们看看git log命令,可以查看所有的历史版本,也就是你每commit一次就会有一个新的版本。

    git log命令会给出版本号、作者、提交时间和说明。

    使用git reset命令可以进行回滚,命令格式:

    $ git reset --hard HEAD^

    HAED表示当前版本,HEAD^就是上一个版本,同理HEAD^^就是上上个版本,HEAD~n就是前n个版本。此处也可以用版本号来代替(不用写全,前几位就行,Git会自动匹配)。

    查看文件果然被回滚了。

    回到过去可以,但是想重返未来呢?只要找到版本号就可以去到任意地方,如果已经回退了,可以用git reflog查看命令历史,里边可以看到你对任何一个版本的操作,包括版本号。

    Git里面怎么操作的?--工作区和暂存区

    Git可以分为两个区域,工作区和暂存区。

    工作区就是你仓库目录,不包括.git目录。

    .git目录下就是版本库,版本库里有暂存区和分支(也就是你的仓库)。master分支是自动创建的。

    暂存区一直保存上一次add的内容。

    git add 实际上是将工作区文件添加到暂存区,

    git commit 是将暂存区文件添加到分支,

    git diff 是查看工作区和暂存区差别,

    git diff --cached 是查看暂存区和分支区别,

    git diff HEAD 是查看工作区和分支区别,

    git checkout 是撤销工作区修改,把暂存区最新版本转到工作区,是add反向命令,

    git reset HEAD 是把仓库最新版本转到暂存区。

    Git管理的是修改不是文件

    每次add就是将一次修改提交到暂存区。

    这个需要使用时慢慢理解。

    撤销修改

    git checkout -- filename 命令,就是将暂存区最新版本转到工作区

    git reset HEAD filename 是把仓库最新版本转到暂存区

    如果修改了工作区文件,没有add,用checkout;

    如果add了,用reset HEAD,此时暂存区回退,再用checkout,工作区回退;

    如果你还脑子短路commit了,用reset -hard HEAD^,将暂存区、工作区都回滚到上一次提交,仅add没commit也可用此法。

    删除文件

    git rm filename,删除文件。并且git commit提交修改。

    参考:廖雪峰的Git教程

  • 相关阅读:
    37.1 net-- udp传输
    37 net 网络编程
    review
    java day02 记录
    36.2 线程生命周期
    36.1 线程锁
    36 Thread 多线程
    35 编码 ASCII Unicode UTF-8 ,字符串的编码、io流的编码
    34.6 Properties(k,v存储) 和io流结合使用
    今日学习总结
  • 原文地址:https://www.cnblogs.com/cpcpp/p/12952570.html
Copyright © 2020-2023  润新知