git使用總結

1.     神器:不懂的用法直接githelp cmd。cmd爲你想查看的命令。

2.     從倉庫中拉出所有文件

簡單理解,等同於不小心把文件全部刪除了,只剩下倉庫。簡單地執行gitreset –hard即可;

3.     git reset的三種模式

要理解reset的模式,先明確git的提交流程:

1.      修改工作樹

2.      git add,對當前修改生成快照

3.      git commit,提交當前的修改。

當然,通常情況下,可以用git commit -a,相當於同時做第2、3步。

--soft:不修改工作樹中的文件和倉庫索引,保留了add生成的快照,只是退回了commit的過程(相當於退回到commit前,add後);

--mixed:不修改工作樹,修改了倉庫索引,不保留快照,相當於退回了commit和add兩個過程;

--hard:修改工作樹,相當於所有東西,包括工作樹和倉庫,原原本本地退回到指定的<commit>

4.     git回退版本——恢復所有文件

由於git 沒有svn方便的update to revision功能,所以只能另尋替代功能了。

如果你要乾乾淨淨地回到之前某個版本,在此之後的所有提交都不需要保留。那麼簡單地進行reset即可:

$ git reset --hard <commit>

$ git checkout <commit>

<commit>爲你要退回的版本號。但是如果你只是想回去查看一下以前的代碼,看完後需要回到最新的HEAD上來,有兩種方法:一是reset前先記住當前HEAD的commit號,用gitcheckout命令時也會有提示當前HEAD號的功能。當然這樣做有風險,萬一忘了HEAD號退不回去了,那就萬事over了;二是gitreset前先建一個新的branch,在新branch上隨便你折騰,最後刪除這個不用的branch即可;推薦用二。

5.     git回退版本——恢復單個文件

因爲gitreset在帶--hard的情況下不能加目錄名,所以此時只能是gitcheckout派上用場了。

丟棄當前所有更改,回到HEAD的版本:

$ git checkout <path>

回到之前的某個版本

$ git checkout <commit> <path>

注意:此時對應文件已被更改,但是已處於被add的狀態,所以用gitdiff是看不到其與當前HEAD上對應文件的區別的,除非用gitdiff --cache或執行:

$ git reset

 

這種方法不僅可以回到當前branch的某次提交,也可以將非當前branch的某次提交的文件checkout出來,如:

$ git checkout otherbranch~0 log.txt

~後的數字n表示對應branch的HEAD之前的第n次提交。

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