git 基本命令操做

配置 Git 的相關參數。

Git 一共有3個配置文件:git

1. 倉庫級的配置文件:在倉庫的 .git/.gitconfig,該配置文件只對所在的倉庫有效。
2. 全局配置文件:Mac 系統在 ~/.gitconfig,Windows 系統在 C:\Users\<用戶名>\.gitconfig
3. 系統級的配置文件:在 Git 的安裝目錄下(Mac 系統下安裝目錄在 /usr/local/git)的 etc 文件夾中的 gitconfig緩存

# 查看配置信息 # --local:倉庫級,--global:全局級,--system:系統級 $ git config <--local | --global | --system> -l # 查看當前生效的配置信息 $ git config -l # 編輯配置文件 # --local:倉庫級,--global:全局級,--system:系統級 $ git config <--local | --global | --system> -e # 添加配置項 # --local:倉庫級,--global:全局級,--system:系統級 $ git config <--local | --global | --system> --add <name> <value> # 獲取配置項 $ git config <--local | --global | --system> --get <name> # 刪除配置項 $ git config <--local | --global | --system> --unset <name> # 配置提交記錄中的用戶信息 $ git config --global user.name <用戶名> $ git config --global user.email <郵箱地址> # 更改Git緩存區的大小 # 若是提交的內容較大,默認緩存較小,提交會失敗 # 緩存大小單位:B,例如:524288000(500MB) $ git config --global http.postBuffer <緩存大小> # 調用 git status/git diff 命令時以高亮或彩色方式顯示改動狀態 $ git config --global color.ui true # 配置能夠緩存密碼,默認緩存時間15分鐘 $ git config --global credential.helper cache # 配置密碼的緩存時間 # 緩存時間單位:秒 $ git config --global credential.helper 'cache --timeout=<緩存時間>' # 配置長期存儲密碼 $ git config --global credential.helper store 

git clone

從遠程倉庫克隆一個版本庫到本地。ruby

# 默認在當前目錄下建立和版本庫名相同的文件夾並下載版本到該文件夾下 $ git clone <遠程倉庫的網址> # 指定本地倉庫的目錄 $ git clone <遠程倉庫的網址> <本地目錄> # -b 指定要克隆的分支,默認是master分支 $ git clone <遠程倉庫的網址> -b <分支名稱> <本地目錄> 

git init

初始化項目所在目錄,初始化後會在當前目錄下出現一個名爲 .git 的目錄。bash

# 初始化本地倉庫,在當前目錄下生成 .git 文件夾 $ git init

git status

查看本地倉庫的狀態。編輯器

# 查看本地倉庫的狀態 $ git status # 以簡短模式查看本地倉庫的狀態 # 會顯示兩列,第一列是文件的狀態,第二列是對應的文件 # 文件狀態:A 新增,M 修改,D 刪除,?? 未添加到Git中 $ git status -s 

git remote

操做遠程庫。post

# 列出已經存在的遠程倉庫 $ git remote # 列出遠程倉庫的詳細信息,在別名後面列出URL地址 $ git remote -v $ git remote --verbose # 添加遠程倉庫 $ git remote add <遠程倉庫的別名> <遠程倉庫的URL地址> # 修改遠程倉庫的別名 $ git remote rename <原遠程倉庫的別名> <新的別名> # 刪除指定名稱的遠程倉庫 $ git remote remove <遠程倉庫的別名> # 修改遠程倉庫的 URL 地址 $ git remote set-url <遠程倉庫的別名> <新的遠程倉庫URL地址> 

git branch

操做 Git 的分支命令。fetch

# 列出本地的全部分支,當前所在分支以 "*" 標出 $ git branch # 列出本地的全部分支並顯示最後一次提交,當前所在分支以 "*" 標出 $ git branch -v # 建立新分支,新的分支基於上一次提交創建 $ git branch <分支名> # 修改分支名稱 # 若是不指定原分支名稱則爲當前所在分支 $ git branch -m [<原分支名稱>] <新的分支名稱> # 強制修改分支名稱 $ git branch -M [<原分支名稱>] <新的分支名稱> # 刪除指定的本地分支 $ git branch -d <分支名稱> # 強制刪除指定的本地分支 $ git branch -D <分支名稱> 

git checkout

檢出命令,用於建立、切換分支等。ui

# 切換到已存在的指定分支 $ git checkout <分支名稱> # 建立並切換到指定的分支,保留全部的提交記錄 # 等同於 "git branch" 和 "git checkout" 兩個命令合併 $ git checkout -b <分支名稱> # 建立並切換到指定的分支,刪除全部的提交記錄 $ git checkout --orphan <分支名稱> # 替換掉本地的改動,新增的文件和已經添加到暫存區的內容不受影響 $ git checkout <文件路徑> 

git cherry-pick

把已經提交的記錄合併到當前分支。url

# 把已經提交的記錄合併到當前分支 $ git cherry-pick <commit ID>

git add

把要提交的文件的信息添加到暫存區中。當使用 git commit 時,將依據暫存區中的內容來進行文件的提交。spa

# 把指定的文件添加到暫存區中 $ git add <文件路徑> # 添加全部修改、已刪除的文件到暫存區中 $ git add -u [<文件路徑>] $ git add --update [<文件路徑>] # 添加全部修改、已刪除、新增的文件到暫存區中,省略 <文件路徑> 即爲當前目錄 $ git add -A [<文件路徑>] $ git add --all [<文件路徑>] # 查看全部修改、已刪除但沒有提交的文件,進入一個子命令系統 $ git add -i [<文件路徑>] $ git add --interactive [<文件路徑>] 

