工作區有乙個隱藏目錄 .git ,這個不是工作區,而是git的版本庫。
git 的版本庫里存了很多東西,其中最重要的就是稱為 stage(或者叫 index )的暫存區,還有 git 為我們自動建立的第乙個分支 master ,以及指向 master的乙個指標叫 head 。
head指向的版本就是當前版本,因此,git 允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
。
穿梭前,用git log
可以檢視提交歷史,以便確定要回退到哪個版本。
要重返未來,用git reflog
檢視命令歷史,以便確定要回到未來的哪個版本。
用git diff head -- readme.txt
命令可以檢視工作區和版本庫裡面最新版本的區別。現在,你又理解了git是如何跟蹤修改的,每次修改,如果不add到暫存區,那就不會加入到commit中。
git checkout – file 可以丟棄工作區的修改:
$
gitcheckout--
readme
.txt
命令git checkout – readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:
一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。
總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。
小結又到了小結時間。
場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout – file。
場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head file,就回到了場景1,第二步按場景1操作。
Git版本回退
1 檢視檔案修改歷史 git log 返回的是commit後的操作記錄 git log pretty oneline 也可以使用這個命令格式化日誌輸出 2 版本回退 git reset hard head 回退到上乙個版本 git reset hard head 100 會退到第100個版本,例如現...
git版本回退
先說今天遇到的問題,看到乙個config.php的配置檔案一直在修改的狀態下,但是和遠端的config.php是不一致的,我不需要提交它,但是看它在 modified的狀態下,很不爽,想刪除它,git rm config.php,然後git push了下,結果不僅把本地的config.php乾掉了,...
git版本回退
把修改後的版本通過命令提交到版本庫 第一步 git add 檔名 字尾 第二步 git commit m commit id 但是有時候想回去怎麼辦呢?當然萬能的git給我們提供了方法的。我們先檢視一下最近到最遠的提交紀錄操作如下 在命令航輸入 git log 會顯示提交日誌,但是嫌輸出過多怎麼辦,...