簡(jiǎn)而言之Git是由Linux kernel創(chuàng)立者 Linux Torvalds 開(kāi)發(fā)的(因?yàn)锽itKeeper的問(wèn)題),,屬于DVCS(分布式版本控制) Github 是一個(gè)開(kāi)源項(xiàng)目社區(qū),始于2007(08上線),,GitHub 里面的項(xiàng)目可以通過(guò)標(biāo)準(zhǔn)的 Git 命令進(jìn)行訪問(wèn)和操作 跳過(guò)步驟 ·安裝 ·幾個(gè)控制版本之間的區(qū)別 ·還有 一些純理論的,,可以直接看書; Pro Git V2書本傳送門 而我這篇博文只是介紹一些常用的命令及技巧心得 Git 全局配置 git config --global user.name crperlin #git的用戶名 git config --global user.email [email protected] #git的登錄賬號(hào) git config --global core.editor vim #設(shè)置默認(rèn)編輯器 git config --global merge.tool vimdiff #設(shè)置默認(rèn)的對(duì)比文件差異工具 git config --global color.status auto #顯示顏色信息 git config --global color.branch auto #顯示顏色信息 git config --global color.interactive auto #顯示顏色信息 git config --global color.diff auto #顯示顏色信息 git config --global push.default simple #簡(jiǎn)化提交 git config --list#查看配置的信息 git help config#獲取幫助信息 配置SSHKEY 配置這貨的好處就是可以省去提交的時(shí)候每次都輸入賬號(hào)密碼,;減少重復(fù)工作,! 不管是github還是一些基于gitlab的托管社區(qū),配置這個(gè)都是大同小異,,在個(gè)人賬戶那里找到SSH-KEYGEN ssh-keygen -t rsa -C [email protected] #生成密鑰,,也可以通過(guò)圖形工具生成,看個(gè)人喜好 ssh -T [email protected] #測(cè)試鏈接github是否成功,,其他社區(qū)域名不同罷了 初始化本地倉(cāng)庫(kù)/提交/鏈接遠(yuǎn)程倉(cāng)庫(kù) git init #初始化 git status #獲取狀態(tài),很實(shí)用的一個(gè)功能,,對(duì)文件做了操作都能看到各種提示信息 git add git commit -m '注釋文本' #添加注釋 git remote add origin [email protected]:crperlin/S-NEXT.git #本地鏈接遠(yuǎn)程倉(cāng)庫(kù) git push -u origin master #推送到主分支 克隆遠(yuǎn)程倉(cāng)庫(kù) 一般的git托管社區(qū)都提供兩種,一種是基于https,,一種是基于ssh 前者需要賬號(hào)密碼提交,,后者可以配置SSH-KEYGEN git clone [email protected]:crperlin/S-NEXT.git #克隆到本地,倉(cāng)庫(kù)名就是文件夾的名字 git clone xx.git <自定義文件夾名字> #不需要帶括號(hào),,只是區(qū)別 git倉(cāng)庫(kù)操作 git add *#跟蹤新文件 git rm -f * #強(qiáng)制刪除所有文件 git rm --cached * #取消跟蹤 git mv file_from file_to #重命名跟蹤文件,,與linux一致 git log#查看提交記錄 git commit#提交更新 git commit -m '注釋文本' #添加注釋 git commit -a #跳過(guò)使用暫存區(qū)域,把所有已經(jīng)跟蹤過(guò)的文件暫存起來(lái)一并提交 git commit --amend #修改最后一次提交 git reset HEAD *#取消已經(jīng)暫存的文件 git checkout -- file#取消對(duì)文件的修改(從暫存區(qū)去除file) git checkout branch|tag|commit -- file_name#從倉(cāng)庫(kù)取出file覆蓋當(dāng)前分支 git checkout -- .#從暫存區(qū)去除文件覆蓋工作區(qū) 分支管理 git branch #列出本地分支 git branch -r #列出遠(yuǎn)端分支 git branch -a #列出所有分支 git branch -v #查看各個(gè)分支最后一個(gè)提交對(duì)象的信息 git branch --merge #查看已經(jīng)合并到當(dāng)前分支的分支 git branch --no-merge #查看為合并到當(dāng)前分支的分支 git branch test #新建test分支 git checkout test #切換到test分支 git checkout -b test #新建+切換到test分支 git checkout -b test dev#基于dev新建test分支,,并切換 git branch -d test #刪除test分支 git branch -D test #強(qiáng)制刪除test分支 git merge test #將test分支合并到當(dāng)前分支 git rebase master #將master分之上超前的提交,,變基到當(dāng)前分支 分支數(shù)據(jù)推送更新 git fetch origin branch #獲取遠(yuǎn)端上指定分支 git merge origin branch #合并遠(yuǎn)端上指定分支 git push origin branch #推送到遠(yuǎn)端上指定分支 git push origin localbranch:serverbranch #推送到遠(yuǎn)端上指定分支 git checkout -b test origin/dev #基于遠(yuǎn)端dev新建test分支 git push origin :server#刪除遠(yuǎn)端分支[推送空分支,目前等同于刪除] 標(biāo)簽版本管理 git tag#列出現(xiàn)有標(biāo)簽 git tag v1.0.0 #新建標(biāo)簽 git tag -a v0.1 -m '注釋文本' #新建帶注釋標(biāo)簽 git tag v2.0 9fceb02 #給指定的指向添加版本 git show git checkout tagname#切換到標(biāo)簽 git push origin v1.5#推送分支到源上 git push origin --tags#一次性推送所有分支 git tag -d v0.1#刪除標(biāo)簽 git push origin :refs/tags/v0.1#刪除遠(yuǎn)程標(biāo)簽 alias【別名系統(tǒng),,基本和linux一致】 一. 到配置文件配置,,最傻瓜化的寫法,等值賦予 [alias] logs = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit st = status ci = commit br = branch co = checkout df = diff lg = log -p 二. 命令行追加 git config --global alias.co checkout git config --global alias.ci commit git config --global alias.br branch ... 文本搜索 git grep '查詢文本' #對(duì)全局的字符串查詢 git grep '查詢文本' v1.0.0 #針對(duì)版本的字符串查詢 文件修改詳情跟蹤 git blame 撤銷 #放棄工作目錄下的所有修改: git reset --hard HEAD #移除緩存區(qū)的所有文件(i.e. 撤銷上次git add): git reset HEAD #放棄某個(gè)文件的所有本地修改: git checkout HEAD #重置一個(gè)提交(通過(guò)創(chuàng)建一個(gè)截然不同的新提交) git revert #將HEAD重置到指定的版本,并拋棄該版本之后的所有修改: git reset --hard #將HEAD重置到上一次提交的版本,,并將之后的修改標(biāo)記為未添加到緩存區(qū)的修改: git reset #將HEAD重置到上一次提交的版本,,并保留未提交的本地修改: git reset --keep |
|
來(lái)自: 昵稱11935121 > 《未命名》