git超詳細圖文教程——本地託管,倉庫創建,提交撤銷,誤刪恢復

分佈式管理虐殺集中式管理

  • 在以前,代碼都是通過集中式管理,大家從一個共享的或者說中央服務器裏下載下來項目,在各自的電腦上完成項目的各個部分,然後上傳回中央服務器,這樣一來,就會產生很多的問題:比如同事之間代碼版本不一致、文件過大效率低下,最後上傳了還要主動整合項目等等;

  • 而分佈式管理就能很好的解決問題。分佈式管理下每個人的電腦都像是一臺中央服務器,每個人的電腦上都有一個版本倉庫,當然,爲了方便所有項目參與者能在其他同事離線、請假不在、昇仙~等等特殊情況下依然能夠同步還在線並且活躍的項目參與者的版本和修改情況,git依然有一個用於管理項目的大的中央服務器。首先git的分佈式管理是允許並提供了僅上傳修改部分文件的功能,同時能明顯的卻別項目參與者各自修改的部分!這樣,A修改了什麼B能清晰的看到,B修改了什麼也能清晰的看到,他們上傳項目時都是上傳自己的修改部分,這樣就可以良好的合併項目!所以,git是個非常好的代碼託管工具,即使現在被微軟收購了。

  • 代碼管理方式

代碼管理機制

這裏的git倉庫是網絡中顯示在其他用戶面前的地方;暫存區是commit的目標;工作區是add的目標。有其他語言基礎的同學,我喜歡將工作區解釋爲緩存區,類似於系統內存或者虛擬內存,存着數據等待着傳到新的位置而修改,而暫存區我喜歡解釋爲最終管理器,所有的內容將通過這個管理器提交到服務器上,讓內容呈現在用戶面前,在網頁上得以顯示。

安裝Git

我以前做的一個git教程,有詳細的安裝步驟,注意環境配置!

這樣代表安裝成功了!

配置信息

  • 本地倉庫用戶信息配置
git config --global user.name  "WytheO"
git config --global user.email "[email protected]"
  • 查看本地配置信息
git config --list

本地配置信息

上面的路徑就是配置的環境信息,如果你使用vscode管理你的代碼,那麼需要安裝vscode的相關git manager插件等;

git提交準備

  • 準備一個用於測試的項目文件:

測試文件

  • 進入到當前文件夾下:可以選擇在文件夾下直接git bash直接打開或者控制檯cd 到目標目錄下:
    git bash 打開

gitbash打開

控制檯cd進入項目

git提交到管理器、暫存區

  • 初始化爲項目倉庫:
git init

然後你會發現文件夾下多了一些文件和文件夾:
git文件

這些文件就是記錄了創建者配置的信息以及當前代碼版本信息等;

git文件目錄

git倉庫創建好之後,文件夾內所有的修改與操作都會被git監聽到,並與上一個版本進行對比取出差異文件。

  • 提交我們的修改,修改前查看變化:
git status
git diff index.html # 查看修改信息,對於一些特殊的文件或者加密文件查看可能會出現異常,造成無法查看

這裏會看到和上一個版本倉庫的不同地方

git diff [...](可以跟文件名或者默認查看素有修改)示例:
修改前:
在這裏插入圖片描述

加入一行44444444:

在這裏插入圖片描述

在這裏插入圖片描述

  • 將代碼提交到緩存區管理器:
git add [path/file] # path/fiel 代表你要單獨提交的文件
#git add index.html 注意一開始我路徑截圖裏的文件,因爲是當前目錄下,所以不同添加路徑
git add . #如果是“.” 代表默認提交所有修改文件
  • 我們再查看一下管理器:

暫存區

  • 將修改提交到暫存區:
git commit -m "the first commit"

提交到暫存區

  • 我們再查看一下管理器狀態:
    管理器狀態

我們已經將修改後的文件提交到暫存區,那麼現在開始,就會有一個index.html文件的版本號存在於剛纔的隱藏文件.git的配置信息裏。

如果我們有再次修改了index.html文件,那麼git status又能夠查看到修改狀態,又可以通過git commit [...]命令提交,當然,這一次的版本和當一次的版本是不一樣的。

提交錯誤,版本回退

  • 查看歷史版本:
git log #這個會進入到日誌的文件裏並處於命令模式,按i 進入insert編輯模式,Ecs後按shift+分號退出insert編輯模式,在命令模式按wq保存退出;

HEAD—>master:表示最近一次提交的修改和提交到哪個分支,這裏我展示的提交到我的主分支的截圖。

比如我這一次修改:
日誌

再比如我另一個項目裏的版本歷史:
版本日誌

  • 版本回退:
git reflog #查看版本列表狀態
git reset --hard [版本id值] #git reset --hard ae6d00b
git reset --hard HEAD^ #返回到當前版本的上一次版本號狀態,一個“^”代表一個版本,HEAD是指向版本的指針。

在這裏插入圖片描述

文件誤傳,丟棄修改

  • 如果在git add 之前就進行了commit 會發生git status檢查錯誤,或者滾啊力氣發生錯誤異常清理了修改,仍然顯示文件未提交的錯誤信息,那麼我們需要通過一個命令來進行比對文件與管理器裏版本是否一致;
  • 如果你不小心錯誤修改了文件又提交到了暫存區時,而需要丟棄工作區修改時,先git reset HEAD [fiel]進行回退版本,然後使用下面命令丟棄修改;
  • 如果提交了錯誤版本需要撤銷本次提交時;
git checkout -- [文件名] #git checkout -- test.txt

如果發生commit後status仍然有修改信息,即發生了某些錯誤,致使管理器的修改信息沒有被清空,那麼使用上面的命令可以檢查比對修改文件和commit文件,最終進行清理。
清空管理器

雖然管理器是清空了修改信息狀態,但是文件是確確實實被修改了的,只是暫時屏蔽了本次提交的修改。如果有些文件不希望被提交上去,那麼久果斷丟棄提交吧。

文件刪除與恢復,git誤刪恢復

  • 我先增加一個test.txt並提交到版本管理器:

在這裏插入圖片描述
在這裏插入圖片描述

  • 然後我將它刪除:
git rm [file] #撤銷、刪除當前的修改操作

撤銷修改

  • 接着,使用版本控制命令回退文件:
git reset HEAD text.txt

回退

回退

這裏注意回退時間。

這個的牛逼之處在於,就算你清空了回收站,貌似還能恢復被誤刪的文件!
恢復

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章