git 常用操作
- git init 為目錄初始化 git粗梭,初始化后就可以使用 git 了。
- git clone 通過 HTTP 或者 SSH 將代碼從服務(wù)器克隆到本地换怖。
- git status 查看當(dāng)前文件狀態(tài)啄糙。
- git add 添加文件到暫存區(qū)
- git commit -m 'msg' 提交帶有 commit 信息的代碼(本地提交)
- git pull 拉取遠(yuǎn)程分支的代碼
- git push 將本地提交的改動(dòng)推送到服務(wù)器。
- git remote 查看遠(yuǎn)程倉庫信息
- git checkout 檢出新分支
- git merge 將其他分支上的修改合并到當(dāng)前分支上葵袭。
- git rebase 將其他分支上的修改變基到當(dāng)前分支上。
- git reset –-soft commit_id:回退到某個(gè)版本乖菱,只回退了commit的信息坡锡,不會(huì)恢復(fù)到index file一級。如果還要提交窒所,直接commit即可鹉勒;
- git reset -–hard commit_id:徹底回退到某個(gè)版本,本地的源碼也會(huì)變?yōu)樯弦粋€(gè)版本的內(nèi)容吵取,撤銷的commit中所包含的更改被沖掉禽额;
- git checkout -b 本地分支名 origin/遠(yuǎn)程分支名 拉取遠(yuǎn)程分支
- git checkout --track origin/serverfix 直接拉取遠(yuǎn)程分支到本地
- git reflog 查看git操作記錄(不止是 commit 記錄)
遇到過的問題
http 和 ssh 的區(qū)別
- HTTPS:可以直接 clone 項(xiàng)目,但是在 push 的時(shí)候需要驗(yàn)證用戶名和密碼皮官。
- SSH:clone 的項(xiàng)目你必須是擁有者或者管理員脯倒,而且需要在 clone 前添加 SSH Key。SSH 在 push 的時(shí)候捺氢,是不需要輸入用戶名的藻丢,如果配置 SSH key 的時(shí)候設(shè)置了密碼,則需要輸入密碼的摄乒,否則直接是不需要輸入密碼的悠反。
merge 和 rebase 的區(qū)別
merge 是將多條分支合并到一起,而 rebase 是當(dāng)前分支的節(jié)點(diǎn)移動(dòng)到另一個(gè)分支的最后一個(gè)節(jié)點(diǎn)之后馍佑≌瘢看兩個(gè)圖片:
[站外圖片上傳中...(image-a749be-1554727407214)]
[站外圖片上傳中...(image-84536a-1554727407214)]
更多內(nèi)容可以參考 An Introduction to Git Merge and Git Rebase: What They Do and When to Use Them 這篇文章。
修改 .gitignore 后清理緩存
如果項(xiàng)目原本就有 .gitignore 文件挤茄,現(xiàn)在想多 ignore 一些文件如叼,在修改完 .gitignore 文件后發(fā)現(xiàn)服務(wù)器上還是有這些文件冰木。怎么辦穷劈?這時(shí)候需要手動(dòng)清理到這些文件。
$ git rm -r --cached 文件/文件夾名字
手賤刪了遠(yuǎn)程和本地分支怎么辦踊沸?
可以通過之前的 git commit 信息來恢復(fù)分支數(shù)據(jù)歇终,具體操作參考
git 誤刪分支恢復(fù)方法
如何強(qiáng)制推送?
如果服務(wù)器的文件出現(xiàn)了一些奇怪的提交逼龟,想完全用本地項(xiàng)目替換服務(wù)器項(xiàng)目怎么搞评凝?
$ git push --force origin
git 命令設(shè)置別名
每次敲 git 命令的 checkout、commit腺律、status 是不是很煩奕短?可以配置別名來解決這種痛苦宜肉。
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
設(shè)置別名后你就可以這么寫了:
$ git co
$ git ci
$ git br
是不是少敲了幾個(gè)字母?
具體操作可以看下配置別名 - 廖雪峰的官方網(wǎng)站中的操作翎碑。
git 賬戶密碼修改
有時(shí)候密碼改了怎么配置谬返?很簡單,使用 git config
命令就好日杈。
$ git config global user.name 'violetjack'
$ git config global user.password '********'
git 同時(shí)添加多個(gè) remote
$ git remote add <主機(jī)名> <網(wǎng)址>
git 修改提交過的 commit 消息
對上一次的提交做修改可以用以下命令:
git commit --amend
這樣就可以進(jìn)入 vim 去修改最后一條 commit 信息了遣铝。
git 查看修改代碼量
$ git log --author="violetjack" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -
這樣可以輸出你修改的代碼信息,如:
added lines: 15481, removed lines: 6672, total lines: 8809
這玩意在年終統(tǒng)計(jì) KPI 的時(shí)候可以用一發(fā)莉擒。
參考資料
另外酿炸,在寫這篇文章的時(shí)候找到了一些不錯(cuò)的文章,也一并貼出來了涨冀。
最后
這里記錄下一些我日常工作中遇到過的 git 操作命令填硕,便于自己之后查閱。也希望能幫助到同樣有類似問題的朋友蝇裤。
本文中如有任何問題還請留言指正廷支,和歡迎和我交流。