git commit

將暫存區中的文件提交到本地倉庫中。

# 把暫存區中的文件提交到本地倉庫,調用文本編輯器輸入該次提交的描述信息 $ git commit # 把暫存區中的文件提交到本地倉庫中並添加描述信息 $ git commit -m "<提交的描述信息>" # 把全部修改、已刪除的文件提交到本地倉庫中 # 不包括未被版本庫跟蹤的文件,等同於先調用了 "git add -u" $ git commit -a -m "<提交的描述信息>" # 修改上次提交的描述信息 $ git commit --amend 

git fetch

從遠程倉庫獲取最新的版本到本地的 tmp 分支上。

# 將遠程倉庫全部分支的最新版本所有取回到本地 $ git fetch <遠程倉庫的別名> # 將遠程倉庫指定分支的最新版本取回到本地 $ git fetch <遠程主機名> <分支名> 

git merge

合併分支。

# 把指定的分支合併到當前所在的分支下 $ git merge <分支名稱>

git diff

比較版本之間的差別。

# 比較當前文件和暫存區中文件的差別,顯示沒有暫存起來的更改 $ git diff # 比較暫存區中的文件和上次提交時的差別 $ git diff --cached $ git diff --staged # 比較當前文件和上次提交時的差別 $ git diff HEAD # 查看從指定的版本以後改動的內容 $ git diff <commit ID> # 比較兩個分支之間的差別 $ git diff <分支名稱> <分支名稱> # 查看兩個分支分開後各自的改動內容 $ git diff <分支名稱>...<分支名稱> 

git pull

從遠程倉庫獲取最新版本併合併到本地。
首先會執行 git fetch,而後執行 git merge,把獲取的分支的 HEAD 合併到當前分支。

# 從遠程倉庫獲取最新版本。 $ git pull

git push

把本地倉庫的提交推送到遠程倉庫。

# 把本地倉庫的分支推送到遠程倉庫的指定分支 $ git push <遠程倉庫的別名> <本地分支名>:<遠程分支名> # 刪除指定的遠程倉庫的分支 $ git push <遠程倉庫的別名> :<遠程分支名> $ git push <遠程倉庫的別名> --delete <遠程分支名> 

git log

顯示提交的記錄。

# 打印全部的提交記錄 $ git log # 打印從第一次提交到指定的提交的記錄 $ git log <commit ID> # 打印指定數量的最新提交的記錄 $ git log -<指定的數量> 

git reset

還原提交記錄。

# 重置暫存區,但文件不受影響 # 至關於將用 "git add" 命令更新到暫存區的內容撤出暫存區,能夠指定文件 # 沒有指定 commit ID 則默認爲當前 HEAD $ git reset [<文件路徑>] $ git reset --mixed [<文件路徑>] # 將 HEAD 的指向改變,撤銷到指定的提交記錄,文件未修改 $ git reset <commit ID> $ git reset --mixed <commit ID> # 將 HEAD 的指向改變,撤銷到指定的提交記錄,文件未修改 # 至關於調用 "git reset --mixed" 命令後又作了一次 "git add" $ git reset --soft <commit ID> # 將 HEAD 的指向改變,撤銷到指定的提交記錄,文件也修改了 $ git reset --hard <commit ID> 

git revert

生成一個新的提交來撤銷某次提交,這次提交以前的全部提交都會被保留。

# 生成一個新的提交來撤銷某次提交 $ git revert <commit ID>

git tag

操做標籤的命令。

# 打印全部的標籤 $ git tag # 添加輕量標籤,指向提交對象的引用,能夠指定以前的提交記錄 $ git tag <標籤名稱> [<commit ID>] # 添加帶有描述信息的附註標籤,能夠指定以前的提交記錄 $ git tag -a <標籤名稱> -m <標籤描述信息> [<commit ID>] # 切換到指定的標籤 $ git checkout <標籤名稱> # 查看標籤的信息 $ git show <標籤名稱> # 刪除指定的標籤 $ git tag -d <標籤名稱> # 將指定的標籤提交到遠程倉庫 $ git push <遠程倉庫的別名> <標籤名稱> # 將本地全部的標籤所有提交到遠程倉庫 $ git push <遠程倉庫的別名> –tags 

git mv

重命名文件或者文件夾。

# 重命名指定的文件或者文件夾 $ git mv <源文件/文件夾> <目標文件/文件夾>

git rm

刪除文件或者文件夾。

# 移除跟蹤指定的文件,並從本地倉庫的文件夾中刪除 $ git rm <文件路徑> # 移除跟蹤指定的文件夾,並從本地倉庫的文件夾中刪除 $ git rm -r <文件夾路徑> # 移除跟蹤指定的文件,在本地倉庫的文件夾中保留該文件 $ git rm --cached 

Git操做場景示例

1. 刪除掉本地不存在的遠程分支

多人合做開發時,若是遠程的分支被其餘開發刪除掉,在本地執行 git branch --all 依然會顯示該遠程分支,可以使用下列的命令進行刪除:

# 使用 pull 命令,添加 -p 參數 $ git pull -p # 等同於下面的命令 $ git fetch -p $ git fetch --prune origin
相關文章
相關標籤/搜索