git config
配置 Git 的相關(guān)參數(shù)痹届。
Git 一共有3個配置文件:
1. 倉庫級的配置文件:在倉庫的 .git/.gitconfig
肥照,該配置文件只對所在的倉庫有效庄岖。
2. 全局配置文件:Mac 系統(tǒng)在 ~/.gitconfig
姆怪,Windows 系統(tǒng)在 C:\Users\<用戶名>\.gitconfig
。
3. 系統(tǒng)級的配置文件:在 Git 的安裝目錄下(Mac 系統(tǒng)下安裝目錄在 /usr/local/git
)的 etc
文件夾中的 gitconfig
。
# 查看配置信息
# --local:倉庫級硬猫,--global:全局級炫彩,--system:系統(tǒng)級
$ git config <--local | --global | --system> -l
# 查看當(dāng)前生效的配置信息
$ git config -l
# 編輯配置文件
# --local:倉庫級,--global:全局級斯够,--system:系統(tǒng)級
$ git config <--local | --global | --system> -e
# 添加配置項
# --local:倉庫級囚玫,--global:全局級,--system:系統(tǒng)級
$ 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緩存區(qū)的大小
# 如果提交的內(nèi)容較大读规,默認(rèn)緩存較小抓督,提交會失敗
# 緩存大小單位:B,例如:524288000(500MB)
$ git config --global http.postBuffer <緩存大小>
# 調(diào)用 git status/git diff 命令時以高亮或彩色方式顯示改動狀態(tài)
$ git config --global color.ui true
# 配置可以緩存密碼束亏,默認(rèn)緩存時間15分鐘
$ git config --global credential.helper cache
# 配置密碼的緩存時間
# 緩存時間單位:秒
$ git config --global credential.helper 'cache --timeout=<緩存時間>'
# 配置長期存儲密碼
$ git config --global credential.helper store
git clone
從遠(yuǎn)程倉庫克隆一個版本庫到本地铃在。
# 默認(rèn)在當(dāng)前目錄下創(chuàng)建和版本庫名相同的文件夾并下載版本到該文件夾下
$ git clone <遠(yuǎn)程倉庫的網(wǎng)址>
# 指定本地倉庫的目錄
$ git clone <遠(yuǎn)程倉庫的網(wǎng)址> <本地目錄>
# -b 指定要克隆的分支,默認(rèn)是master分支
$ git clone <遠(yuǎn)程倉庫的網(wǎng)址> -b <分支名稱> <本地目錄>
git init
初始化項目所在目錄碍遍,初始化后會在當(dāng)前目錄下出現(xiàn)一個名為 .git 的目錄定铜。
# 初始化本地倉庫,在當(dāng)前目錄下生成 .git 文件夾
$ git init
git status
查看本地倉庫的狀態(tài)怕敬。
# 查看本地倉庫的狀態(tài)
$ git status
# 以簡短模式查看本地倉庫的狀態(tài)
# 會顯示兩列揣炕,第一列是文件的狀態(tài),第二列是對應(yīng)的文件
# 文件狀態(tài):A 新增赖捌,M 修改祝沸,D 刪除,?? 未添加到Git中
$ git status -s
git remote
操作遠(yuǎn)程庫越庇。
# 列出已經(jīng)存在的遠(yuǎn)程倉庫
$ git remote
# 列出遠(yuǎn)程倉庫的詳細(xì)信息罩锐,在別名后面列出URL地址
$ git remote -v
$ git remote --verbose
# 添加遠(yuǎn)程倉庫
$ git remote add <遠(yuǎn)程倉庫的別名> <遠(yuǎn)程倉庫的URL地址>
# 修改遠(yuǎn)程倉庫的別名
$ git remote rename <原遠(yuǎn)程倉庫的別名> <新的別名>
# 刪除指定名稱的遠(yuǎn)程倉庫
$ git remote remove <遠(yuǎn)程倉庫的別名>
# 修改遠(yuǎn)程倉庫的 URL 地址
$ git remote set-url <遠(yuǎn)程倉庫的別名> <新的遠(yuǎn)程倉庫URL地址>
git branch
操作 Git 的分支命令。
# 列出本地的所有分支卤唉,當(dāng)前所在分支以 "*" 標(biāo)出
$ git branch
# 列出本地的所有分支并顯示最后一次提交涩惑,當(dāng)前所在分支以 "*" 標(biāo)出
$ git branch -v
# 創(chuàng)建新分支,新的分支基于上一次提交建立
$ git branch <分支名>
# 修改分支名稱
# 如果不指定原分支名稱則為當(dāng)前所在分支
$ git branch -m [<原分支名稱>] <新的分支名稱>
# 強制修改分支名稱
$ git branch -M [<原分支名稱>] <新的分支名稱>
# 刪除指定的本地分支
$ git branch -d <分支名稱>
# 強制刪除指定的本地分支
$ git branch -D <分支名稱>
git checkout
檢出命令桑驱,用于創(chuàng)建竭恬、切換分支等。
# 切換到已存在的指定分支
$ git checkout <分支名稱>
# 創(chuàng)建并切換到指定的分支熬的,保留所有的提交記錄
# 等同于 "git branch" 和 "git checkout" 兩個命令合并
$ git checkout -b <分支名稱>
# 創(chuàng)建并切換到指定的分支痊硕,刪除所有的提交記錄
$ git checkout --orphan <分支名稱>
# 替換掉本地的改動,新增的文件和已經(jīng)添加到暫存區(qū)的內(nèi)容不受影響
$ git checkout <文件路徑>
git cherry-pick
把已經(jīng)提交的記錄合并到當(dāng)前分支押框。
# 把已經(jīng)提交的記錄合并到當(dāng)前分支
$ git cherry-pick <commit ID>
git add
把要提交的文件的信息添加到暫存區(qū)中岔绸。當(dāng)使用 git commit 時,將依據(jù)暫存區(qū)中的內(nèi)容來進行文件的提交。
# 把指定的文件添加到暫存區(qū)中
$ git add <文件路徑>
# 添加所有修改盒揉、已刪除的文件到暫存區(qū)中
$ git add -u [<文件路徑>]
$ git add --update [<文件路徑>]
# 添加所有修改晋被、已刪除、新增的文件到暫存區(qū)中刚盈,省略 <文件路徑> 即為當(dāng)前目錄
$ git add -A [<文件路徑>]
$ git add --all [<文件路徑>]
# 查看所有修改羡洛、已刪除但沒有提交的文件,進入一個子命令系統(tǒng)
$ git add -i [<文件路徑>]
$ git add --interactive [<文件路徑>]
git commit
將暫存區(qū)中的文件提交到本地倉庫中藕漱。
# 把暫存區(qū)中的文件提交到本地倉庫欲侮,調(diào)用文本編輯器輸入該次提交的描述信息
$ git commit
# 把暫存區(qū)中的文件提交到本地倉庫中并添加描述信息
$ git commit -m "<提交的描述信息>"
# 把所有修改、已刪除的文件提交到本地倉庫中
# 不包括未被版本庫跟蹤的文件谴分,等同于先調(diào)用了 "git add -u"
$ git commit -a -m "<提交的描述信息>"
# 修改上次提交的描述信息
$ git commit --amend
git fetch
從遠(yuǎn)程倉庫獲取最新的版本到本地的 tmp 分支上锈麸。
# 將遠(yuǎn)程倉庫所有分支的最新版本全部取回到本地
$ git fetch <遠(yuǎn)程倉庫的別名>
# 將遠(yuǎn)程倉庫指定分支的最新版本取回到本地
$ git fetch <遠(yuǎn)程主機名> <分支名>
git merge
合并分支。
# 把指定的分支合并到當(dāng)前所在的分支下
$ git merge <分支名稱>
git diff
比較版本之間的差異牺蹄。
# 比較當(dāng)前文件和暫存區(qū)中文件的差異忘伞,顯示沒有暫存起來的更改
$ git diff
# 比較暫存區(qū)中的文件和上次提交時的差異
$ git diff --cached
$ git diff --staged
# 比較當(dāng)前文件和上次提交時的差異
$ git diff HEAD
# 查看從指定的版本之后改動的內(nèi)容
$ git diff <commit ID>
# 比較兩個分支之間的差異
$ git diff <分支名稱> <分支名稱>
# 查看兩個分支分開后各自的改動內(nèi)容
$ git diff <分支名稱>...<分支名稱>
git pull
從遠(yuǎn)程倉庫獲取最新版本并合并到本地。
首先會執(zhí)行 git fetch
沙兰,然后執(zhí)行 git merge
氓奈,把獲取的分支的 HEAD 合并到當(dāng)前分支。
# 從遠(yuǎn)程倉庫獲取最新版本鼎天。
$ git pull
git push
把本地倉庫的提交推送到遠(yuǎn)程倉庫舀奶。
# 把本地倉庫的分支推送到遠(yuǎn)程倉庫的指定分支
$ git push <遠(yuǎn)程倉庫的別名> <本地分支名>:<遠(yuǎn)程分支名>
# 刪除指定的遠(yuǎn)程倉庫的分支
$ git push <遠(yuǎn)程倉庫的別名> :<遠(yuǎn)程分支名>
$ git push <遠(yuǎn)程倉庫的別名> --delete <遠(yuǎn)程分支名>
git log
顯示提交的記錄。
# 打印所有的提交記錄
$ git log
# 打印從第一次提交到指定的提交的記錄
$ git log <commit ID>
# 打印指定數(shù)量的最新提交的記錄
$ git log -<指定的數(shù)量>
git reset
還原提交記錄斋射。
# 重置暫存區(qū)育勺,但文件不受影響
# 相當(dāng)于將用 "git add" 命令更新到暫存區(qū)的內(nèi)容撤出暫存區(qū),可以指定文件
# 沒有指定 commit ID 則默認(rèn)為當(dāng)前 HEAD
$ git reset [<文件路徑>]
$ git reset --mixed [<文件路徑>]
# 將 HEAD 的指向改變罗岖,撤銷到指定的提交記錄涧至,文件未修改
$ git reset <commit ID>
$ git reset --mixed <commit ID>
# 將 HEAD 的指向改變,撤銷到指定的提交記錄桑包,文件未修改
# 相當(dāng)于調(diào)用 "git reset --mixed" 命令后又做了一次 "git add"
$ git reset --soft <commit ID>
# 將 HEAD 的指向改變南蓬,撤銷到指定的提交記錄,文件也修改了
$ git reset --hard <commit ID>
git revert
生成一個新的提交來撤銷某次提交哑了,此次提交之前的所有提交都會被保留赘方。
# 生成一個新的提交來撤銷某次提交
$ git revert <commit ID>
git tag
操作標(biāo)簽的命令。
# 打印所有的標(biāo)簽
$ git tag
# 添加輕量標(biāo)簽弱左,指向提交對象的引用窄陡,可以指定之前的提交記錄
$ git tag <標(biāo)簽名稱> [<commit ID>]
# 添加帶有描述信息的附注標(biāo)簽,可以指定之前的提交記錄
$ git tag -a <標(biāo)簽名稱> -m <標(biāo)簽描述信息> [<commit ID>]
# 切換到指定的標(biāo)簽
$ git checkout <標(biāo)簽名稱>
# 查看標(biāo)簽的信息
$ git show <標(biāo)簽名稱>
# 刪除指定的標(biāo)簽
$ git tag -d <標(biāo)簽名稱>
# 將指定的標(biāo)簽提交到遠(yuǎn)程倉庫
$ git push <遠(yuǎn)程倉庫的別名> <標(biāo)簽名稱>
# 將本地所有的標(biāo)簽全部提交到遠(yuǎn)程倉庫
$ git push <遠(yuǎn)程倉庫的別名> –tags
git mv
重命名文件或者文件夾拆火。
# 重命名指定的文件或者文件夾
$ git mv <源文件/文件夾> <目標(biāo)文件/文件夾>
git rm
刪除文件或者文件夾跳夭。
# 移除跟蹤指定的文件鳖悠,并從本地倉庫的文件夾中刪除
$ git rm <文件路徑>
# 移除跟蹤指定的文件夾,并從本地倉庫的文件夾中刪除
$ git rm -r <文件夾路徑>
# 移除跟蹤指定的文件优妙,在本地倉庫的文件夾中保留該文件
$ git rm --cached
Git操作場景示例
1. 刪除掉本地不存在的遠(yuǎn)程分支
多人合作開發(fā)時,如果遠(yuǎn)程的分支被其他開發(fā)刪除掉憎账,在本地執(zhí)行 git branch --all
依然會顯示該遠(yuǎn)程分支套硼,可使用下列的命令進行刪除:
# 使用 pull 命令,添加 -p 參數(shù)
$ git pull -p
# 等同于下面的命令
$ git fetch -p
$ git fetch --prune origin