對于開發(fā)人員來說,掌握git命令是必不可少的,現(xiàn)在將常用的命令做一總結(jié)。
1、最常用的4條命令
Git各種命令組合上千種,是一個非常強大的工具。不過,在日常開發(fā)過程中,掌握以下四句,也就夠了。
$ git status # 查看工作區(qū)和緩沖區(qū)狀態(tài)(也就是查看你在開發(fā)中 修改、增加了那些文件)
$ git add --all # 將工作區(qū)修改暫存到緩沖區(qū)( 簡寫是 git add .)
$ git commit -m"<comment>" # 提交到倉庫 (comment是你在提交代碼時的注釋)
$ git push origin master # 推送到遠程分支(要是推到你開發(fā)的分支 直接git push即可)
2、配置屬于你的Git
- 看看你當前Git的配置
$ git config --list
- 需要配置你Git的名字
$ git config --global user.name "<name>"
--global為可選參數(shù),該參數(shù)表示配置全局信息
- 希望別人看到你的commit可以聯(lián)系到你
$ git config --global user.email "<email address>"
- 有些命令很長,能不能簡化一下
$ git config --global alias.logg "log --graph --decorate --abbrev-commit --all"
之后就可以開心地使用 git logg了
3、關(guān)聯(lián)遠程倉庫
- 如果還沒有Git倉庫,你需要
$ git init
如果你想關(guān)聯(lián)遠程倉庫
$ git remote add <name> <git-repo-url>
# 例如 git remote add origin https://github.com/xxxxxx
如果你想關(guān)聯(lián)多個遠程倉庫
$ git remote add <name> <another-git-repo-url>
# 例如 git remote add coding https://coding.net/xxxxxx
是遠程倉庫的名稱,通常為 origin
如果你忘了都關(guān)聯(lián)了哪些倉庫或者地址
$ git remote -v
# origin https://github.com/gzdaijie/koa-react-server-render-blog.git (fetch)
# origin https://github.com/gzdaijie/koa-react-server-render-blog.git (push)
如果有遠程倉庫,需要clone到本地
$ git clone <git-repo-url>
關(guān)聯(lián)的遠程倉庫將被命名為origin,這是默認的。
如果你想把別人倉庫的地址改為自己的
$ git remote set-url origin <your-git-url>
4、切換分支
新建倉庫后,默認生成了master分支
如果你想新建分支并切換
$ git checkout -b <new-branch-name>
# 例如 git checkout -b dev
# 如果僅新建,不切換,則去掉參數(shù) -b
看看當前有哪些分支
$ git branch
# *dev
# master
標*號的代表當前所在的分支
看看當前本地&遠程有哪些分支
$ git branch -a
# * dev
# master
# remotes/origin/master
切換到現(xiàn)有的分支
$ git checkout master
你想把dev分支合并到master分支
$ git merge <branch-name>
# 例如 git merge dev
你想把本地master分支推送到遠程去
$ git push origin master
你可以使用git push -u origin master將本地分支與遠程分支關(guān)聯(lián),之后僅需要使用git push即可。
遠程分支被別人更新了,你需要更新代碼
$ git pull origin <branch-name>
之前如果push時使用過-u,那么就可以省略為git pull
本地有修改,能不能先git pull
$ git stash # 工作區(qū)修改暫存
$ git pull # 更新分支
$ git stash pop # 暫存修改恢復到工作區(qū)
5、撤銷操作
恢復暫存區(qū)文件到工作區(qū)
$ git checkout <file-name>
恢復暫存區(qū)的所有文件到工作區(qū)
$ git checkout .
重置暫存區(qū)的某文件,與上一次commit保持一致,但工作區(qū)不變
$ git reset <file-name>
重置暫存區(qū)與工作區(qū),與上一次commit保持一致
$ git reset --hard <file-name>
如果是回退版本(commit),那么file,變成commit的hash碼就好了。
去掉某個commit
$ git revert <commit-hash>
實質(zhì)是新建了一個與原來完全相反的commit,抵消了原來commit的效果
6、版本回退與前進
查看歷史版本
$ git log
你可能覺得這樣的log不好看,試試這個
$ git log --graph --decorate --abbrev-commit --all
檢出到任意版本
$ git checkout a5d88ea
hash碼很長,通常6-7位就夠了
遠程倉庫的版本很新,但是你還是想用老版本覆蓋
$ git push origin master --force
# 或者 git push -f origin master
覺得commit太多了?多個commit合并為1個
$ git rebase -i HEAD~4
這個命令,將最近4個commit合并為1個,HEAD代表當前版本。將進入VIM界面,你可以修改提交信息。推送到遠程分支的commit,不建議這樣做,多人合作時,通常不建議修改歷史。
想回退到某一個版本
$ git reset --hard <hash>
# 例如 git reset --hard a3hd73r
--hard代表丟棄工作區(qū)的修改,讓工作區(qū)與版本代碼一模一樣,與之對應,--soft參數(shù)代表保留工作區(qū)的修改。
想回退到上一個版本,有沒有簡便方法?
$ git reset --hard HEAD^
回退到上上個版本呢?
$ git reset --hard HEAD^^
HEAD^^可以換作具體版本hash值。
回退錯了,能不能前進呀
$ git reflog
這個命令保留了最近執(zhí)行的操作及所處的版本,每條命令前的hash值,則是對應版本的hash值。使用上述的git checkout 或者 git reset命令 則可以檢出或回退到對應版本。
剛才commit信息寫錯了,修改
$ git commit --amend
看看當前狀態(tài)吧
$ git status
這些命令如果你已經(jīng)都能熟練用運了,那么git你已經(jīng)無敵了。
碼字不易,點個贊唄。