简单使用Git与github(三)

时间:2021-03-28 05:03:22

git版本回退

参考
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000
mark下来,以后方便查找。
git 的版本回退操作步骤

  • git log 查看提交记录

    git log从提交记录里面可看到提交的版本号,git和SVN的版本号不一样,git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示.
    简单使用Git与github(三)
    黄色的字体跟在commit后面的就是提交的版本号。

  • $ git reset –hard HEAD^

    git reset --hard HEAD^ 表示回退到上一个版本。继续使用这条指令可以还可以继续回退到上一个版本,但是步骤有点麻烦。

  • git reset –hard 24f3f02cce00c646bd76b0283ff355fd28bc7dca

    可以从log里面的版本号直接回退到该版本号,版本号不用写全,写前面几位数也可以,git会自动去找,例如:git reset --hard 24f3f这样既可回到该版版号。

  • git reflog

    现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?在tit中,总是有后悔药可以吃的。git提供了一个命令git reflog用来记录你的每一次命令。看到这些记录的指令,你就可以使用git reset --hard 回到某个版本了。
    简单使用Git与github(三)

git撤销修改

  • 没有修改过的时候

    当你没有做过修改的时候使用git status查看状态时会出现如下:

    $ git status
    On branch master
    nothing to commit, working tree clean
  • 场景1:修改并未add

    当你修改了本地的README.md,并未add和commit提交的时候,使用git status,出现如下提示:
    简单使用Git与github(三)
    这时候你直接改本地文件或者,使用git checkout --<file>...可以放弃工作区的修改。例如:git checkout -- README.md意思就是,把README.md文件在工作区的修改全部撤销。你打开README.md查看就发现修改的呗撤销了。

  • 场景2:已经add到缓存区了但未commit

    假如你已经将修改多的文件add到了缓存区,想回退清空缓存区的时候。
    简单使用Git与github(三)git会友好的提示你change to be commited也可以回退使用git reset HEAD <file>...可以把暂存区的修改撤销掉(unstage),重新放回工作区。
    简单使用Git与github(三)git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。再用git status查看一下,现在暂存区是干净的,工作区有修改。可以使用放弃工作空间的修改git checkout -- README.md意思就是,把README.md文件在工作区的修改全部撤销

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考上面的git版本回退,不过前提是没有推送到远程库。

git查看工作区和版本库里面最新版本的区别

git diff命令可以查看工作区和版本库里面最新版本的区别,也可以用git diff HEAD <file>指定某个文件和最新本版本库里面的区别,例如指定README.md文件:git diff HEAD README.md

git rm删除文件

在git 指令中可以用git rm <file>进行删除文件。例如我要删除已经提交的一个文件test.txt。直接使用git rm test.txt就可以把该文件删除了。查看删除的状态如图:
简单使用Git与github(三)
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit。另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:$ git checkout -- test.txtgit checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。