zoukankan      html  css  js  c++  java
  • 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教程

  • 相关阅读:
    安装lnmp 时如何修改数据库数据存储地址及默认访问地址
    ubuntu 设置root用户密码并实现root用户登录
    解决ubuntu 远程连接问题
    linux 搭建FTP服务器
    PHP 根据ip获取对应的实际地址
    如何发布自己的composer包
    使用composer安装composer包报Your requirements could not be resolved to an installable set of packages
    laravel 框架配置404等异常页面
    使用Xshell登录linux服务器报WARNING! The remote SSH server rejected X11 forwarding request
    IoTSharp 已支持国产松果时序数据库PinusDB
  • 原文地址:https://www.cnblogs.com/cpcpp/p/12952570.html
Copyright © 2011-2022 走看看