配置 GitHub
- 進(jìn)入 https://github.com/settings/keys
- 如果頁(yè)面里已經(jīng)有一些 key,就點(diǎn)「delete」按鈕把這些 key 全刪掉。如果沒(méi)有馆蠕,就往下看
- 點(diǎn)擊 New SSH key,你需要輸入 Title 和 Key绍傲,但是你現(xiàn)在沒(méi)有 key憾儒,往下看
- 打開(kāi) Git Bash
- 復(fù)制并運(yùn)行
rm -rf ~/.ssh/*
把現(xiàn)有的 ssh key 都刪掉,這句命令行如果你多打一個(gè)空格跟啤,可能就要重裝系統(tǒng)了诽表,建議復(fù)制運(yùn)行。 - 運(yùn)行
ssh-keygen -t rsa -b 4096 -C "你的郵箱"
隅肥,注意填寫(xiě)你的郵箱竿奏! - 按回車(chē)三次
- 運(yùn)行
cat ~/.ssh/id_rsa.pub
,得到一串東西腥放,完整的復(fù)制這串東西 - 回到上面第 3 步的頁(yè)面泛啸,在 Title 輸入「我的第一個(gè) key」
- 在 Key 里粘貼剛剛你你復(fù)制的那串東西
- 點(diǎn)擊 Add SSH key
- 回到 Git Bash
- 運(yùn)行
ssh -T git@github.com
,你可能會(huì)看到這樣的提示:
The authenticity of host 'github.com(192.30.255.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWG17E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting(yes/no)?
輸入 yes 回車(chē)……問(wèn)你話(huà)你就答秃症,別傻在那
- 然后如果你看到
Permission denied (publickey).
就說(shuō)明你失敗了候址,請(qǐng)回到第 1 步重來(lái)吕粹,是的,回到第 1 步重來(lái)岗仑;如果你看到Hi FrankFang! You've successfully authenticated, but GitHub does not provide shell access.
就說(shuō)明你成功了匹耕!
好了,終于 TMD 添加了一個(gè)無(wú)聊的 SSH key荠雕,不要問(wèn)我這個(gè)有什么用稳其,因?yàn)橐粫?huì)兒你就會(huì)用到它,你想了解原理就看這篇 文章
如果要講清楚炸卑,太浪費(fèi)時(shí)間了欢际,我們只是想用用 GitHub 而已。
- 一臺(tái)電腦只需要一個(gè) SSH key
- 一個(gè) SSH key 可以訪(fǎng)問(wèn)你的所有倉(cāng)庫(kù)矾兜,即使你有 1000000 個(gè)倉(cāng)庫(kù)损趋,都沒(méi)問(wèn)題
- 如果你新買(mǎi)了電腦,就在新電腦上重新生成一個(gè) SSH key椅寺,把這個(gè) key 也上傳到 GitHub浑槽,它可以和之前的 key 共存在 GitHub 上
- 如果你把 key 從電腦上刪除了,重新生成一個(gè) key 即可返帕,替換之前的 key
配置 git
git config --global user.name 你的英文名
git config --global user.email 你的郵箱
git config --global push.default matching
git config --global core.quotepath false
git config --global core.editor "vim"
五句話(huà)桐玻,依次運(yùn)行。不執(zhí)行的話(huà)荆萤,電腦可能會(huì)爆炸你信不信镊靴。
使用 git
使用 git 有三種方式,請(qǐng)按照你的需求選擇
- 只在本地使用
- 將本地倉(cāng)庫(kù)上傳到 GitHub
- 下載 GitHub 上的倉(cāng)庫(kù)
1 只在本地使用
1.1 初始化
創(chuàng)建目錄作為我們的項(xiàng)目目錄:
mkdir git-demo-1
進(jìn)入目錄
cd git-demo-1
git init
链韭,這句命令會(huì)在 git-demo-1 里創(chuàng)建一個(gè) .git 目錄ls -la
你就會(huì)看到 .git 目錄偏竟,它就是一個(gè)「?jìng)}庫(kù)」,不要進(jìn)去看敞峭,這倉(cāng)庫(kù)里面有毒踊谋,別進(jìn)去!-
在 git-demo-1 目錄里面添加任意文件旋讹,假設(shè)我們添加了兩個(gè)文件殖蚕,分別是 index.html 和 css/style.css
touch index.html
mkdir css
touch css/style.css
-
運(yùn)行
git status -sb
可以看到文件前面有 ?? 號(hào)## Initial commit on master ?? css/ ?? index.html
這個(gè) ?? 表示 git 一臉懵逼,不知道你要怎么對(duì)待這些變動(dòng)沉迹。
-
使用 git add 將文件添加到「暫存區(qū)」
- 你可以一個(gè)一個(gè)地 add
git add index.html
git add css/style.css
- 你也可以一次性 add
-
git add .
意思是把當(dāng)前目錄(.表示當(dāng)前目錄)里面的變動(dòng)都加到「暫存區(qū)」
-
- 你可以一個(gè)一個(gè)地 add
-
再次運(yùn)行
git status -sb
睦疫,可以看到 ?? 變成了 A## Initial commit on master A css/style.css A index.html
A 的意思就是添加,也就是說(shuō)你告訴 git鞭呕,這些文件我要加到倉(cāng)庫(kù)里
-
使用 git commit -m "信息" 將你 add 過(guò)的內(nèi)容「正式提交」到本地倉(cāng)庫(kù)(.git就是本地倉(cāng)庫(kù))蛤育,并添加一些注釋信息,方便日后查閱
- 你可以一個(gè)一個(gè)地 commit
git commit index.html -m '添加index.html'
git commit css/style.css -m "添加 css/style.css"
- 你也可以一次性 commit
git commit . -m "添加了幾個(gè)文件"
- 你可以一個(gè)一個(gè)地 commit
再再次運(yùn)行
git status -sb
,發(fā)現(xiàn)沒(méi)有文件變動(dòng)了缨伊,這是因?yàn)槲募淖儎?dòng)已經(jīng)記錄在倉(cāng)庫(kù)里了。這時(shí)你使用 git log 就可以看到歷史上的變動(dòng):
```
commit f0d95058cd32a332b98967f6c0a701c64a00810a
Author: frankfang <frankfang1990@gmail.com>
Date: Thu Sep 28 22:30:43 2017 +0800
添加幾個(gè)文件
```
- 以上就是 git add / git commit 的一次完整過(guò)程进宝,可以看到刻坊,挺復(fù)雜的。原則上党晋,你錯(cuò)了任何一步谭胚,就給我從頭來(lái)一遍,做到你不會(huì)再手抖為止未玻。
1.2 文件變動(dòng)
如果我想繼續(xù)改文件灾而,應(yīng)該怎么做呢?
start css/style.css
會(huì)使用默認(rèn)的編輯器打開(kāi) css/style.css(macOS 上對(duì)應(yīng)的命令是open css/style.css
)然后我們?cè)?css/style.css 里寫(xiě)入
body {background: red}
扳剿,保存退出-
運(yùn)行
git status -sb
發(fā)現(xiàn)提示中有一個(gè) M## master M css/style.css
這個(gè) M 的意思就是 Modified旁趟,表示這個(gè)文件被修改了
此時(shí)你如果想讓改動(dòng)保存到倉(cāng)庫(kù)里,你需要先
git add css/style.css
或者也可以git add .
注意庇绽,由于這個(gè) css/style.css 以前被我們 add 過(guò)锡搜,你往文章上面看,我們是 add 過(guò) css/style.css 的瞧掺,所以此處的 git add 操作可以省略耕餐,但我建議你使用 git 的前一個(gè)月,不要省略 git add辟狈。
換句話(huà)說(shuō)肠缔,每一次改動(dòng),都要經(jīng)過(guò) git add 和 git commit 兩個(gè)命令哼转,才能被添加到 .git 本地倉(cāng)庫(kù)里明未。再次運(yùn)行
git status -sb
發(fā)現(xiàn) M 有紅色變成了綠色,紅色和綠色有啥區(qū)別呢壹蔓?別管它們的區(qū)別亚隅,記住我說(shuō)的,先 add庶溶,再 commit煮纵,等你熟練之后再去理解區(qū)別。
先形成肌肉記憶偏螺,在去形成大腦記憶行疏!運(yùn)行
git commit -m "更新 css/style.css"
,這個(gè)改動(dòng)就被提交到 .git 本地倉(cāng)庫(kù)了套像。再說(shuō)一次酿联,不要去 .git 目錄里面,那里的東西你一無(wú)所知。再再次運(yùn)行
git status -sb
贞让,會(huì)發(fā)現(xiàn)沒(méi)有變更了周崭,這說(shuō)明所有變動(dòng)都被本地倉(cāng)庫(kù)記錄在案了。
這里來(lái)透露一下git status -sb
是什么意思:git status 是用來(lái)顯示當(dāng)前的文件狀態(tài)的喳张,哪個(gè)文件變動(dòng)了续镇,方便你進(jìn)行 git add 操作。-sb 選項(xiàng)的意思就是销部,SB都能看懂摸航,哈,這是開(kāi)玩笑舅桩,-s 的意思是顯示總結(jié)(summary)酱虎,-b 的意思是顯示分支(branch),所以 -sb 的意思是顯示總結(jié)和分支擂涛。
1.3 總結(jié)
至此读串,我們來(lái)總結(jié)一下用到的命令
- git init,初始化本地倉(cāng)庫(kù) .git
- git status -sb撒妈,顯示當(dāng)前所有文件的狀態(tài)
- git add 文件路徑爹土,用來(lái)將變動(dòng)加到暫存區(qū)
- git commit -m "信息",用來(lái)正式提交變動(dòng)踩身,提交至 .git 倉(cāng)庫(kù)
- 如果有新的變動(dòng)胀茵,我們只需要依次執(zhí)行 git add xxx 和 git commit -m 'xxx' 兩個(gè)命令即可。別看本教程廢話(huà)那么多挟阻,其實(shí)就這一句有用琼娘!先 add 再 commit,行了附鸽,你學(xué)會(huì) git 了脱拼。
- git log 查看變更歷史
2 將本地倉(cāng)庫(kù)上傳到 GitHub
如何將我們這個(gè) git-demo-1 上傳到 GitHub 呢?
- 在 GitHub 上新建一個(gè)空倉(cāng)庫(kù)坷备,名稱(chēng)隨意熄浓,一般可以跟本地目錄名一致,也叫做 git-demo-1除了倉(cāng)庫(kù)名省撑,其他的什么都別改赌蔑,其他的什么都別改,其他的什么都別改竟秫,其他的什么都別改娃惯,這樣你才能創(chuàng)建一個(gè)空倉(cāng)庫(kù)
- 點(diǎn)擊創(chuàng)建按鈕之后,GitHub 就會(huì)把后續(xù)的操作全告訴你
- 點(diǎn)擊 SSH 按鈕肥败,點(diǎn)擊 SSH 按鈕趾浅,點(diǎn)擊 SSH 按鈕愕提,我想你現(xiàn)在肯定不會(huì)忘了點(diǎn)擊 SSH 按鈕了吧~~~~如果不點(diǎn)擊這個(gè)按鈕,你就會(huì)使用默認(rèn)的 HTTPS 地址皿哨。但是千萬(wàn)不要使用 HTTPS 地址浅侨,因?yàn)?HTTPS 地址使用起來(lái)特別麻煩,每次都要輸入密碼证膨,而 SSH 不用輸入用戶(hù)名密碼如输。
為什么 SSH 不用密碼呢,因?yàn)槟阋呀?jīng)上傳了 SSH public key椎例。還記得嗎?如果不記得请祖,翻到本文第一部分「配置 GitHub」章節(jié)订歪。 - 由于我們已經(jīng)有本地倉(cāng)庫(kù)了,所以看圖肆捕,圖中下面半部分就是你需要的命令刷晋,我們一行一行拷貝過(guò)來(lái)執(zhí)行
- 找到圖中的「…or push an existing repository from the command line」這一行,你會(huì)看到
git remote add origin https://github.com/xxxxxxxxxx/git-demo-1.git
慎陵, 如果你發(fā)現(xiàn)這個(gè)地址是 https 開(kāi)頭的眼虱,那你就做錯(cuò)了,還記得嗎席纽,我們要使用 SSH 地址捏悬,GitHub 的 SSH 地址是以 git@github.com 開(kāi)頭的。 - 再次點(diǎn)擊 SSH 按鈕润梯,不管我強(qiáng)調(diào)多少遍过牙,總會(huì)有人忘記點(diǎn)擊 SSH 按鈕,為什么呢纺铭?我也不知道寇钉,為了防止你忘了點(diǎn)擊 SSH 按鈕,我最后再說(shuō)一遍舶赔,「點(diǎn)擊 SSH按鈕」扫倡,點(diǎn)擊之后,整個(gè)世界就會(huì)變得美好起來(lái)竟纳。
- 得到新的命令
git remote add origin git@github.com:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/git-demo-1.git
撵溃,復(fù)制并運(yùn)行它 - 復(fù)制第二行
git push -u origin master
,運(yùn)行它 - 刷新當(dāng)前頁(yè)面锥累,你的倉(cāng)庫(kù)就上傳到 GitHub 了征懈!是不是特別簡(jiǎn)單?只要你按照我說(shuō)的做揩悄,一絲不茍卖哎,即可。
- 找到圖中的「…or push an existing repository from the command line」這一行,你會(huì)看到
3 直接在 GitHub 創(chuàng)建一個(gè)倉(cāng)庫(kù),然后下載到本地
上面兩步講了
- 在本地創(chuàng)建倉(cāng)庫(kù)
- 將本地倉(cāng)庫(kù)上傳到 GitHub
這里將第三種用法亏娜,那就是直接在 GitHub 創(chuàng)建一個(gè)倉(cāng)庫(kù)焕窝,然后下載到本地。
- 在GitHub 上新建一個(gè)倉(cāng)庫(kù) git-demo-2维贺,這次就不創(chuàng)建空倉(cāng)庫(kù)了它掂,而是自帶 README 和 Lisence 的倉(cāng)庫(kù)。
- 這樣一來(lái)溯泣,這個(gè)倉(cāng)庫(kù)就會(huì)自動(dòng)擁有三個(gè)文件:
.gitignore
LICENSE
README.md
- 這三個(gè)文件的作用請(qǐng)自行了解:.gitignore 的作用虐秋、README.md 的作用 以及 LISENCE 的作用
- 好了,現(xiàn)在遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)創(chuàng)建好了垃沦,怎么下載到我們的本地(也就是我們的電腦上)呢客给?答案是使用 git clone 命令
- 點(diǎn)擊頁(yè)面中唯一的綠色按鈕「clone or download」,會(huì)看到一個(gè)彈出層
- 請(qǐng)確保彈出層里的地址是 SSH 地址肢簿,也就是 git@github.com 開(kāi)頭的地址靶剑,如果不是,就點(diǎn)擊 Use SSH 按鈕池充,就點(diǎn)擊 Use SSH 按鈕桩引,就點(diǎn)擊 Use SSH 按鈕。然后復(fù)制這個(gè)地址收夸。
- 打開(kāi) Git Bash坑匠,找一個(gè)安全的目錄,比如 ~/Desktop 桌面目錄就很安全:
cd ~/Desktop
卧惜。運(yùn)行笛辟。 - 運(yùn)行
git clone 你剛才得到的以git@github.com開(kāi)頭的地址
,運(yùn)行完了你就會(huì)發(fā)現(xiàn)序苏,桌面上多出一個(gè) git-demo-2 目錄手幢。我再說(shuō)一遍,桌面上多出一個(gè) git-demo-2 目錄忱详。我再說(shuō)一遍围来,桌面上多出一個(gè) git-demo-2 目錄嬉愧。這個(gè)細(xì)節(jié)很重要菩暗,很多小白發(fā)現(xiàn)不了這個(gè)細(xì)節(jié)柏副,我也不知道他們是眼瞎還是怎么了…… - 進(jìn)入這個(gè)多出來(lái)的目錄甫男,對(duì)的,你肯定會(huì)忽略這一步恩沽。
- 進(jìn)入這個(gè)多出來(lái)的目錄蹂析,對(duì)的渐白,你肯定會(huì)忽略這一步糯钙。
- 進(jìn)入這個(gè)多出來(lái)的目錄粪狼,對(duì)的退腥,你肯定會(huì)忽略這一步。
- 好了你進(jìn)入了這個(gè)目錄了再榄,如果沒(méi)有狡刘,我就要吐血了,因?yàn)槲业奶崾竞苊黠@困鸥。
- 運(yùn)行
ls -la
你會(huì)看到嗅蔬,遠(yuǎn)程目錄的所有文件都在這里出現(xiàn)了,另外你還看到了 .git 本地倉(cāng)庫(kù)疾就。這是你就可以添加文件澜术,git add,然后 git commit 了猬腰。
三種方式都說(shuō)完了鸟废,它們分別是:
- 在本地創(chuàng)建倉(cāng)庫(kù)
- 將本地倉(cāng)庫(kù)上傳到 GitHub
- 下載 GitHub 上的倉(cāng)庫(kù)到本地
其實(shí)呢,我還可以說(shuō)很多種不同的方式漆诽,但是侮攀,你記住這幾種就行了锣枝,夠你用的了厢拭。我們并不想要了解 git 的所有高級(jí)用法,我們的目的很明確:能通過(guò) Git 命令使用 GitHub 就行撇叁。
我們?cè)倩仡櫼槐橐呀?jīng)學(xué)到的命令:(這次只多了一個(gè) git clone 命令)
- git clone git@github.com:xxxx供鸠,下載倉(cāng)庫(kù)
- git init,初始化本地倉(cāng)庫(kù) .git
- git status -sb陨闹,顯示當(dāng)前所有文件的狀態(tài)
- git add 文件路徑楞捂,用來(lái)將變動(dòng)加到暫存區(qū)
- git commit -m "信息",用來(lái)正式提交變動(dòng)趋厉,提交至 .git 倉(cāng)庫(kù)
- 如果有新的變動(dòng)寨闹,我們只需要依次執(zhí)行 git add xxx 和 git commit -m 'xxx' 兩個(gè)命令即可。別看本教程廢話(huà)那么多君账,其實(shí)就這一句有用繁堡!先 add 再 commit,行了乡数,你學(xué)會(huì) git 了椭蹄。
- git log 查看變更歷史
如何上傳更新
你在本地目錄有任何變動(dòng),只需按照以下順序就能上傳:
- git add 文件路徑
- git commit -m "信息"
- git pull (相信我净赴,你一定會(huì)忘記這一個(gè)命令)
- git push
下面是例子
cd git-demo-1
touch index2.html
git add index2.html
git commit -m "新建 index2.html"
git pull
git push
然后你去 git-demo-1 的 GitHub 頁(yè)面绳矩,就能看到 index2.html 出現(xiàn)在里面了。是不是很……簡(jiǎn)……單……呢……
其他
還有一些有用的命令
-
git remote add origin git@github.com:xxxxxxx.git
將本地倉(cāng)庫(kù)與遠(yuǎn)程倉(cāng)庫(kù)關(guān)聯(lián) -
git remote set-url origin git@github.com:xxxxx.git
上一步手抖了玖翅,可以用這個(gè)命令來(lái)挽回 -
git branch
新建分支 -
git merge
合并分支 -
git stash
通靈術(shù) -
git stash pop
反轉(zhuǎn)通靈術(shù) -
git revert
后悔了 -
git reset
另一種后悔了 -
git diff
查看詳細(xì)變化
學(xué) git 命令都?jí)蚰銈儗W(xué)一周的翼馆,所以別妄想現(xiàn)在就掌握它割以,切記。