安裝Git:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
git config命令的--global參數(shù)铛只,用了這個(gè)參數(shù)史简,表示你這臺(tái)機(jī)器上所有的Git倉庫都會(huì)使用這個(gè)配置外构。
安裝版本庫:
$ mkdir learngit //當(dāng)前位置創(chuàng)建learngit文件夾
$ cd learngit //跳轉(zhuǎn)到learngit
$ pwd //顯示當(dāng)前目錄
$ git init //把這個(gè)目錄變成Git可以管理的倉庫
ls -ah//用來打印出當(dāng)前目錄的清單强岸,-a包含以.開頭的隱含文件,-h列出文件大小
把文件添加到版本庫:
將textname.TXT文件放入learngit文件
$ git add textname.txt //添加到暫存庫
$ git commit -m "note"http://-m 后面輸入的是本次提交的說明
時(shí)光機(jī)穿梭:
$ git status //查看倉庫當(dāng)前的狀態(tài)
$ git diff readme.txt //查看倉庫的變化?
版本回退:
$ git log //版本歷史記錄,所有的
$ git log --pretty=oneline //數(shù)字為版本號(hào)
$ git reset --hard HEAD~n //回退n個(gè)版本厂庇,或者HEAD^...
$ git reset --hard number //回到未來的某個(gè)版本號(hào)number
$ cat readme.txt//查看當(dāng)前版本的內(nèi)容
$ git reflog//記錄你的每一次命令
版本庫=stage(暫存區(qū))+master(分支)
倉庫=工作區(qū)
Untrack files://某個(gè)文件沒有被添加過
管理修改:
git diff HEAD -- readme.txt//可以查看工作區(qū)和版本庫里面最新版本的區(qū)別
撤銷修改:
$ git checkout -- readme.txt//撤銷工作區(qū)的全部修改投剥。用版本庫里的最新版本替換工作區(qū)的版本焕梅,“一鍵還原”迹鹅。
$ git reset HEAD file//可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū)丘侠。
git reset命令既可以回退版本徒欣,也可以把暫存區(qū)的修改回退到工作區(qū)。當(dāng)我們用HEAD時(shí)蜗字,表示最新的版本打肝。
場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí)挪捕,用命令git checkout -- file粗梭。
場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí)级零,想丟棄修改断医,分兩步,第一步用命令git reset HEAD file奏纪,就回到了場(chǎng)景1鉴嗤,第二步按場(chǎng)景1操作。
刪除文件:
$ rm test.txt //刪除倉庫文件
$ git rm test.txt
$ git commit -m "remove test.txt"http://刪除版本庫文件
遠(yuǎn)程倉庫:
第1步:$ ssh-keygen -t rsa -C "youremail@example.com"http://創(chuàng)建SSH Key
可以在用戶主目錄里找到.ssh目錄序调,里面有id_rsa和id_rsa.pub兩個(gè)文件醉锅,id_rsa是私鑰,不能泄露出去发绢,id_rsa.pub是公鑰硬耍,可以放心地告訴任何人。
第2步:登陸GitHub边酒,打開“Account settings”经柴,“SSH Keys”頁面:然后,點(diǎn)“Add SSH Key”墩朦,填上任意Title坯认,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容:
添加遠(yuǎn)程庫:
首先,登陸GitHub氓涣,然后鹃操,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個(gè)新的倉庫:
在Repository name填入learngit春哨,其他保持默認(rèn)設(shè)置,點(diǎn)擊“Create repository”按鈕恩伺,就成功地創(chuàng)建了一個(gè)新的Git倉庫:
在本地的learngit倉庫下運(yùn)行命令(關(guān)聯(lián)):$ git remote add origin git@github.com:yourgithubid/learngit.git
添加后赴背,遠(yuǎn)程庫的名字就是origin,這是Git默認(rèn)的叫法
下一步,就可以把本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上:$ git push -u origin master//第一次使用將本地的master分支推送到origin主機(jī)凰荚,同時(shí)指定origin為默認(rèn)主機(jī)燃观,后面就可以不加任何參數(shù)使用git push了。
之后就用:$ git push origin master
SSH警告:
當(dāng)你第一次使用Git的clone或者push命令連接GitHub時(shí)便瑟,會(huì)得到一個(gè)警告:這是因?yàn)镚it使用SSH連接缆毁,而SSH連接在第一次驗(yàn)證GitHub服務(wù)器的Key時(shí),需要你確認(rèn)GitHub的Key的指紋信息是否真的來自GitHub的服務(wù)器到涂,輸入yes回車即可脊框。
Git會(huì)輸出一個(gè)警告,告訴你已經(jīng)把GitHub的Key添加到本機(jī)的一個(gè)信任列表里了:
這個(gè)警告只會(huì)出現(xiàn)一次践啄,后面的操作就不會(huì)有任何警告了浇雹。
從遠(yuǎn)程庫克隆:
首先屿讽,登陸GitHub昭灵,創(chuàng)建一個(gè)新的倉庫,名字叫g(shù)itskills:
我們勾選Initialize this repository with a README伐谈,這樣GitHub會(huì)自動(dòng)為我們創(chuàng)建一個(gè)README.md文件烂完。創(chuàng)建完畢后,可以看到README.md文件:
下一步是用命令git clone克隆一個(gè)本地庫:$ git clone git@github.com:yourgithubid/gitskills.git
$ cd gitskills //進(jìn)入子目錄
$ ls //顯示
分支管理:
創(chuàng)建與合并分支:
$ git checkout -b dev //創(chuàng)建dev分支诵棵,并切換到dev分支
$ git branch //列出所有分支抠蚣,當(dāng)前分支前面會(huì)標(biāo)一個(gè)*號(hào)
$ git checkout master //切換到master分支
$ git merge dev //合并指定分支到當(dāng)前分支,F(xiàn)ast forward
$ git branch -d dev //刪除dev分支非春,-D強(qiáng)制刪除
$ git log --graph --pretty=oneline --abbrev-commit //查看分支合并情況
$ vi text.txt //進(jìn)入某個(gè)文件
分支管理策略:
$ git merge --no-ff -m "merge with no-ff" dev //普通合并柱徙,--no-ff參數(shù),表示禁用Fast forward奇昙,(可查看歷史)并且提交了一個(gè)commit
Bug分支:
$ git stash //把當(dāng)前工作現(xiàn)場(chǎng)(工作區(qū))“儲(chǔ)藏”起來
$ git stash list //查看工作現(xiàn)場(chǎng)
一是用git stash apply恢復(fù)护侮,但是恢復(fù)后,stash內(nèi)容并不刪除储耐,你需要用git stash drop來刪除羊初;
另一種方式是用git stash pop,恢復(fù)的同時(shí)把stash內(nèi)容也刪了:
$ git stash apply stash@{0} //恢復(fù)到制定stash
多人合作:
推送分支:
$ git remote //查看遠(yuǎn)程庫 -v表示詳細(xì)信息
$ git push origin master //推送分支什湘,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫长赞。推送時(shí),要指定本地分支闽撤,這樣得哆,Git就會(huì)把該分支推送到遠(yuǎn)程庫對(duì)應(yīng)的遠(yuǎn)程分支上:
抓取分支:
(在另一臺(tái)電腦(注意要把SSH Key添加到GitHub)或者同一臺(tái)電腦的另一個(gè)目錄下克隆)
默認(rèn)情況下,你的小伙伴只能看到本地的master分支
$ git clone git@github.com:YourID/learngit.git
現(xiàn)在哟旗,你的小伙伴要在dev分支上開發(fā)贩据,就必須創(chuàng)建遠(yuǎn)程origin的dev分支到本地栋操,于是他用這個(gè)命令創(chuàng)建本地dev分支:?
$ git checkout -b dev origin/dev
推送失敗,因?yàn)槟愕男』锇榈淖钚绿峤缓湍阍噲D推送的提交有沖突饱亮,解決辦法也很簡(jiǎn)單矾芙,Git已經(jīng)提示我們,先用git pull把最新的提交從origin/dev抓下來近上,然后剔宪,在本地合并,解決沖突壹无,再推送:
$ git branch --set-upstream dev origin/dev //本地dev分支與遠(yuǎn)程origin/dev分支的鏈接
$ git pull
創(chuàng)建標(biāo)簽:(只存儲(chǔ)在本地葱绒,不會(huì)自動(dòng)推送到遠(yuǎn)程)
$ git tag v1.0 //切換到需要打標(biāo)簽的分支上后,默認(rèn)標(biāo)簽是打在最新提交的commit上的格遭。
$ git tag //查看所有標(biāo)簽
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 commitid //找到歷史提交的commit id哈街,然后打上
標(biāo)簽不是按時(shí)間順序列出,而是按字母排序的
$ git show v0.9 //查看標(biāo)簽信息
$ git tag -a v0.1 -m "version 0.1 released" commitid //創(chuàng)建帶有說明的標(biāo)簽拒迅,用-a指定標(biāo)簽名骚秦,-m指定說明文字
$ git tag -s v0.2 -m "signed version 0.2 released" commit //通過-s用私鑰簽名一個(gè)標(biāo)簽:簽名采用PGP簽名,因此璧微,必須首先安裝gpg(GnuPG)作箍,如果沒有找到gpg,或者沒有g(shù)pg密鑰對(duì)前硫,就會(huì)報(bào)錯(cuò)
操作標(biāo)簽:
$ git tag -d v0.1 //刪除標(biāo)簽
$ git push origin v1.0 //送某個(gè)標(biāo)簽到遠(yuǎn)程
$ git push origin --tags //推送全部
如果標(biāo)簽已經(jīng)推送到遠(yuǎn)程胞得,先從本地刪除:$ git tag -d v0.9
從遠(yuǎn)程刪除。刪除命令也是push:$ git push origin :refs/tags/v0.9