Git版本的管理

2022-09-17 05:27:11 字數 2179 閱讀 7793

版本回退

如果你不停的修改,然後有很多版本,可以用git log檢視歷史記錄。git log命令顯示從最近到最遠的提交日誌。

如果如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline引數。

$ git log --pretty=oneline

需要友情提示的是,你看到的一大串類似3628164...882e1e0的是commit id(版本號),和svn不一樣,git的commit id不是1,2,3……遞增的數字,而是乙個sha1計算出來的乙個非常大的數字,用十六進製制表示,而且你看到的commit id和我的肯定不一樣,以你自己的為準。為什麼commit id需要用這麼一大串數字表示呢?因為git是分布式的版本控制系統,後面我們還要研究多人在同乙個版本庫里工作,如果大家都用1,2,3……作為版本號,那肯定就衝突了。

在git中,用head表示當前版本,上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100。

$ git reset --hard head^

$ git reset --hard 390493

版本號沒必要寫全,前幾位就可以了,git會自動去找。當然也不能只寫前一兩位,因為git可能會找到多個版本號,就無法確定是哪乙個了。

但是如果不記得這個commit id怎麼辦?git提供了乙個命令git reflog用來記錄你的每一次命令:

$ git reflog

管理修改

你會問,什麼是修改?比如你新增了一行,這就是乙個修改,刪除了一行,也是乙個修改,更改了某些字元,也是乙個修改,刪了一些又加了一些,也是乙個修改,甚至建立乙個新檔案,也算乙個修改。

為什麼git比其他版本控制系統設計得優秀,因為git跟蹤並管理的是修改,而非檔案。

為什麼說git管理的是修改,而不是檔案呢?我們還是做實驗。

第一步,對readme.txt做個修改。然後git add readme.txt新增,然後再修改readme.txt,最後再提交。

第一次修改 -> git add -> 第二次修改 -> git commit

然後發現,最後commit了第一次修改的檔案,第二次修改的沒有被提交。

這個時候要引入暫存區的概念。

其實git add這個命令是將修改的檔案放入乙個暫存區裡面,而git commit只提交暫存區裡面的東西。要是你沒有用git add這個命令,修改就不起任何作用。

我們可以這樣幹,第二次修改才能提交。

第一次修改 -> git add -> 第二次修改 -> git add -> git commit

撤銷修改

撤銷修改可以分幾種情況:

第一種:還沒有git add到暫存區,只是在檔案裡面修改,可以用這個命令輕鬆搞定,撤銷你的readme.txt修改:

$ git checkout -- readme.txt

git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷

第二種:已經用git add到暫存區,但還沒有commit提交。git同樣告訴我們,用命令git reset head file可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

$ git reset head readme.txt

git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head時,表示最新的版本。

然後我們再執行第一種情況的步驟:

$ git checkout -- readme.txt

第三種:已經commit到版本庫了。這個時候就要用到上面用到過的版本回退:

$ git reset --hard head^ 或者$ git reset --hard 390493

刪除檔案

比如要刪除readme.txt這個檔案,首先

$ git rm readme.txt

然後再再提交到版本庫:

$ git checkout -- readme.txt

命令git rm用於刪除乙個檔案。如果乙個檔案已經被提交到版本庫,那麼你永遠不用擔心誤刪,但是要小心,你只能恢復檔案到最新版本,你會丟失最近一次提交後你修改的內容。

版本管理 Git

4.一直回車,直到生成公鑰私鑰。預設位址c users linxz.ssh 5.在github上的選擇setting ssh and gpg keys,新增新的ssh key new ssh key tittle隨便寫,key是在c users lianjiu.ssh中id rsa.pub 公鑰 6...

Git 版本管理

為什麼要用分支提交?pull 取回分支再與當前分支合併,這等同於先做git fetch,再做git merge。git pull 遠端主機名 遠端分支名 本地分支名 git pull的問題是它把過程的細節都隱藏了起來,以至於你不用去了解git中各種型別分支的區別和使用方法。當然,多數時候這是沒問題的...

Git 管理版本

1 我們對test目錄下的readme.txt檔案新增新的內容,然後通過git status檢視當前test倉庫的狀態。注意一定要在test目錄下,執行該命令。可以看到readme.txt檔案已經被修改了,但是並沒有告訴我們具體的修改。可以通過git diff命令來檢視。通過git add file...