文章記述了通過終端命令行使用git頻率較高的一些操作磨总,這些操作包括倉(cāng)庫(kù)管理,遠(yuǎn)程倉(cāng)庫(kù)利术,分支管理,標(biāo)簽管理等邦鲫。
倉(cāng)庫(kù)管理
本地初始化倉(cāng)庫(kù)
$ git init
克隆一個(gè)遠(yuǎn)程倉(cāng)庫(kù)
$ git clone htts://xx.xx.xx.xx.git
查看倉(cāng)庫(kù)狀態(tài)
$ git status [-s]
工作區(qū)文件丟棄(discard)
$ git checkout -- <file>
添加修改內(nèi)容到暫存區(qū)
$ git add [name | .]
暫存區(qū)文件恢復(fù)到工作區(qū)(unstage)
$ git reset HEAD <file>
提交暫存區(qū)內(nèi)容到分支
$ git commit -m '描述'
撤銷未commit的merge操作
$ git merge --abort
撤銷某次commit_id
$ git revert commit_id
撤銷 到 某次commit(之后的提交都會(huì)被丟掉或撤回到工作區(qū))
- 查看要返回的 commit_id
$ git log
- 撤銷commit操作
$ git reset --hard commit_id
git 該命令不會(huì)保存撤回的代碼,如果要保存撤回的代碼杈抢,使用 git reset commit_id
撤銷已經(jīng)reset --hard的操作
- 查看已經(jīng)reset的歷史数尿,查找commit_id
$ git reflog
- 通過id撤銷操作
$ git checkout -b recovery 23f74d5
遠(yuǎn)程分支
關(guān)聯(lián)一個(gè)倉(cāng)庫(kù)到遠(yuǎn)程分支
$ git remote add origin git@0.0.0.0:/path/test.git
推送分支到遠(yuǎn)程
$ git push -u origin <branchName>
查看最新分支(遠(yuǎn)程主機(jī)所有更新)
$ git fetch <主機(jī)名>
查看所有分支列表(紅色標(biāo)記)
$ git branch -a
查看遠(yuǎn)程分支
$ git branch -r
檢出遠(yuǎn)程分支(本地創(chuàng)建一個(gè)分支,切換到該分支惶楼,并映射一個(gè)遠(yuǎn)程分支)
$ git checkout -b localBrachName origin/branchName
切換到遠(yuǎn)程分支
$ git checkout --track origin/branchName
查看遠(yuǎn)程分支詳細(xì)信息
$ git remote show origin
拉取遠(yuǎn)程分支
$ git pull origin branchName:branchName
命令刪除遠(yuǎn)程分支
$ git push origin --delete <branchName>
推送空分支刪除遠(yuǎn)程分支
$ git push origin :<branchName>
分支管理
創(chuàng)建分支
$ git branch <name>
查看本地所有分支
$ git branch
切換分支
$ git checkout <name>
合并dev分支到當(dāng)前分支
$ git merge dev
修改本地分支名字
$ git branch -m devel develop
將某個(gè)提交應(yīng)用到 當(dāng)前分支 (如:c0a5abda8ed500aeb16a120f85d930a3b194fa4c)
$ git cherry-pick c0a5abda8ed500aeb16a120f85d930a3b194fa4c
刪除本地分支
$ git branch -D branchName
批量刪除遠(yuǎn)程分支(master|dev 分支除外)
$ git branch -r| grep -v -E 'master|dev' | sed 's/origin\///g' | xargs -I {} git push origin :{}
標(biāo)簽管理
添加一個(gè)帶注解的'v1.0'標(biāo)簽
$ git tag -a v1.0
推送本地tag到遠(yuǎn)程
$ git push --tags
獲取遠(yuǎn)程tag
$ git fetch origin tag <tagname>
刪除遠(yuǎn)程tag標(biāo)簽
$ git push origin --delete tag <tagName>