企業中在多人的項目開發環境下,使用Git 版本控制工具對項目版本進行管理時,一般會對項目不一樣版本的文件進行查看,項目歷史版本,將來版本的切換操做,對於一個項目開發人員,此時對於Git 的這些基本命令操做就成爲了一項基本技能。git
修改後內容以下:算法
此時當文件修改後 使用 git status
命令能夠看到git 檢測到文件被修改,git 版本庫給出的下一步操做是添加修改的文件到暫存區 此時執行添加操做命令ide
執行提交工具
git log
命令查看操做日誌記錄版本控制
修改須要注意的問題
指針
下面再次修改git01.txt 而後執行提交操做日誌
此時 執行 git diff HEAD -- git01.txt
與版本庫內容進行比較結果以下:code
差別比較說明 `---`:表示變更前的文件 `+++`:表示變更後的文件 變更的位置用兩個@做爲起首和結束 @@ -1,2 +1,3 @@:減號表示第一個文件,"1"表示第1行,"2"表示連續2行。一樣的,"+1,3"表示變更後,成爲第二個文件從第1行開始的連續3行。
能夠看出:文本中第三行內容並無提交到版本庫中 緣由在於修改後的git01.txt 並無添加到暫存區,全部執行提交操做並不會發生改變。blog
暫存區文件提交與撤銷
排序
當發現因失誤而將文件添加到暫存區時,git 支持文件的撤銷操做 執行命令 git reset HEAD 文件
操做以下:
再次查看版本庫狀態 test.txt 成爲未追蹤文件
當文件修改後被提交的次數不少時,對於版本庫中存放的文件就會出現不一樣的版本,在多人開發的項目環境中,一般會對不一樣版本文件進行查看甚至回退的狀況(好比某些遊戲中所提供的狀態保存功能,可以在某一時刻保存整個遊戲場景狀態以方便後續繼續在該狀態下進行遊戲進行而不是從頭開始),值得慶幸的是 Git 也提供了一樣的功能,可以讓開發者在不一樣版本的項目中進行切換,達到時空穿梭自如的目的!
對於上面操做的git01.txt 文件已有幾個版本,對於歷史版本的查看 使用git log
命令:
git log:命令用於顯示提交日誌信息
列表顯示的結果按提交時間倒敘排序,其中第一條中 HEAD -> master
表明當前指針指向Git 版本庫中master 主幹分支,每次提交 Git 內部均會生成一個惟一的SHA 算法構建的字符串來惟一標識當前版本
此時若是想要執行版本版本回退操做使用命令 git reset
git reset 命令用於將當前HEAD復位到指定狀態。通常用於撤消以前的一些操做(如:git add,git commit等)。
回滾前在執行兩次提交操做 方便文件不一樣版本間的切換
第三次提交 修改後的git01.txt 內容以下:
第四次提交 修改後的git01.txt 內容以下:
git log
查看提交歷史記錄以下
固然,若是提交歷史記錄較多 能夠加入數字控制顯示的版本記錄數 而且使用--pretty=oneline
簡化輸出 以下:
顯示最近三次提交
切換版本前 git01.txt 內容以下:
回退到上一版本
執行 git reset --hard HEAD^
HEAD^:將指針指向上一個版本,若是是上上一個就是 HEAD^^,上上上一個HEAD^^^,但這樣記就比較麻煩,若是回退版本較多,簡寫爲 HEAD~100 往前回退100個版本 ~後跟數字便可
查看回退後的git01.txt內容以下:
回退操做已經完成,但此時若是想要回到將來的版本即最新的版本怎麼辦呢? 其實這裏也比較簡單,前面說到針對提交後的版本庫,每一個版本均會有一個惟一標識,這裏找到對應版本標識便可完成回到將來版本的操做 以下
執行git reset 命令以下:
若是此時回到某一個版本後直接關閉了當前git 命令窗口 怎麼樣才能回到將來版本呢?由於此時將來版本的惟一標識id 在窗口中看不到了!
值得慶幸的是,Git早已爲你想到了這種狀況,Git提供了一個命令git reflog
用來記錄用戶操做的每一次命令,效果以下:
git reflog:查看記錄在本地的HEAD和分支引用在過去指向的位置。
在Git中,刪除文件一樣是一個修改操做,即在Git世界中,Git僅僅關注文件是否被修改(文件添加,更新,刪除)
在工做區添加新文件git02.txt 內容以下:
將文件添加到版本庫
文件提交到版本庫後,在工做目錄執行手動刪除操做後執行git status
命令能夠看到Git 可以追蹤到文件被刪除狀況,注意此時版本庫中文件並無被刪除,只是工做目錄中文件被刪除!
若是此時發現文件是被誤刪除呢,不用擔憂,這裏能夠將誤刪除的文件從新從版本庫中檢出,執行命令:
git checkout -- 文件名
若是肯定是要執行刪除操做 執行git rm 命令便可
字這種字