人之所以喜歡追憶過往,主要因為時光無法倒流,一切的美好和不如意都成云煙,美好不能重復,遺憾無法彌補,所以當下時光千金不易,諸君共勉,只求了無遺憾。人生雖然不能重復,但GIT可以在我們人生中實現部分時光倒流效果,比如可以讓程序員方便的保存代碼的版本,并且能夠快速的切換到指定的版本,如果新代碼出現錯誤,可以再次回到過去,如同通關游戲,打到某個比較好的戰績可以保存一下,防止失敗后,又要重新開始。
一.Git與GitHub的區別:
1.Git是一款軟件,利用它可以對本機的文件進行版本管理。
2.GitHub是一個商業網站,可以作為一個Git服務器,通過web界面來進行一些Git執行操作。
可以認為Git與GitHub的關系就如同USB與USBHub的關系。
二.Git與GitHub配合使用:
Git可以與GitHub配合使用,以實現代碼共享與合作開發,這也是為什么他兩者會被混淆的原因之一。
三.配置Github:
- 進入 https://github.com/settings/keys
- 如果頁面里已經有一些 key,就點「delete」按鈕把這些 key 全刪掉。如果沒有,就往下看
- 點擊 New SSH key,你需要輸入 Title 和 Key,Titile意思是自己的設備備注名,比如你在家和公司用的是不同的電腦,為了區分你可以給他們的title寫一下。如果你現在沒有 key,請繼續看下面的步驟。
- 打開 Git Bash (iterm2)
- 復制并運行
rm -rf ~/.ssh/*
把現有的 ssh key 都刪掉,這句命令行如果你多打一個空格,可能就要重裝系統了,建議復制運行。 - 運行
ssh-keygen -t rsa -b 4096 -C "你的郵箱"
,注意填寫你的郵箱! - 按回車繼續,中間有一個需要輸入y的地方,輸入一下繼續,然后再按三次,直到出現一堆泡泡狀符號,表示成功。見下圖。
成功后會在home目下下的.ssh文件夾生成一些文件( 可以查看詳細),其中包含 id_rsa 和 id_rsa_pub ,其中id_rsa就相當于你的指紋鑰匙,id_rsa_pub就是相當于鎖,我們需要做的就是要cat 一下這個id_rsa_pub文件,將其中的密匙上傳到githubSSH keys / Add new頁面中的Key欄里。
- 運行
cat ~/.ssh/id_rsa.pub
,得到一串東西,完整的復制這串東西 - 回到上面第 3 步的頁面,在 Title 輸入「這里輸入任意名字,通常為設備+地點比較好一些。例如
Imac_Commpany
」 - 在 Key 里粘貼剛剛你你復制的那串東西
- 點擊 Add SSH key
- 回到 Git Bash (iterm2)
- 運行
ssh -T git@github.com
,你可能會看到這樣2種提示:1種是你第一次用你這個電腦的IP+密匙訪問github,他會問你是否要連接,然后會有yes和no的選項。這里要輸入yes,注意是yes,yes,yes,不是y,重要的事情說三遍,以便于自己能自己能記憶清楚。
(拓展: 其實電腦密匙+ip的訪問記錄都存儲在了本地的 ~/.ssh/known_hosts文件中,如果我們把這個文件刪除了,則會必然出現詢問你第一次訪問yes or no 的情況。刪除命令為 rm ~/.ssh/known_hosts)
- 然后如果你看到
Permission denied (publickey).
就說明你失敗了,請回到第 1 步重來,是的,回到第 1 步重來;如果你看到Hi 某某某! You've successfully authenticated, but GitHub does not provide shell access.
就說明你成功了!
SSH key終于添加好了,想了解原理就看這篇 文章
配置 git
>git config --global user.自己的英文名 # 讓別人知道你是誰
git config --global user.自己的郵箱 # 如果你寫出了bug,這個郵箱就是別人來找到你來罵你的
git config --global push.default simple # 本來是 matching,不過可能 simple 更好
git config --global core.quotepath false #防止文件名變成數字
git config --global core.editor "vim" # 使用vim編輯提交信息
五句話,依次運行。不執行的話,電腦可能會爆炸你信不信。
使用 git
使用 git 有三種方式,主要有:
- 只在本地使用
- 將本地倉庫上傳到 GitHub
- 下載 GitHub 上的倉庫
我們先創建一個本地的空目錄( ~ 指的是/User/mengkunpeng,~ 下的目錄都是自己的文件,所以創建文件夾一定要創建在 ~ 的層級下),代碼為
mkdir ~/git-demo-1
然后進入這個目錄
然后進入這個目錄
然后進入這個目錄
然后進入這個目錄
然后進入這個目錄
cd ~/git-demo-1
如果你不進入這個目錄,電腦會將你當前停留在的目錄當做git倉庫而將當前目錄整個個上傳到github
然后進行初始化
倉庫初始化 git init
git init
我們創建一些文件
touch index.html
然后我們輸入
git status -sb
//這里來透露一下 git status -sb 是什么意思:git status 是用來顯示當前的文件狀態的,哪個文件變動了,方便你進行 git add 操作。-sb 選項的意思就是,SB都能看懂,哈,這是開玩笑,-s 的意思是顯示總結(summary),-b 的意思是顯示分支(branch),所以 -sb 的意思是顯示總結和分支。
我們要經常使用這句來查看git倉庫中各種文件的狀態。
當我們執行這句git status -sb
的時候,它就會幫我們列出當前git倉庫的這些文件的狀態:
- 剛創建的文件(非目錄)會出現?? 意思是git不明白我們這幾個文件將要執行什么操作。
- 已經add了的文件,就會變成一個綠色的A
- 如果里面包含空文件夾,則
git status -sb
會跳過空文件夾(熟視無睹) - 還有文件修改了的話,執行這句話會出現靠右的M標記,如果我們將剛才修改的文件添加到add提交區,再次執
git status -sb
那么靠右的M標記就會變成靠左的M
mkdir css
//創建css文件夾
touch css/style.css
//在css文件夾內添加 style.css文件
添加文件到索引(暫存區) git add
git add index.html
//將index.html添加到索引(暫存區)
git add css
//將css文件夾及包含的所有文件添加到索引(暫存區)
git commit -m "第一次提交"
//將添加到索引(暫存區)的文件提交到本地的git倉庫,這樣你想恢復的時候,它就可以從倉庫里拿出來。
正式提交」到本地倉庫 git commit -m
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 "添加了幾個文件"
history
//查看我們剛才都做了什么
我們這里改一下文件,看下一系列的操作過程。
open css/style.css
//打開style.css
打開后編輯,在里面寫入body {corlor: red}
運行一下git status -sb
查看狀態,發現css文件有一個紅色靠右的標記
這說明這個文件比上次已經有了改動,有了改動我們就要將它添加到索引,添加到索引(暫存區)的文件才可以提交(commit),所以我們執行
git add css
// 再次將css及其內部文件提交到索引區
運行一下
git status -sb
//發現剛才的靠右的紅色M變成了靠左的綠色M,表示文件已經添加到了索引區。
總結一下用到的命令
git init
,初始化本地倉庫 .git
git status -sb
,顯示當前所有文件的狀態
git add 文件路徑
,用來將變動加到暫存區
git commit -m "信息"
,用來正式提交變動,提交至 .git 倉庫
如果有新的變動,我們只需要依次執行 git add xxx 和 git commit -m 'xxx' 兩個命令即可。
git log
查看變更歷史