Git命令小记
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
一、git常用命令
1、push
git?push?<遠(yuǎn)程主機(jī)名>?<本地分支名>:<遠(yuǎn)程分支名>注意:git pull是<遠(yuǎn)程分支>:<本地分支>,而git push是<本地分支>:<遠(yuǎn)程分支>。
1.1 push當(dāng)前分支:
git?push?origin?local_branch:remote_branch????#?完整寫法 git?push?origin?local_branch????#?省略遠(yuǎn)程分支名 git?push?origin????#?分支名全部省略 git?push????#?省略origin主機(jī)名:當(dāng)只有origin主機(jī)或者使用默認(rèn)主機(jī)時(shí),可省略origin主機(jī)名 git?push?-u?origin?local_branch????#?多臺(tái)主機(jī),使用-u?設(shè)置默認(rèn)主機(jī),以后可直接git?push1.2 刪除遠(yuǎn)端分支:
1.3 本地的所有分支都推送到遠(yuǎn)程主機(jī):
git?push?--all?origin1.4 強(qiáng)制push:
git?push?--force?origin注意:
建議先git pull
上面命令使用–force選項(xiàng),結(jié)果導(dǎo)致在遠(yuǎn)程主機(jī)產(chǎn)生一個(gè)non-fast-forward merge的合并。除非你很確定要這樣做,否則應(yīng)該盡量避免使用–force選項(xiàng)。
1.5 推送標(biāo)簽:
git?push?origin?--tags2、branch
2.1 branch重命名
git?branch?-m?old_branch?new_branch3、reset
根據(jù)–soft –mixed –hard,會(huì)對(duì)working tree和index和HEAD進(jìn)行重置:?
git?reset?–-mixed?#?默認(rèn)方式,回退到某個(gè)版本,只保留源碼,回退commit和index信息。 git?reset?-–soft?#?回退到某個(gè)版本,只回退commit的信息,不會(huì)恢復(fù)到index?file一級(jí)。可通過commit再次提交。 git?reset?–-hard?#?徹底回退到某個(gè)版本,本地的源碼也會(huì)變?yōu)樯弦粋€(gè)版本的內(nèi)容(不包括?untracked?files)。4、diff
HEAD ? ? commit版本
Index ? ? staged版本
4.1 工作區(qū)diff:
git?diff????#?顯示未add的修改:比較工作區(qū)(working?tree)和暫存區(qū)(stage/index)之間的差異 git?diff?HEAD????#?顯示工作版本(Working?tree)和HEAD的差別 git?diff?SHA1????#?將所指定的某次提交與當(dāng)前工作目錄進(jìn)行對(duì)比。SHA1只某次提交的commit哈希值4.2 暫存區(qū)diff:
git?diff?--cached????#?查看已經(jīng)暫存起來的文件(staged)和上次提交時(shí)的快照之間(HEAD)的差異,顯示的是下一次commit時(shí)會(huì)提交到HEAD的內(nèi)容(不帶-a情況下) git?diff?--staged????#?同上4.3 分支diff:
git?diff?topic?master????#?直接將兩個(gè)分支上最新的提交做diff git?diff?topic..master????#?同上 git?diff?topic...master????#?輸出自topic和master分別開發(fā)以來,master分支上的changed。4.4 歷史提交對(duì)比:
git?diff?SHA1?SHA2????#?比較2次提交的內(nèi)容 git?diff?SHA1..SHA2????#?同上。如果省略任意一個(gè)commit,默認(rèn)將使用HEAD代替 git?diff?HEAD^?HEAD????#?比較上次和上上次提交。其中HEAD代表最后一次提交,HEAD^代表最后一次提交的父提交,HEAD~1等價(jià)于HEAD^,HEAD~2為倒數(shù)第二次提交,以此類推。 git?diff?HEAD^?HEAD~24.5 其他參數(shù):
git?diff?--stat????#?列舉文件及簡單統(tǒng)計(jì) git?diff?another_branch????#?查看工作區(qū)和另外一個(gè)分支的差別 git?diff?--?filename????#?只對(duì)比給定的文件 git?diff?--?./src????#?只對(duì)比指定目錄根據(jù)修改狀態(tài)過濾:
--diff-filter=[ACDMRTUXB*]
顯示指定狀態(tài)的文件:Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), changed (T), are Unmerged (U), are Unknown (X)
示例:
git diff --diff-filter=M
二、git其他命令
1、stash(儲(chǔ)藏):
git?stash:保存當(dāng)前工作現(xiàn)場(chǎng),未提交的代碼都會(huì)入棧; git?stash?list:列舉所有工作現(xiàn)場(chǎng); git?stash?pop:應(yīng)用棧頂(stash@{0})工作現(xiàn)場(chǎng)到當(dāng)前分支; git?stash?apply??stash@{num}:應(yīng)用stash@{num}個(gè)工作現(xiàn)場(chǎng),不pop; git?stash?clear:清空stash棧;2、clean:刪除一些沒有g(shù)it add的文件
git?clean?-n????#?-n和下面的參數(shù)組合使用,列出哪些符合條件的文件/目錄會(huì)被刪掉,防止誤刪 git?clean?-f????#?remove?untracked?files git?clean?-fd????#?remove?untracked?files/directories git?clean?-xfd #?remove?untracked?files/directories,?include?gitignore3、blame:查看代碼每一行是誰提交的及提交時(shí)間戳
git?blame?file_path4、log:查看日志
git?log?-p?-2?local_branch..origin/remote_branch????#?比較本地分支日志與遠(yuǎn)端分支日志,-p表示展開內(nèi)容差異,-2表示展示最近2次提交5、pull
git pull:從遠(yuǎn)端分支獲取最新版本并merge到本地,相當(dāng)于git fetch 和 git merge。
在實(shí)際使用中,git fetch更安全一些,因?yàn)樵趍erge前,我們可以查看更新情況,然后再?zèng)Q定是否合并。
6、grep:搜索
git?grep?'search_info' git?grep?-n?'search_info'????#?顯示行號(hào) git?grep?--name-only?'search_info'????#?只顯示文件名 git?grep?-c?'search_info'????#?顯示文件中出現(xiàn)次數(shù)三、git提交統(tǒng)計(jì)
1、統(tǒng)計(jì)某人的代碼提交量,包括增加、刪除:
git?log?--author="rathan.han"?--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?}'?-效果:
2、倉庫提交者排名前五(如果看全部,去掉 head 管道即可)
git?log?--pretty='%aN'?|?sort?|?uniq?-c?|?sort?-k1?-n?-r?|?head?-n?5四、git文件的三種狀態(tài)
Untracked files/Changes to be committed————》 git add ————》Changes to be committed(暫存區(qū))————》繼續(xù)修改文件————》Changes not staged for commit
五、錯(cuò)誤恢復(fù)
1、commit移到別的分支:
#?切換到想移到的分支? git?cherry-pick?commit_idrefer:
1、Git代碼行統(tǒng)計(jì)命令集: http://www.360doc.com/content/14/0929/11/10058718_413198911.shtml
2、git命令詳圖:http://my.oschina.net/adam_li/blog/133652
3、gitbook中文版:http://gitbook.liuhui998.com/index.html
轉(zhuǎn)載于:https://my.oschina.net/rathan/blog/485117
總結(jié)
- 上一篇: [考试]20150528
- 下一篇: bpl