git 仓库 回退功能 git checkout

Posted mingerlcm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git 仓库 回退功能 git checkout相关的知识,希望对你有一定的参考价值。

 

 

 

类似于虚拟机快照功能,点击快照,回退倒快照前的状态

回退到正确的commit,回退到那一次commit,只让他跳转到某一次commit

 

第一种情况 改变工作区

查看文件a内容

 

[root@ci-node1 git_test]# cat a
test
bbb

 

 

 

 

现在改变本地工作目录 对文件a 追加ccc内容

[root@ci-node1 git_test]# echo "ccc" >> a
[root@ci-node1 git_test]# cat a
test
bbb
ccc

现在改变了本地工作目录 ,暂存区和本地仓库是没有改变的

// 对比暂存区和本地仓库 没有变化
[root@ci-node1 git_test]# git diff --cached a
[root@ci-node1 git_test]# 

 

本地工种目录改变了,加了ccc

[root@ci-node1 git_test]# git diff a
diff --git a/a b/a
index 126f52b..26a3227 100644
--- a/a
+++ b/a
@@ -1,2 +1,3 @@
 test
 bbb
+ccc

 

 

如果是一个文件改回来就行,如果是多个文件,这时候可以用暂存区覆盖本地工种目录

 

签出 git checkout

如果仓库中已经存在文件 a.txt,在工作区中对 a.txt 修改了,如果想撤销可以使用
checkout,签出覆盖。检出命令 git checkout 是 git 常用的命令之一,同时也是一个很
危险的命令,因为这条命令会重写工作区

 

git checkout -- filename

//用暂存区中filename文件来覆盖工作区中的filename 文件。

相当于取消自上次执行git add filename 以来(如果执行过)的本地修改。 

[root@ci-node1 git_test]# cat a
test
bbb
[root@ci-node1 git_test]# echo "ccc" >> a
[root@ci-node1 git_test]# cat a
test
bbb
ccc
[root@ci-node1 git_test]# git checkout -- a
[root@ci-node1 git_test]# git status
On branch master
nothing to commit, working tree clean
[root@ci-node1 git_test]# cat a
test
bbb

 这种情况是只改变本地工作目录

 

***注意:git checkout . 这条命令危险,相当于用暂存区的所有文件直接覆盖本地
文件,不给用户任何确认的机会!

 

第二种情况看这个链接  

改变工作目录 ,又改变暂存区

 

git 仓库 撤销提交 git reset and 查看本地历史操作 git reflog 

 

 

 

 

 

 

 

以上是关于git 仓库 回退功能 git checkout的主要内容,如果未能解决你的问题,请参考以下文章

(转)git checkout 撤销修改

git resetgit checkout和git revert的区别

Git常用指令

git回退版本 远程仓库会被回退吗

SVN之于GIT的理论优势

git回退代码仓库版本