博客 / 詳情

返回

Git版本管理工具常用命令整理和説明

工作區:就是你在電腦裏能看到的目錄。

暫存區:英文叫stage, 或index。一般存放在 ".git目錄下" 下的index文件(.git/index)中,所以我們把暫存區有時也叫作索引(index)。

版本庫:工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。

第一步:用户名和郵箱。

分別修改用户名和郵箱,其中--global帶和不帶的區別在於操作文件是.git/config還是~/.gitconfig,如果你使用的是--system則對應的就是/etc/gitconfig文件。

對於是否在最後帶username或email,區別在於你是設置還是查看。

git config [--global] user.name [username]

git config [--global] user.email [email]

第二步:主機。

列出所有遠程主機,使用-v選項(即:git remote -v),可以參看遠程主機的網址,使用show hostname可以查看主機hostname的詳細信息。

git remote [show hostname]

添加連接的遠程倉庫,其中hostname是給倉庫起的名稱,uri是倉庫地址。

git remote add hostname uri

刪除連接的遠程倉庫,其中hostname是給倉庫起的名稱。

git remote rm hostname

修改遠程主機oldhostname名稱為newhostname。

git remote rename oldhostname newhostname

第三步:初始化。

使用該命令會在目錄中創建新的Git倉庫,本地化的。

git init

把uri指定的倉庫代碼克隆到本地來,如果加了可選參數dir,表示克隆到該文件夾下。

git clone uri [dir]

第四步:提交。

從遠程服務器拉取代碼更新,hostname是對應的倉庫名稱,branchname是分支名稱。

git pull hostname branchname

【不推薦直接用這個】添加文件到緩衝區,你可以指定添加的文件filename,也可以使用-A把文件夾下全部文件添加到緩衝區。

git fetch hostname branchname

git diff localbranchname hostname/branchname[ -- filepath][ >>filePath]

git merge hostname/branchname

【推薦使用這個比較安全】以上命令的含義:首先從遠程的hostname的branchname分支下載最新的版本到hostname/branchname分支上,然後比較本地的branchname分支和hostname/branchname分支的差別,最後進行合併。

最後可選參數 -- filepath是指定對比的文件,不指定就是全部文件。

最後的可選參數 >>filePath表示把差異文件輸出到文件,方便查看。

git add filename|-A

提交代碼到本地倉庫,-m後面的remark表示對這次提交的描述。

git commit [-m remark]

提交代碼到遠程服務器,hostname是對應的倉庫名稱,branchname是分支名稱。

git push hostname branchname

第五步:日誌。

查看日誌(-p顯示每次提交的內容差異),後面的那些可選參數是對日誌過濾以後再顯示,-num舉個例子:-2表示查看最近2次的提交歷史記錄,後面的fileName和branchName方便表示查看特定文件和分支的日誌,commit代表查看提交日誌。

git log [-p] [-num|fileName|branchName|commit]

顯示整個本地倉儲的commit,包括所有branch的commit,甚至包括已經撤銷的commit,只要HEAD發生了變化,就會在reflog裏面看得到,git log只包括當前分支的commit。

git reflog

第六步:回退。

將特定的filename文件回滾到hashname提交。

git checkout hashname filename

用暫存區的所有文件直接覆蓋本地文件,不給用户任何確認的機會,可以理解放棄本地修改。

git checkout .

如果發現最新的一次提交完了加某個文件,它會把最新的提交打回暫存區,並嘗試重新提交。

git commit —amend

把add添加的文件filename從緩衝區刪除。

git reset -- filename

恢復到hashname指定的提交時,不保留修改。

git reset --hard hashname

恢復到hashname指定的提交時,保留修改。

git reset --soft hashname

回滾提交,其中HEAD是最新的一次提交別名(git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。)。

git revert HEAD|hashname

第七步:比較。

查看二次提交對比修改了什麼,可以看見他們之間的全部更改。

git diff commitFromHashname..commitToHashname

執行該命令可以知道倉庫目前的狀態,是否是最新代碼,有沒有修改等。

git status

查看當前全部文件的修改

git diff HEAD

僅查看變化(changes 【not staged】to be commited)

git diff

僅查看變化(changes 【staged】to be commited)

git diff --staged

第八步:合併。

合併分支branchname到當前活躍分支。

git merge|rebase branchname

第九步:暫存。

暫存當前正在進行的工作,比如想pull最新代碼,又不想加新commit,或者另外一種情況,為了fix一個緊急的bug,先stash,使返回到自己上一個commit,改完bug之後再stash pop,繼續原來的工作。

git stash

取出最後暫存的,並從暫存棧移除。

git stash pop

將當前的暫存棧信息打印出來。

git stash list

將暫存棧清空。

git stash clear

將你指定版本號為stash@{num}的工作取出來,不會移除。

git stash apply stash@{num}

第十步:標籤。

查看已經打的標籤,如果要進行篩選,可以使用-l添加選擇(比如git tag -l v1.會選擇開頭是v1.標籤,而git tag -l .2會選擇結尾是.2的,以此類推別的,*就是一個通配符)。

git tag [-l 篩選表達式]

打一個名稱為tagname並添加該標籤的註釋為tagremark的標籤,這種是普通的標籤(如果你有GPG私鑰,把-a換成-s就是前面的tag了)。

git tag -a tagname [-m tagremark]

提交標籤tagname到遠程hostname。

git push hostname tagname

提交全部標籤到遠程hostname。

git push hostname --tags

刪除標籤tagname(本地的)。

git tag -d tagname

刪除標籤tagname(遠程的)。

git push hostname -d tag tagname

第十一步:分支。

查看分支狀態,如果使用-r(即:git branch -r)表示查看遠程分支狀態,-a選項查看所有分支。

git branch

創建一個名稱叫branchname的分支,此分支初始化擁有的是你創建此分支時活躍分支。

git branch branchname

切換當前活躍分支為branchname。

git checkout branchname

刪除本地指定分支branchname。

git branch -d branchname

刪除遠程指定分支branchname。

git push hostname --delete branchname

修改本地分支oldbranchname的名稱為newbranchname。

git branch -m oldbranchname newbranchname

實現在本地刪除遠程已經不存在的分支。

git fetch --prune
user avatar xiangjiaochihuanggua 頭像 coderleo 頭像 lesini 頭像 b_a_r_a_n 頭像 fehaha 頭像 nihaojob 頭像 warn 頭像 mofaboshi 頭像 smile1213 頭像 caideheirenyagao 頭像 ipromise 頭像 lawler61 頭像
37 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.