Git
回退版本
#回退至上一次提交的版本#中间的六个长度的字符串对应的是日志信息的提交id的前六位#网上回退100个版本$ git reset --hard HEAD~100$ git reset --hard HEAD^HEAD is now at c338f61 第三次提交#回退至指定版本$ git reset --hard cac83aHEAD is now at cac83a7 第二次提交#查看使用过的指令$ git reflogcac83a7 (HEAD -> master) HEAD@{0}: reset: moving to cac83ac338f61 HEAD@{1}: reset: moving to HEAD^99d4ce1 HEAD@{2}: commit: 第四次提交c338f61 HEAD@{3}: commit: 第三次提交cac83a7 (HEAD -> master) HEAD@{4}: commit: 第二次提交77c2b2c HEAD@{5}: commit (initial): 第一次提交
Git提交过程

我们首先要理解git的提交过程第一步是用git add把文件添加进去,实际上就是把文件修改添加到缓存区;第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到本地仓库。创建Git版本库时,Git自动创建一个master分支,所以,现在,git commit就是往master分支上提交更改。
管理修改
#查看a文件$ cat a.txtaaaaaaaaaaa#修改文件后查看$ cat a.txtaaaaaaaaaaabbbbb#add到缓存区$ git add a.txt#再修改文件$ cat a.txtaaaaaaaaaaabbbbbcc#直接commit到本地仓库$ git commit -m "第三次提交"[master a4c3eaf] 第三次提交 1 file changed, 1 insertion(+)#此时查看a.txt的状态还是修改未添加提交,这是因为,commit只把add到缓存区的文件commit到本地仓库,因此只要修改文件,都要先add再commit,这同时也是Git的一种安全机制#git diff对比修改你修改过的文件会清楚的标识出来$ git diffdiff --git a/learn2/a.txt b/learn2/a.txtindex 776474b..a8ff3e8 100644--- a/learn2/a.txt+++ b/learn2/a.txt@@ -4,3 +4,4 @@ ccccccc ddddddddd eeeee fffff+gggg
撤销修改
你写代码,写完提交了,突然发现自己写错了,这时候就需要回退一下#先修改一次提交$ cat a.txtaaaaaaaaaaabbbbbbbbccccccc$ git commit -m "第三次提交"[master a4c3eaf] 第三次提交 1 file changed, 1 insertion(+)再修改a文件$ cat a.txtaaaaaaaaaaabbbbbbbbcccccccddddd添加到缓存区$ git add a.txt回退版本$ git checkout -- a.txt此时再查看a文件$ cat a.txtaaaaaaaaaaabbbbbbbbccccccc发现回退到修改前的版本再修改a文件$ cat a.txtaaaaaaaaaaabbbbbbbbcccccccddddd添加到缓存区$ git add a.txt查看a文件的状态 发现已经添加到缓存区 可以提交的状态$ git statusOn branch masterChanges to be committed: (use "git restore --staged <file>..." to unstage) modified: a.txt用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:$ git reset HEAD a.txtUnstaged changes after reset:M learn2/a.txt查看a文件的状态 发现未添加到缓存区 可以添加的状态$ git statusOn branch masterChanges 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: a.txtno changes added to commit (use "git add" and/or "git commit -a")