本篇記錄平時(shí)git 用到的常用命令
git status
$ git status
- 顯示文件狀態(tài)
$ git status -s
- 以精簡(jiǎn)的形式顯示文件狀態(tài)
git add
$ git add . // 提交新文件(new)和被修改(modified)文件甩卓,不包括被刪除(deleted)文件
$ git add -u // 提交被修改(modified)和被刪除(deleted)文件,不包括新文件(new)
$ git add -A // 提交所有變化
git commit
$ git commit -m 'message'
- 添加更改記錄
$ git commit -am 'message'
- 添加已跟蹤過(guò)的文件
$ git commit --amend
- 修改已提交的commit記錄, 也叫追加提交
一些commit規(guī)范,如下所示
feat:新功能(feature)
fix:修補(bǔ)bug
docs:文檔(documentation)
style: 格式(不影響代碼運(yùn)行的變動(dòng))
modify:修改代碼,并非修改bug,可能是優(yōu)化代碼
refactor:重構(gòu)(即不是新增功能,也不是修改bug的代碼變動(dòng))
test:增加測(cè)試
chore:構(gòu)建過(guò)程或輔助工具的變動(dòng)
git reset
$ git reset --soft HEAD^
- 不刪除工作空間改動(dòng)代碼勒叠,撤銷commit,不撤銷git add .
- 簡(jiǎn)單來(lái)說(shuō)就是刪除git log 的記錄 不撤銷暫存區(qū)的內(nèi)容
$ git reset --mixed HEAD^
- 不刪除工作空間改動(dòng)代碼膏孟,撤銷commit眯分,并且撤銷git add .
- 簡(jiǎn)單來(lái)說(shuō)就是刪除git log 的記錄并且撤銷暫存區(qū)的內(nèi)容
-
--mixed
默認(rèn)參數(shù),git reset --mixed HEAD^ 和 git reset HEAD^ 效果一樣柒桑。
## 回退至上一個(gè)版本
$ git reset --hard HEAD^
- 刪除工作空間改動(dòng)代碼弊决,撤銷commit,撤銷git add .
- 完成這個(gè)操作后魁淳,就恢復(fù)到了上一次commit的狀態(tài)飘诗。
HEAD
: 表示當(dāng)前版本
HEAD^
:表示上一個(gè)版本
...以此類推
或者
HEAD~
: 表示上一個(gè)版本
HEAD~2
:表示上兩個(gè)版本
...以此類推
git log
$ git log
- 查看commit的版本日志(包含提交的版本 操作者 日期)
- 版本回退后 該指令不能查看回退前的日志信息
git log --oneline
- 縮略展示提交信息 更直觀 流暢
git reflog
$ git reflog
- reflog是git操作的一道安全保障,它能夠記錄幾乎所有本地倉(cāng)庫(kù)的改變界逛。包括所有分支commit提交昆稿,已經(jīng)刪除(其實(shí)并未被實(shí)際刪除)commit都會(huì)被記錄。
git diff
## 默認(rèn)比較查看當(dāng)前分支的改變
$ git diff
git fetch
$ git fetch
- 將某個(gè)遠(yuǎn)程主機(jī)的更新全部取回本地
$ git fetch -p
- 獲取遠(yuǎn)程倉(cāng)庫(kù)的新分支以及刪除遠(yuǎn)程倉(cāng)庫(kù)已刪除的分支
git pull
$ git pull origin <遠(yuǎn)程分支>
// 配置ssh連接
// git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
- 拉取指定遠(yuǎn)程分支
$ git pull --all
- 拉取所有遠(yuǎn)程分支
git push
$ git push origin <遠(yuǎn)程分支>
- 推送本地當(dāng)前分支到指定遠(yuǎn)程分支
git push <remote address> --all
- 推送本地所有分支到指定遠(yuǎn)程倉(cāng)庫(kù)地址
合并代碼的完整操作
## 在本地新建一個(gè)temp分支息拜,并將遠(yuǎn)程origin倉(cāng)庫(kù)的master分支代碼下載到本地temp分支
$ git fetch origin master:temp
## 比較本地代碼與剛剛從遠(yuǎn)程下載下來(lái)的代碼的區(qū)別
$ git diff temp
## 合并temp分支到本地的master分支
$ git merge temp
## 如果不想保留temp分支溉潭,刪除
$ git branch -d temp