配置 GitHub
- 進(jìn)入 Github的SSH keys
- 如果頁面里已經(jīng)有一些 key示弓,就點(diǎn)「delete」按鈕把這些 key 全刪掉刻撒。如果沒有,就往下看
- 點(diǎn)擊
New SSH key
,你需要輸入Title
和Key
随闽,但是你現(xiàn)在沒有 key,往下看 - 打開 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 "你的郵箱"
诉儒,注意填寫你的郵箱! - 按回車三次
- 運(yùn)行
cat ~/.ssh/id_rsa.pub
亏掀,得到一串東西忱反,完整的復(fù)制這串東西 - 回到上面第 3 步的頁面,在 Title 輸入「我的第一個(gè) key」
- 在 Key 里粘貼剛剛你你復(fù)制的那串東西
- 點(diǎn)擊 Add SSH key
- 回到 Git Bash
- 運(yùn)行
ssh -T git@github.com
滤愕,你可能會(huì)看到這樣的提示:
yes
回車……問你話你就答温算,別傻在那 - 然后如果你看到
Permission denied (publickey)
. 就說明你失敗了,請(qǐng)回到第 1 步重來间影,是的注竿,回到第 1 步重來;如果你看到Hi FrankFang! You've successfully authenticated, but GitHub does not provide shell access.
就說明你成功了宇智!
好了蔓搞,終于 TMD 添加了一個(gè)無聊的 SSH key,不要問我這個(gè)有什么用随橘,因?yàn)橐粫?huì)兒你就會(huì)用到它喂分,你想了解原理就看這篇文章
如果要講清楚,太浪費(fèi)時(shí)間了机蔗,我們只是想用用 GitHub 而已蒲祈。
- 一臺(tái)電腦只需要一個(gè) SSH key
- 一個(gè) SSH key 可以訪問你的所有倉庫,即使你有 1000000 個(gè)倉庫萝嘁,都沒問題
- 如果你新買了電腦梆掸,就在新電腦上重新生成一個(gè) SSH key,把這個(gè) key 也上傳到 GitHub牙言,它可以和之前的 key 共存在 GitHub 上
- 如果你把 key 從電腦上刪除了酸钦,重新生成一個(gè) key 即可,替換之前的 key
配置 git
git config --global user.name //user.name改為你的英文名
git config --global user.email //user.email你的郵箱
git config --global push.default matching
git config --global core.quotepath false
git config --global core.editor "vim"
五句話咱枉,依次運(yùn)行卑硫。不執(zhí)行的話徒恋,電腦可能會(huì)爆炸你信不信。
使用 git
使用 git 有三種方式欢伏,請(qǐng)按照你的需求選擇
- 只在本地使用
- 將本地倉庫上傳到 GitHub
- 下載 GitHub 上的倉庫
1.只在本地使用
1.1 初始化
- 創(chuàng)建目錄作為我們的項(xiàng)目目錄:
mkdir git-demo-2
- 進(jìn)入目錄
cd git-demo-2
-
git init
入挣,這句命令會(huì)在 git-demo-1 里創(chuàng)建一個(gè).git
目錄 -
ls -la
你就會(huì)看到 .git 目錄,它就是一個(gè)「倉庫」硝拧,不要進(jìn)去看径筏,這倉庫里面有毒,別進(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ū)」
- 再次運(yùn)行
git status -sb
,可以看到??
變成了A
Initial commit on master
A css/style.css
A index.html
A 的意思就是添加媳维,也就是說你告訴 git酿雪,這些文件我要加到倉庫里
- 使用
git commit -m "信息"
將你 add 過的內(nèi)容「正式提交」到本地倉庫(.git就是本地倉庫),并添加一些注釋信息侄刽,方便日后查閱
- 你可以一個(gè)一個(gè)地
commit
git commit index.html -m '添加index.html'
git commit css/style.css -m "添加 css/style.css"
- 你也可以一次性
commit
git commit . -m "添加了幾個(gè)文件"
- 再再次運(yùn)行
git status -sb
指黎,發(fā)現(xiàn)沒有文件變動(dòng)了,這是因?yàn)槲募淖儎?dòng)已經(jīng)記錄在倉庫里了州丹。
這時(shí)你使用git log
就可以看到歷史上的變動(dòng):
commit f0d95058cd32a332b98967f6c0a701c64a00810a
Author: phoebechoi phoebechoi.isme@gmail.com
Date: Thu Sep 28 22:30:43 2017 +0800添加幾個(gè)文件
- 以上就是
git add / git commit
的一次完整過程醋安,可以看到,挺復(fù)雜的墓毒。原則上吓揪,錯(cuò)了任何一步,都從頭來一遍所计,做到你不會(huì)再手抖為止柠辞。
1.2 文件變動(dòng)
如果我想繼續(xù)改文件,應(yīng)該怎么做呢主胧?
-
start css/style.css
會(huì)使用默認(rèn)的編輯器打開 css/style.css(macOS 上對(duì)應(yīng)的命令是open css/style.css
) - 然后我們?cè)?
css/style.css
里寫入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)保存到倉庫里踪栋,你需要先
git add css/style.css
或者也可以git add .
注意焙格,由于這個(gè) css/style.css 以前被我們 add 過,你往文章上面看夷都,我們是 add 過 css/style.css 的眷唉,所以此處的 git add 操作可以省略,但我建議你使用 git 的前一個(gè)月,不要省略git add
冬阳。
換句話說荣瑟,每一次改動(dòng),都要經(jīng)過git add
和git commit
兩個(gè)命令摩泪,才能被添加到 .git 本地倉庫里。 - 再次運(yùn)行
git status -sb
發(fā)現(xiàn) M 由紅色變成了綠色劫谅,紅色和綠色有啥區(qū)別呢见坑?別管它們的區(qū)別,記住我說的捏检,先add
荞驴,再commit
,等你熟練之后再去理解區(qū)別贯城。
先形成肌肉記憶熊楼,在去形成大腦記憶! - 運(yùn)行
git commit -m "更新 css/style.css"
能犯,這個(gè)改動(dòng)就被提交到.git
本地倉庫了鲫骗。再說一次,不要去 .git 目錄里面踩晶,那里的東西你一無所知执泰。 - 再再次運(yùn)行
git status -sb
,會(huì)發(fā)現(xiàn)沒有變更了渡蜻,這說明所有變動(dòng)都被本地倉庫記錄在案了术吝。
這里來透露一下git status -sb
是什么意思:git status
是用來顯示當(dāng)前的文件狀態(tài)的,哪個(gè)文件變動(dòng)了茸苇,方便你進(jìn)行 git add 操作排苍。-sb 選項(xiàng)的意思就是,SB都能看懂学密,哈淘衙,這是開玩笑,-s 的意思是顯示總結(jié)(summary)腻暮,-b 的意思是顯示分支(branch)幔翰,所以 -sb 的意思是顯示總結(jié)和分支。
1.3 總結(jié)
至此西壮,我們來總結(jié)一下用到的命令
-
git init
遗增,初始化本地倉庫 .git -
git status -sb
,顯示當(dāng)前所有文件的狀態(tài) -
git add 文件路徑
款青,用來將變動(dòng)加到暫存區(qū) -
git commit -m "信息"
做修,用來正式提交變動(dòng),提交至 .git 倉庫 - 如果有新的變動(dòng),我們只需要依次執(zhí)行
git add xxx
和git commit -m 'xxx'
兩個(gè)命令即可饰及。別看本教程廢話那么多蔗坯,其實(shí)就這一句有用!先add
再commit
燎含,行了宾濒,你學(xué)會(huì) git 了。 -
git log
查看變更歷史
2 將本地倉庫上傳到 GitHub
如何將我們這個(gè) git-demo-2 上傳到 GitHub 呢屏箍?
-
在 GitHub 上新建一個(gè)空倉庫绘梦,名稱隨意,一般可以跟本地目錄名一致赴魁,也叫做 git-demo-2
按照截圖所示卸奉,除了倉庫名,其他的什么都別改颖御,其他的什么都別改榄棵,其他的什么都別改,其他的什么都別改潘拱,這樣你才能創(chuàng)建一個(gè)空倉庫
-
點(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 地址。但是千萬不要使用 HTTPS 地址弛随,因?yàn)?HTTPS 地址使用起來特別麻煩瓢喉,每次都要輸入密碼,而 SSH 不用輸入用戶名密碼舀透。
為什么 SSH 不用密碼呢栓票,因?yàn)槟阋呀?jīng)上傳了 SSH public key。由于我們已經(jīng)有本地倉庫了愕够,所以看圖走贪,圖中下面半部分就是你需要的命令,我們一行一行拷貝過來執(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 開頭的,那你就做錯(cuò)了遂跟,還記得嗎逃沿,我們要使用 SSH 地址婴渡,GitHub 的 SSH 地址是以 git@github.com 開頭的。 - 再次點(diǎn)擊 SSH 按鈕凯亮,不管我強(qiáng)調(diào)多少遍边臼,總會(huì)有人忘記點(diǎn)擊 SSH 按鈕,為什么呢假消?我也不知道柠并,為了防止你忘了點(diǎn)擊 SSH 按鈕,我最后再說一遍富拗,
「點(diǎn)擊 SSH按鈕」
臼予,點(diǎn)擊之后,整個(gè)世界就會(huì)變得美好起來媒峡。 - 得到新的命令
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)前頁面谅阿,你的倉庫就上傳到 GitHub 了!是不是特別簡單酬滤?只要你按照我說的做签餐,一絲不茍,即可盯串。
3 直接在 GitHub 創(chuàng)建一個(gè)倉庫氯檐,然后下載到本地
上面兩步講了
- 在本地創(chuàng)建倉庫
- 將本地倉庫上傳到 GitHub
這里有第三種用法,那就是直接在 GitHub 創(chuàng)建一個(gè)倉庫体捏,然后下載到本地冠摄。
-
在GitHub 上新建一個(gè)倉庫 git-demo-3,這次就不創(chuàng)建空倉庫了几缭,而是自帶 README 和 Lisence 的倉庫河泳,創(chuàng)建截圖如下:
請(qǐng)按圖中所示,填寫一模一樣的內(nèi)容年栓,然后點(diǎn)擊創(chuàng)建按鈕拆挥。
- 這樣一來,這個(gè)倉庫就會(huì)自動(dòng)擁有兩個(gè)文件(有些人可能會(huì)有三個(gè)文件某抓,還有一個(gè)文件是
.gitignore
):
好了纸兔,現(xiàn)在遠(yuǎn)程倉庫已經(jīng)創(chuàng)建好了,怎么下載到我們的本地(也就是我們的電腦上)呢否副?答案是使用 git clone 命令
-
點(diǎn)擊頁面中唯一的綠色按鈕「clone or download」汉矿,會(huì)看到一個(gè)彈出層
請(qǐng)確保彈出層里的地址是 SSH 地址,也就是 git@github.com 開頭的地址备禀,如果不是负甸,就點(diǎn)擊 Use SSH 按鈕流强,就點(diǎn)擊 Use SSH 按鈕,就點(diǎn)擊 Use SSH 按鈕呻待。然后復(fù)制這個(gè)地址打月。
打開 Git Bash,找一個(gè)安全的目錄蚕捉,比如 ~/Desktop 桌面目錄就很安全:
cd ~/Desktop
奏篙。運(yùn)行。運(yùn)行
git clone 你剛才得到的以git@github.com開頭的地址
迫淹,運(yùn)行完了你就會(huì)發(fā)現(xiàn)秘通,桌面上多出一個(gè) git-demo-3 目錄。我再說一遍敛熬,桌面上多出一個(gè) git-demo-3 目錄肺稀。我再說一遍,桌面上多出一個(gè) git-demo-3 目錄应民。這個(gè)細(xì)節(jié)很重要话原,很多人發(fā)現(xiàn)不了這個(gè)細(xì)節(jié),我也不知道他們是眼瞎還是怎么了……然后
cd git-demo-3
诲锹,對(duì)的繁仁,你肯定會(huì)忽略這一步。然后
cd git-demo-3
归园,對(duì)的黄虱,你肯定會(huì)忽略這一步。然后
cd git-demo-3
庸诱,對(duì)的捻浦,你肯定會(huì)忽略這一步。好了你進(jìn)入了這個(gè)目錄了桥爽,如果沒有默勾,我就要吐血了,因?yàn)槲业奶崾竞苊黠@聚谁。
運(yùn)行
ls -la
你會(huì)看到母剥,遠(yuǎn)程目錄的所有文件都在這里出現(xiàn)了,另外你還看到了 .git 本地倉庫形导。這時(shí)你就可以添加文件环疼,git add,然后 git commit 了朵耕。
三種方式都說完了炫隶,它們分別是:
- 在本地創(chuàng)建倉庫
- 將本地倉庫上傳到 GitHub
- 下載 GitHub 上的倉庫到本地
其實(shí)呢,我還可以說很多種不同的方式阎曹,但是伪阶,你記住這幾種就行了煞檩,夠你用的了。我們并不想要了解 git 的所有高級(jí)用法栅贴,我們的目的很明確:能通過 Git 命令使用 GitHub 就行斟湃。
我們?cè)倩仡櫼槐橐呀?jīng)學(xué)到的命令:(這次只多了一個(gè) git clone 命令)
-
git clone git@github.com:xxxx
,下載倉庫 -
git init
檐薯,初始化本地倉庫 .git -
git status -sb
凝赛,顯示當(dāng)前所有文件的狀態(tài) -
git add 文件路徑
,用來將變動(dòng)加到暫存區(qū) -
git commit -m "信息"
坛缕,用來正式提交變動(dòng)墓猎,提交至 .git 倉庫 - 如果有新的變動(dòng),我們只需要依次執(zhí)行
git add xxx
和git commit -m 'xxx'
兩個(gè)命令即可赚楚。別看本教程廢話那么多毙沾,其實(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 頁面焚刺,就能看到 index2.html 出現(xiàn)在里面了敛摘。是不是很……簡……單……呢……
其他
還有一些有用的命令
git remote add origin git@github.com:xxxxxxx.git
將本地倉庫與遠(yuǎn)程倉庫關(guān)聯(lián)
git remote set-url origin git@github.com:xxxxx.git
上一步手抖了,可以用這個(gè)命令來挽回
-
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)在就掌握它兄淫,切記。