Git常用命令總結

2021-06-17 23:27:00 字數 2766 閱讀 4902

原文**:

author: joseph lee

e-mail: [email protected]

基礎概念:

git是分布式版本控制系統,在每個主機上都儲存這版本庫的完整映象,這於cvs,svn

等集中式版本控制系統不同,集中式版本控制系統僅是在伺服器上儲存有所有資訊。

git檔案更改後是以快照的方式來儲存每個版本,而傳統的是儲存不同版本見的差異。

git在提交前都要使用sha-1演算法進行內容校驗和計算,並以此來標記檔案和目錄。

git控制下檔案的三種狀態:committed(已提交),modified(已修改),staged(

暫存狀態,標記提交但尚未提交)。

git基本工作流程:在工作目錄中修改檔案;快照,儲存到暫存區;提交。

git安裝

linux下可以原始碼編譯或二進位制安裝,依賴curl, zlib, openssl, expat, libiconv等

windows下可以安裝mysysgit,位於

git配置

使用git config或者git-config命令,可以配置使用者名稱,電郵,預設日誌編輯器等等

具體參見git help config

基礎操作

(a) 檢查檔案狀態,如果檔案沒有納入git管理,會在untracked files列出

$git status

(b) 將工作目錄下的已修改的檔案新增到staged狀態

$git add (c) 做差異比較,git儲存快照而不是差異,所以diff的內容是運算得出的。

$git diff git diff指示的是處於modified狀態的修改內容,處於staged和committed的不顯示。

$git diff --cached 上述命令顯示處於staged狀態的檔案和committed狀態之間的差異

(d) 提交更新,將檔案從staged狀態提交到committed狀態

$git commit

自動將modified狀態的檔案也提交,跳過staged狀態。

$git commit -a

(e) 刪除檔案或目錄,強制刪除新增-f選項(比如修改已經staged的檔案)

$git rm 從倉庫中刪除,但保留本地檔案

$git rm --cached (f) 檔案更名,實質是刪除舊檔案,新增新檔案

$git mv (g) 檢視日誌,

$git log 選項:

-p選項顯示每次差異

-n顯示最近n次更新的日誌

--stat統計更改的行數

gitk工具用於圖形介面檢視git日誌

(h) 使用當前暫存區重做最後一次提交,可以修改提交日誌資訊,新增要提交的檔案等

$git commit --amend

(i) staged -> modified

$git reset (j) 丟棄修改,恢復到老版本

$git checkout -- 注意:reset和checkout --會導致修改丟失,要小心操作。

(k) 遠端倉庫操作:

關於orgin:clone以後這個指代當初clone時的源遠端倉庫

檢視當前所有遠端倉庫和遠端倉庫資訊(url以及跟蹤的分支):

$git remote -v

$git remote show 新增乙個遠端倉庫:

$git remote add 從遠端倉庫獲取資料,獲取遠端倉庫有而本地沒有的資料

$git fetch 從遠端倉庫的master分支更新資料到本地的master分支(預設)

$git pull

將本地更改推送到遠端倉庫,需要有提交許可權並且沒有別人推送過或正在推送

$git push 重新命名和刪除遠端倉庫

$git remote rename $git remote rm (l) 新增標籤

列出標籤,按字母排序:

$git tag

新增標籤:

$git -a -m "tag info"

新增並簽署標籤,需要gpg簽名:

$git -s -m "tag info"

檢視標籤資訊:

$git show 驗證標籤,可以驗證標籤簽名,需要有簽署者的公鑰放在keyring中:

$git tag -v 追加標籤,通過某此更改後的校驗和

$git tag -a 標籤分享到伺服器,分享特定標籤和所有標籤

$git push $git push --tags

(m) 初始化乙個工作目錄採用git管理,目錄下要管理哪些檔案需要自行新增。

$git init

(n) 從伺服器映象乙個倉庫到本地,支援git, http, https, ssh等格式的url。

$git clone (o) 忽略檔案列表 .gitignore,被忽略的檔案不會出現在untracked files中。

忽略檔案萬用字元: '*'匹配任意個任意字元,''表示選擇範圍,'?'匹配乙個

任意字元,'!'表示對匹配集合取反,這個可以參考各類正規表示式的規範,都

比較類似。.gitignore檔案中以'#'開頭的行為注釋行,還支援忽略目錄。

(p) 從本地git倉庫中匯出某個版本並打包成tar.bz2包

$git-archive -v --format=tar v2.6.32 |bzip2 > ../linux-2.6.32.tar.bz2

git分支

疑問: git中映象伺服器是什麼地位。

---------------------------------------

references:

git常用命令總結

一 分支新建與切換 git中的分支,本質上僅僅是個指向 commit 物件的可變指標。1 新建乙個分支 比如新建乙個名為testing的分支 git branch testing 即是在當前commit物件上新建了乙個分支指標 注 head指向當前所在的分支,用cat git head可以檢視 2 ...

git常用命令總結

檢查git 是否安裝 git 新增git 個人資訊 git config global user.name your name git config global user.email email example.com 建立乙個版本庫 mkdir learngit 建立乙個空目錄 cd learn...

Git常用命令總結

1.git init 建立 倉庫 2.git add 將對應目錄下所有的檔案及資料夾新增進來,準備提交 3.git commit m content 真正提交 m後面跟的是對本次提交的描述 4.git status 檢視 庫修改內容 5.git diff git diff 檔案具體路徑 檢視具體修改...