配置 GitHub
- 進入 https://github.com/settings/keys
- 如果頁面里已經有一些 key,就點「delete」按鈕把這些 key 全刪掉。如果沒有,就往下看
- 點擊 New SSH key,你需要輸入 Title 和 Key,但是你現在沒有 key,往下看
- 打開 Git Bash
- 復制并運行
rm -rf ~/.ssh/*
把現有的 ssh key 都刪掉,這句命令行如果你多打一個空格,可能就要重裝系統了,建議復制運行。 - 運行
ssh-keygen -t rsa -b 4096 -C "你的郵箱"
,注意填寫你的郵箱! - 按回車三次
- 運行
cat ~/.ssh/id_rsa.pub
,得到一串東西,完整的復制這串東西 - 回到上面第 3 步的頁面,在 Title 輸入「我的第一個 key」
- 在 Key 里粘貼剛剛你你復制的那串東西
- 點擊 Add SSH key
- 回到 Git Bash
- 運行
ssh -T git@github.com
,你可能會看到這樣的提示:
輸入 yes 回車……問你話你就答,別傻在那
- 然后如果你看到
Permission denied (publickey).
就說明你失敗了,請回到第 1 步重來,是的,回到第 1 步重來;如果你看到Hi FrankFang! You've successfully authenticated, but GitHub does not provide shell access.
就說明你成功了!
好了,終于 TMD 添加了一個無聊的 SSH key,不要問我這個有什么用,因為一會兒你就會用到它,你想了解原理就看這篇 文章
如果要講清楚,太浪費時間了,我們只是想用用 GitHub 而已。
- 一臺電腦只需要一個 SSH key
- 一個 SSH key 可以訪問你的所有倉庫,即使你有 1000000 個倉庫,都沒問題
- 如果你新買了電腦,就在新電腦上重新生成一個 SSH key,把這個 key 也上傳到 GitHub,它可以和之前的 key 共存在 GitHub 上
- 如果你把 key 從電腦上刪除了,重新生成一個 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"
五句話,依次運行。不執行的話,電腦可能會爆炸你信不信。
使用 git
使用 git 有三種方式,請按照你的需求選擇
- 只在本地使用
- 將本地倉庫上傳到 GitHub
- 下載 GitHub 上的倉庫
1 只在本地使用
1.1 初始化
創建目錄作為我們的項目目錄:
mkdir git-demo-1
進入目錄
cd git-demo-1
git init
,這句命令會在 git-demo-1 里創建一個 .git 目錄ls -la
你就會看到 .git 目錄,它就是一個「倉庫」,不要進去看,這倉庫里面有毒,別進去!-
在 git-demo-1 目錄里面添加任意文件,假設我們添加了兩個文件,分別是 index.html 和 css/style.css
touch index.html
mkdir css
touch css/style.css
-
運行
git status -sb
可以看到文件前面有 ?? 號## Initial commit on master ?? css/ ?? index.html
這個 ?? 表示 git 一臉懵逼,不知道你要怎么對待這些變動。
-
使用 git add 將文件添加到「暫存區」
- 你可以一個一個地 add
git add index.html
git add css/style.css
- 你也可以一次性 add
-
git add .
意思是把當前目錄(.表示當前目錄)里面的變動都加到「暫存區」
-
- 你可以一個一個地 add
-
再次運行
git status -sb
,可以看到 ?? 變成了 A## Initial commit on master A css/style.css A index.html
A 的意思就是添加,也就是說你告訴 git,這些文件我要加到倉庫里
-
使用 git commit -m "信息" 將你 add 過的內容「正式提交」到本地倉庫(.git就是本地倉庫),并添加一些注釋信息,方便日后查閱
- 你可以一個一個地 commit
git commit index.html -m '添加index.html'
git commit css/style.css -m "添加 css/style.css"
- 你也可以一次性 commit
git commit . -m "添加了幾個文件"
- 你可以一個一個地 commit
再再次運行
git status -sb
,發現沒有文件變動了,這是因為文件的變動已經記錄在倉庫里了。這時你使用 git log 就可以看到歷史上的變動:
```
commit f0d95058cd32a332b98967f6c0a701c64a00810a
Author: frankfang <frankfang1990@gmail.com>
Date: Thu Sep 28 22:30:43 2017 +0800
添加幾個文件
```
- 以上就是 git add / git commit 的一次完整過程,可以看到,挺復雜的。原則上,你錯了任何一步,就給我從頭來一遍,做到你不會再手抖為止。
1.2 文件變動
如果我想繼續改文件,應該怎么做呢?
start css/style.css
會使用默認的編輯器打開 css/style.css(macOS 上對應的命令是open css/style.css
)然后我們在 css/style.css 里寫入
body {background: red}
,保存退出-
運行
git status -sb
發現提示中有一個 M## master M css/style.css
這個 M 的意思就是 Modified,表示這個文件被修改了
此時你如果想讓改動保存到倉庫里,你需要先
git add css/style.css
或者也可以git add .
注意,由于這個 css/style.css 以前被我們 add 過,你往文章上面看,我們是 add 過 css/style.css 的,所以此處的 git add 操作可以省略,但我建議你使用 git 的前一個月,不要省略 git add。
換句話說,每一次改動,都要經過 git add 和 git commit 兩個命令,才能被添加到 .git 本地倉庫里。再次運行
git status -sb
發現 M 有紅色變成了綠色,紅色和綠色有啥區別呢?別管它們的區別,記住我說的,先 add,再 commit,等你熟練之后再去理解區別。
先形成肌肉記憶,在去形成大腦記憶!運行
git commit -m "更新 css/style.css"
,這個改動就被提交到 .git 本地倉庫了。再說一次,不要去 .git 目錄里面,那里的東西你一無所知。再再次運行
git status -sb
,會發現沒有變更了,這說明所有變動都被本地倉庫記錄在案了。
這里來透露一下git status -sb
是什么意思:git status 是用來顯示當前的文件狀態的,哪個文件變動了,方便你進行 git add 操作。-sb 選項的意思就是,SB都能看懂,哈,這是開玩笑,-s 的意思是顯示總結(summary),-b 的意思是顯示分支(branch),所以 -sb 的意思是顯示總結和分支。
1.3 總結
至此,我們來總結一下用到的命令
- git init,初始化本地倉庫 .git
- git status -sb,顯示當前所有文件的狀態
- git add 文件路徑,用來將變動加到暫存區
- git commit -m "信息",用來正式提交變動,提交至 .git 倉庫
- 如果有新的變動,我們只需要依次執行 git add xxx 和 git commit -m 'xxx' 兩個命令即可。別看本教程廢話那么多,其實就這一句有用!先 add 再 commit,行了,你學會 git 了。
- git log 查看變更歷史
2 將本地倉庫上傳到 GitHub
如何將我們這個 git-demo-1 上傳到 GitHub 呢?
- 在 GitHub 上新建一個空倉庫,名稱隨意,一般可以跟本地目錄名一致,也叫做 git-demo-1
按照截圖所示,除了倉庫名,其他的什么都別改,其他的什么都別改,其他的什么都別改,其他的什么都別改,這樣你才能創建一個空倉庫
- 點擊創建按鈕之后,GitHub 就會把后續的操作全告訴你,如圖
- 看圖,點擊 SSH 按鈕,點擊 SSH 按鈕,點擊 SSH 按鈕,我想你現在肯定不會忘了點擊 SSH 按鈕了吧~~~~如果不點擊這個按鈕,你就會使用默認的 HTTPS 地址。但是千萬不要使用 HTTPS 地址,因為 HTTPS 地址使用起來特別麻煩,每次都要輸入密碼,而 SSH 不用輸入用戶名密碼。
為什么 SSH 不用密碼呢,因為你已經上傳了 SSH public key。還記得嗎?如果不記得,翻到本文第一部分「配置 GitHub」章節。 - 由于我們已經有本地倉庫了,所以看圖,圖中下面半部分就是你需要的命令,我們一行一行拷貝過來執行
- 找到圖中的「…or push an existing repository from the command line」這一行,你會看到
git remote add origin https://github.com/xxxxxxxxxx/git-demo-1.git
, 如果你發現這個地址是 https 開頭的,那你就做錯了,還記得嗎,我們要使用 SSH 地址,GitHub 的 SSH 地址是以 git@github.com 開頭的。 - 再次點擊 SSH 按鈕,不管我強調多少遍,總會有人忘記點擊 SSH 按鈕,為什么呢?我也不知道,為了防止你忘了點擊 SSH 按鈕,我最后再說一遍,「點擊 SSH按鈕」,點擊之后,整個世界就會變得美好起來。
- 得到新的命令
git remote add origin git@github.com:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/git-demo-1.git
,復制并運行它 - 復制第二行
git push -u origin master
,運行它 - 刷新當前頁面,你的倉庫就上傳到 GitHub 了!是不是特別簡單?只要你按照我說的做,一絲不茍,即可。
- 找到圖中的「…or push an existing repository from the command line」這一行,你會看到
3 直接在 GitHub 創建一個倉庫,然后下載到本地
上面兩步講了
- 在本地創建倉庫
- 將本地倉庫上傳到 GitHub
這里將第三種用法,那就是直接在 GitHub 創建一個倉庫,然后下載到本地。
- 在GitHub 上新建一個倉庫 git-demo-2,這次就不創建空倉庫了,而是自帶 README 和 Lisence 的倉庫,創建截圖如下:
請按圖中所示,填寫一模一樣的內容,然后點擊創建按鈕。
- 這樣一來,這個倉庫就會自動擁有三個文件:
- 這三個文件的作用請自行了解:.gitignore 的作用、README.md 的作用 以及 LISENCE 的作用
- 好了,現在遠程倉庫已經創建好了,怎么下載到我們的本地(也就是我們的電腦上)呢?答案是使用 git clone 命令
- 點擊頁面中唯一的綠色按鈕「clone or download」,會看到一個彈出層
- 請確保彈出層里的地址是 SSH 地址,也就是 git@github.com 開頭的地址,如果不是,就點擊 Use SSH 按鈕,就點擊 Use SSH 按鈕,就點擊 Use SSH 按鈕。然后復制這個地址。
- 打開 Git Bash,找一個安全的目錄,比如 ~/Desktop 桌面目錄就很安全:
cd ~/Desktop
。運行。 - 運行
git clone 你剛才得到的以git@github.com開頭的地址
,運行完了你就會發現,桌面上多出一個 git-demo-2 目錄。我再說一遍,桌面上多出一個 git-demo-2 目錄。我再說一遍,桌面上多出一個 git-demo-2 目錄。這個細節很重要,很多小白發現不了這個細節,我也不知道他們是眼瞎還是怎么了…… - 進入這個多出來的目錄,對的,你肯定會忽略這一步。
- 進入這個多出來的目錄,對的,你肯定會忽略這一步。
- 進入這個多出來的目錄,對的,你肯定會忽略這一步。
- 好了你進入了這個目錄了,如果沒有,我就要吐血了,因為我的提示很明顯。
- 運行
ls -la
你會看到,遠程目錄的所有文件都在這里出現了,另外你還看到了 .git 本地倉庫。這是你就可以添加文件,git add,然后 git commit 了。
三種方式都說完了,它們分別是:
- 在本地創建倉庫
- 將本地倉庫上傳到 GitHub
- 下載 GitHub 上的倉庫到本地
其實呢,我還可以說很多種不同的方式,但是,你記住這幾種就行了,夠你用的了。我們并不想要了解 git 的所有高級用法,我們的目的很明確:能通過 Git 命令使用 GitHub 就行。
我們再回顧一遍已經學到的命令:(這次只多了一個 git clone 命令)
- git clone git@github.com:xxxx,下載倉庫
- git init,初始化本地倉庫 .git
- git status -sb,顯示當前所有文件的狀態
- git add 文件路徑,用來將變動加到暫存區
- git commit -m "信息",用來正式提交變動,提交至 .git 倉庫
- 如果有新的變動,我們只需要依次執行 git add xxx 和 git commit -m 'xxx' 兩個命令即可。別看本教程廢話那么多,其實就這一句有用!先 add 再 commit,行了,你學會 git 了。
- git log 查看變更歷史
如何上傳更新
你在本地目錄有任何變動,只需按照以下順序就能上傳:
- git add 文件路徑
- git commit -m "信息"
- git pull (相信我,你一定會忘記這一個命令)
- 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 出現在里面了。是不是很……簡……單……呢……
git ignore
在項目目錄創建 .gitignore 文件就可以指定「哪些文件不上傳到遠程倉庫」,比如
.gitignroe
/node_modules/
/.vscode/
這樣就可以避免 node_modules/ 和 .vscode/ 目錄被上傳到 github 了。
記住一句話:永遠都不要上傳 node_modules 到 github。
其他
還有一些有用的命令
-
git remote add origin git@github.com:xxxxxxx.git
將本地倉庫與遠程倉庫關聯 -
git remote set-url origin git@github.com:xxxxx.git
上一步手抖了,可以用這個命令來挽回 -
git branch
新建分支 -
git merge
合并分支 -
git stash
通靈術 -
git stash pop
反轉通靈術 -
git revert
后悔了 -
git reset
另一種后悔了 -
git diff
查看詳細變化
學 git 命令都夠你們學一周的,所以別妄想現在就掌握它,切記。