Git整理(二)

Git

回退版本

#回退至上一次提交的版本
#中間的六個長度的字符串對應的是日誌信息的提交id的前六位
#網上回退100個版本$ git reset --hard HEAD~100
$ git reset --hard HEAD^
HEAD is now at c338f61 第三次提交

#回退至指定版本
$ git reset --hard cac83a
HEAD is now at cac83a7 第二次提交

#查看使用過的指令
$ git reflog
cac83a7 (HEAD -> master) HEAD@{0}: reset: moving to cac83a
c338f61 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.txt
aaaaaaaaaaa
#修改文件後查看
$ cat a.txt
aaaaaaaaaaa
bbbbb
#add到緩存區
$ git add a.txt
#再修改文件
$ cat a.txt
aaaaaaaaaaa
bbbbb
cc
#直接commit到本地倉庫
$ git commit -m "第三次提交"
[master a4c3eaf] 第三次提交
 1 file changed, 1 insertion(+)
#此時查看a.txt的狀態還是修改未添加提交,這是因爲,commit只把add到緩存區的文件commit到本地倉庫,因此只要修改文件,都要先add再commit,這同時也是Git的一種安全機制

#git diff對比修改你修改過的文件會清楚的標識出來
$ git diff
diff --git a/learn2/a.txt b/learn2/a.txt
index 776474b..a8ff3e8 100644
--- a/learn2/a.txt
+++ b/learn2/a.txt
@@ -4,3 +4,4 @@ ccccccc
 ddddddddd
 eeeee
 fffff
+gggg

撤銷修改


你寫代碼,寫完提交了,突然發現自己寫錯了,這時候就需要回退一下
#先修改一次提交
$ cat a.txt
aaaaaaaaaaa
bbbbbbbb
ccccccc

$ git commit -m "第三次提交"
[master a4c3eaf] 第三次提交
 1 file changed, 1 insertion(+)

再修改a文件
$ cat a.txt
aaaaaaaaaaa
bbbbbbbb
ccccccc
ddddd
添加到緩存區
$ git add a.txt
回退版本
$ git checkout -- a.txt
此時再查看a文件
$ cat a.txt
aaaaaaaaaaa
bbbbbbbb
ccccccc
發現回退到修改前的版本

再修改a文件
$ cat a.txt
aaaaaaaaaaa
bbbbbbbb
ccccccc
ddddd
添加到緩存區
$ git add a.txt
查看a文件的狀態 發現已經添加到緩存區 可以提交的狀態
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   a.txt
用命令git reset HEAD <file>可以把暫存區的修改撤銷掉(unstage),重新放回工作區:
$ git reset HEAD a.txt
Unstaged changes after reset:
M       learn2/a.txt
查看a文件的狀態 發現未添加到緩存區 可以添加的狀態
$ 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:   a.txt

no changes added to commit (use "git add" and/or "git commit -a")

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章