本文旨在通俗的有目的地去使用git與github
不得不說,剛開始聽說這兩個東西的時候,感覺那是大神才用,而我這種小菜鳥是學(xué)不會,工作也用不到了。抱著這種心態(tài)畢業(yè)兩年了,什么都沒有學(xué)會,我開始慌了,便辭職開始了前端的路。
在前端接觸的東西真是太多太多了,學(xué)習(xí)了自己不曾學(xué)過的很多東西,github幾乎是所有公司都會問和要求的一個東西。所以自己便注冊了一個開始了鼓搗。
git無非是個項目管理工具,它是分布式的等等很多優(yōu)點,我也不再說。我為什么要學(xué)習(xí)它呢,也不是工作用到了,而是在想別人github上的文件為什么都是有格式,看起來那么漂亮,而自己寫的卻那么low。我想應(yīng)該是他們都用git整到本地然后再傳上去的吧(事實卻不是),所以就有了以下學(xué)習(xí)經(jīng)歷:
首先保證你的電腦上安裝了git;
新建一個空文件夾,在該目錄下操作,
$ mkdir learngit
$ cd learngit
1、初始化一個Git倉庫,使用git init命令,然后你會發(fā)你建的目錄多了很多文件
在該目錄下新建文件README.MD,提交分兩步:
第一步,添加文件到暫存區(qū)
git add README.MD
注意, 該命可多次使用添加多個文件
第二步,提交所有添加的文件完成修改, 提交信息必須填寫
git commit -m "submit message"
2、查看當(dāng)前倉庫文件修改
使用git status命令隨時掌握工作區(qū)的狀態(tài)。
如果git status告訴你有文件被修改過,用git diff可以查看修改內(nèi)容。
3、
HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令
git reset --hard commit_id。
穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個版本。
要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個版本。
4、
場景1:當(dāng)你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時,用命令
git checkout -- file。
場景2:當(dāng)你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用命令
git reset HEAD file
就回到了場景1,第二步按場景1操作。
場景3:已經(jīng)提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節(jié),不過前提是沒有推送到遠(yuǎn)程庫。
5、
命令git rm用于刪除一個文件。如果一個文件已經(jīng)被提交到版本庫,那么你永遠(yuǎn)不用擔(dān)心誤刪,但是要小心,你只能恢復(fù)文件到最新版本,你會丟失最近一次提交后你修改的內(nèi)容。
重點來了,關(guān)聯(lián)github
6、
創(chuàng)建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa
和id_rsa.pub這兩個文件,如果已經(jīng)有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創(chuàng)建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認(rèn)值即可,由于這個Key也不是用于軍事目的,所以也無需設(shè)置密碼。
如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
第2步:登陸GitHub,打開“Account settings”,“SSH Keys”頁面:
然后,點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容就ok了
需要注意的是:每當(dāng)在一臺新的電腦使用git都需要此操作
7、
要關(guān)聯(lián)一個遠(yuǎn)程庫,使用命令
git remote add origin git@server-name:path/repo-name.git
報錯解決方案:$ git remote rm origin關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
8、
兩種克隆倉庫方式
要克隆一個倉庫,首先必須知道倉庫的地址,然后使用git clone命令克隆。
git clone git@github.com:kongzhexin/kongzhexin.github.io.git
git clone git@https://github.com/kongzhexin/kongzhexin.github.io.git
命令后可以加到文件后的文件夾名稱
但通過ssh支持的原生git協(xié)議速度最快。
9、
當(dāng)Git無法自動合并分支時,就必須首先解決沖突。解決沖突后,再提交,合并完成。
git checkout -b feature 新建分支
git checkout feature 切換分支
git branch -d feature 刪除分支
git merge feature 合并分支
git add readme.txt
git commit -m " "
git log --graph 命令可以看到分支合并圖。
10、
修復(fù)bug時,我們會通過創(chuàng)建新的bug分支進(jìn)行修復(fù),然后合并,最后刪除;
當(dāng)手頭工作沒有完成時,先把工作現(xiàn)場git stash一下,然后去修復(fù)bug,修復(fù)后,再git stash pop,回到工作現(xiàn)場。
11、
開發(fā)一個新feature,最好新建一個分支;
如果要丟棄一個沒有被合并過的分支,可以通過git branch -D <name>強(qiáng)行刪除
12、
查看遠(yuǎn)程庫信息,使用git remote -v;
本地新建的分支如果不推送到遠(yuǎn)程,對其他人就是不可見的;
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交;
在本地創(chuàng)建和遠(yuǎn)程分支對應(yīng)的分支,使用git checkout -b branch-name origin/branch-name,本地和遠(yuǎn)程分支的名稱最好一致;
建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián),使用git branch --set-upstream branch-name origin/branch-name;
從遠(yuǎn)程抓取分支,使用git pull,如果有沖突,要先處理沖突。
以上便是基本的用法就介紹完了,更詳細(xì)的用法解釋可以去廖雪峰大神的官網(wǎng)學(xué)習(xí),能學(xué)到很多東西。
上面說的他們用的是Markdown語法,我便去學(xué)習(xí)了一下很簡單,也寫出了還算漂亮的README.MD文檔,這個網(wǎng)上也有很多教程,自己搜一下吧。
我的gitbub地址:https://github.com/kongzhexin
個人博客地址:https://kongzhexin.github.io(新建的后續(xù)會寫一個教程)
參考:廖雪峰官網(wǎng)