git有4個區域:
工作區(working directory) :工作區是我們能看到的區域,就是本地目錄,我們在目錄裡面進行操作;
暫存區(stage index):git add命令就是將檔案從工作區新增到暫存區;
本地版本庫(repository):git commit命令就是將暫存區的檔案提交到本地版本庫中;
遠端庫:git push命令就是將本地版本庫中的檔案推送到遠端庫中。
四者的關係如下圖:
1、在使用git add 《檔名》
命令的時候,最好緊跟著git commit -m '操作描述'
。
坑:如果你上一次操作的時候,只將一些檔案add到了暫存區,但是並沒有commit到本地版本庫中,那麼你這次push的時候,會將上一次殘留在暫存區的檔案,一起push到遠端庫中;而上次操作中已經commit到本地版本庫的檔案,是不會影響這次的push的.
2、git reset 《檔名》
撤銷已經add到暫存區,但是還沒有commit的檔案。
如果你往暫存區中add了一些錯誤的檔案,但是還沒有commit到本地版本庫。你可以使用上述命令撤銷add。
3、假如本地版本庫叫learngit,結構如下:
然後,第一次向空的遠端庫中推送檔案的時候,我僅僅只是想將檔案lalala.txt push到遠端庫中,所以我在目錄/home/lanyue/learngit/fold下進行操作:
git add lalala.txt
git commit -m '新增檔案lalala.txt'
git push origin master
發現,push到遠端庫上的是乙個資料夾fold(包含lalala.txt),而不是只是乙個檔案lalala.txt,為什麼????
因為本地的learngit目錄是用git init
初始化過的,它是本地版本庫的根目錄,而「遠端庫的根目錄」是跟「本地版本庫的根目錄」保持一致的,所以你將fold/read.txt推送到遠端的時候,遠端庫中呈現的結構是與本地版本庫的根目錄保持一致的。如果你只想push檔案read.txt到遠端庫,將read.txt放在本地版本庫的根目錄learngit下,再add,commit,push就可以了。
4、git checkout -- 《檔名》
誤刪工作區的檔案,用本地版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。
坑:會清除工作區中未新增到暫存區的改動 ,使用的時候要注意。
5、git rm -r --cache 《檔名》
刪除暫存區的檔案(不改變工作區的該檔案)
坑: 刪除暫存區的該檔案之前,你要確定之前在暫存區中的檔案,你確實是不需要了,能被刪除。因為該命令實際上的意思是,停止追蹤某個檔案(但是並不會改變工作區中的該檔案),這樣的話這個檔案就沒有追蹤記錄了。假如你在本地工作區誤刪了該檔案(但是該檔案你之前已經commit到了本地版本庫中),此時你想要恢復該檔案到本地的工作區,是不能用git checkout -- 《檔名》
恢復過來的!!!
6、git status
檢視暫存區和工作區檔案的狀態
git status只能看到」add到暫存區但是還沒有commit到本地版本庫的檔案」和」還沒有被add到暫存區的檔案(工作區的檔案)」的狀態,已經commit到本地版本庫的檔案,是看不到的。看專案歷史的資訊要使用git log。
「add到暫存區但是還沒有commit到本地版本庫的檔案」的狀態是「unstaged」;
「還沒有被add到暫存區的檔案」的狀態是「untracked」;
git使用踩坑
1.在本地建立資料夾如c users ykc desktop test 2.開啟git bash進入上面的資料夾。ls cd desktop test 3.使用git init對本地資料夾進行初始化,剩餘步驟依次進行 git init git clone 遠端倉庫鏈結 git mv f oldnam...
使用git遇到的坑
在github上面已經上傳過不少 了,雖然關注的人很少,我還是低調的做著這件事情。這個也見證了我學習之路。但是對於使用git命令還是一知半解,這裡只是總結我所遇到過的坑 1 git上傳 的流程 首先要在github 上面建立乙個屬於專案的倉庫 2 使用git shell命令視窗進行工程的上傳。cd ...
學習git時候的筆記
git config user.name git config user.email git config global user.name git config global user.email git init git add 或者git add a 用來把自己改動的所有檔案放到儲存區,支援相...