Git 版本管理

2022-05-06 12:15:07 字數 2267 閱讀 7311

應用情景1:新增檔案(單個、多個、目錄)到git版本庫,提交乙個版本快照。

應用情景2:穿越歷史回到過去,版本回退,從當前版本回退到之前提交過的某個版本上。

應用情景3:穿越歷史過頭了,版本回退多了,目的時間是2023年,結果硬是穿到了2023年,沒辦法,又得從2023年穿越到"未來"的2023年。

情景1:

假設有乙個目錄 work ,裡面三個檔案:file1、file2、file3:

git add work/file1    # 新增單個檔案到版本庫

git add work/file1 work/file2 work/file3 # 新增多個檔案到版本庫

git add work/# 新增整個目錄到版本庫

git add . # 新增所有檔案到版本庫(.gitignore忽略的檔案除外)

git commit -m "

add file1 file2 file3

" # 提交版本快照

情景2:

假設從專案開發到現在,一共提交了3個版本快照到git版本庫(3次有效的 git commit),分別是

git commit -m "

first commit

"git commit -m "

second commit

"git commit -m "

third commit

"

當前我們便是在最新版本(也就是最後一次提交的版本 "third commit")上進行開發,假設突然發現 "third commit" 版本存在重大問題,需要回退到"之前某個版本"上重新開發:

# 第一步:找到之前提交的某個版本的 commit id

git log # 檢視歷史提交記錄,裡面有 commit

id資訊

git log --pretty=oneline # 簡化版的歷史提交記錄

# commit id類似於

"5c6c438396bd9db4f24d299fc68f3150ec81b2f8

"這樣的字串

# 根據 commit

id回退到指定版本

git reset --hard

git reset --hard 5c6c438396bd9db4f24d299fc68f3150ec81b2f8 # 沒必要寫全,寫前幾位即可,但是要保證git能夠根據你提供的資訊找到唯一的 commit id

回退版本的另外一種方法:git中有乙個特殊的指標head,永遠指向當前版本,所以,可以用head表示上乙個版本head^,上上個版本head^^,向上幾個版本就在head後面加寫幾個^,當然,寫太多的^不現實,所以向上100個版本可簡寫為head~100,其它可依此類推。

git reset --hard head^# 回退到上個版本

git reset --hard head^^# 回退到上上個版本

git reset --hard head~100 # 回退到100個版本之前

當前版本(third commit)回退到某個版本 (first commit)後,當前版本就是 first commit。檢視歷史提交記錄,只會有 first commit 及之前的提交記錄,就彷彿是 second commit 版本和 third commit 版本是一種幻覺,從來就沒有提交過一樣。

情景3:

在情景2中,回退到了 first commit 版本上後發現回退多了,此時想要再回到 "未來 second commit 版本" 或是 "未來 third commit 版本"

# 版本可以自由回退穿越,但是所有的git操作都會被git按順序記錄下來,必然有某個命令可以檢視歷史操作。

git reflog # 檢視歷史操作記錄,從中可以找到所有真實提交過的 commit

id# 假設 second commit 版本

id 是 6w59a45,third commit 版本 id

是 8m334k2

git reset --hard 6w59a45 # 從 first commit 版本穿越到"

未來"

second commit 版本

git reset --hard 8m334k2 # 從 first commit 版本穿越到"

未來" third commit 版本

總結:所有提交過的版本都會被git如實的記錄下來並分配獨一無二的 commit id,在版本間來回穿越的關鍵就是想方設法找到目的版本的 commit id。

版本管理 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...