1:Git 及GitHub入門css
版本控制 版本控制是指在多人協做的軟件開發過程中,對各類代碼,配置文件及說明文檔變動的管理。最主要的功能就是追蹤文件的變動。它會將何時,什麼人更改了文件的什麼內容等信息忠實地記錄下來。例如:
html
分佈式管理 提到分佈式管理,不得不說Git的誕生。
Linux Torvalds 建立了開源的Linux,並由全世界熱心的開源志願者爲Linux系統編寫代碼。可是隨着爲其編寫代碼的人愈來愈多,隊伍愈來愈壯大,Linux Torvalds僅僅經過本身整合代碼已經變得再也不現實了,經過版本控制系統來解決代碼的管理是最好的方案。可是Linux本人對當時免費並盛行的CVS及SVN等版本控制系統極其厭惡。緣由在於 CVS 或 SVN 這些版本控制系統是 集中式管理的系統,而且每次提交代碼都須要聯網。因此Linux選擇了一個商業的付費的版本控制系統BitIKeeper,BitKeeper受權給Linux社區能夠無償使用這個版本控制系統。可是,Linux社區自己就牛人彙集,BitKipper公司發現,Linux社區裏有人試圖破解BitKeeper的協議,因而乎,BitKeeper與Linux開源社區合做關係終止。再後來,Linux本身花了兩週的時間使用C語言寫了一個分佈式的版本控制系統,就是Git。如今Git已經成爲了最流行的分佈式版本控制系統,在2008年GitHub上線,無數的開源項目開始遷移至GitHub。談完Git的誕生,咱們再回到主題,說一說分佈式vs集中式。node
集中式版本控制系統表明:SVN git
分佈式版本控制系統表明:Git 程序員
GitHub GitHub是一個開源的私有軟件項目的託管平臺,於2008年上線。GitHub只支持git做爲惟一的版本庫格式進行託管。github
首先,註冊GitHub帳號,註冊完畢後點擊頭像位置的settings。shell
在左側欄的Profile中 找到"SSH and GPG keys",而後你會看到"New SSH key".這個按鈕,先不要着急去點擊它,你會看到下面有一個可點擊的連接"Check out our guide to generating SSH keys or troubleshoot common SSH Problems.",點擊 generating SSH keys 而且選擇第三項: Generating a new SSH key and adding it to the ssh-agent。vim
按照上面的提示操做便可:打開GitBash ,輸入命令:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
,輸入完畢後,敲入三次回車,便可。注意 後面須要填寫你本身的郵箱。安全
運行命令ls -a ~/.ssh
。當執行完命令ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
後,會在家目錄下生成一個.ssh的目錄。運行命令ls -a ~/.ssh
後,能夠看到 在.ssh目錄下有兩個文件 「id_rsa」以及"id_rsa.pub"。這兩個東西就公鑰和私鑰,是你本地的Git倉庫與GitHub 之間的鑰匙和鎖。其中"id_rsa"就是鑰匙,而"id_rsa.pub"便是鎖。bash
接下來點擊 剛剛說過的 "New SSH key" 按鈕,Title就是你這個SSH key的名字,下面的key的內容須要將你的公鑰的內容所有複製進去,在GitBash上執行命令cat ~/.ssh/id_rsa.pub
. 而後將"ssh-rsa"至"your_email@example.com" 的所有內容複製並粘貼到key裏面。添加完畢後點擊 「Add SSH key」 按鈕。
在GitBash上輸入命令ssh -T git@github.com
.若是看到返回這樣的信息:Hi DobbyKimmy! You've successfully authenticated, but GitHub does not provide shell access.
,那麼說明配置成功。若是失敗,則在GitHub上運行rm -rf ~/.ssh
後從第一步從新開始。若是在之後,購買了新的主機,那麼就在新的PC上從新生成一個SSH key 便可,它能夠和以前的key共存。
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 init
選擇一個空目錄,GitBash Here,而後執行命令git init
。該命令的做用是初始化,執行完該命令後,在當前目錄下會建立一個名叫.git的目錄。
git status -sb
接下來在當前目錄再建立兩個個文件如:index.html,即輸入命令:
touch index.html
mkdir css
cd css
touch style.css
cd ../
複製代碼
執行命令git status -sb
後,會返回這樣的結果:
?? css/
?? index.html
複製代碼
命令git status
是用來查看當前git的狀態的,-s表明顯示總結即:summary ; -b 表示顯示分支即:branch。再建立文件之後,git 不知道該如何處理這兩個文件,因此會出現"??"這樣的符號。
git add
命令git add
能夠將建立的文件添加到暫存區,可使用:git add index.html
而後再使用 git add css/style.css
一次一次地將文件添加進暫存區,也能夠 一次性地 git add .
此命令表示一次性將當前目錄裏全部的變更都添加到暫存區。再執行完添加暫存區的命令之後 再次使用 git status -sb
能夠發現 原來紅色的"??"變成了綠色的"AA"。A的意思就是add,也是是說,你告訴git,這些變更的文件我要加入到倉庫中。
git commit -m"xxx"
git commit -m"xxx"
命令能夠將add過的內容,即:在git暫存區的內容正式提交到本地倉庫(.git就是本地倉庫)-m的含義是message 即:爲你此次提交說明信息,且-m這個參數是必須有的。除了-m參數外,還有一個參數 -a.如:使用命令git commit -am "xxx"
該命令會將本地工做區修改過還未放入git暫存區的文件一併提交上去,至關於 git add .
命令 與 git commit -m"xxx"
兩個命令一併使用,而且這個命令能夠確保全部的變更提交到本地倉庫。在運行完git commit -am "添加了一些變更"
命令後,使用命令git status -sb
後,發現文件沒有變更了,這是由於文件變更已經記錄在倉庫裏了 這時可使用命令:git log
查看歷史變更,歷史變更信息以下:
Author: DobbyKim <1175088275@qq.com>
Date: Thu Apr 4 15:36:37 2019 +0800
添加了一些文件
複製代碼
git log
上文已經使用過git log
命令了,git log
是一個很是重要的命令,能夠查看項目全部的歷史變更信息,並且能夠看到更新人的姓名 以及郵箱帳號。
文件變更
在提交至本地倉庫之後,咱們對index.html進行編輯寫入一些內容後保存,這是咱們再去看git status -b
,能夠看到 git的狀態變成了:
M index.html
複製代碼
M的顏色是紅色,其含義爲Modified,表示index.html文件被修改了,若是你想讓改動保存到倉庫中,須要git add .
將改動保存到暫存區,而後再commit 執行命令git commit -am "編輯了index.html"
。執行完add 和 commit操做後,使用命令git status -sb
發現文件沒有變更了,使用git log
:
$ git log
commit c96f1b9c58c517501d1d7544ef5ff76f01078d25 (HEAD -> master)
Author: DobbyKim <1175088275@qq.com>
Date: Thu Apr 4 16:04:48 2019 +0800
編輯了index.html
commit 138a29bcdd7b2b2a19e7d5a7f8150da5666623f9
Author: DobbyKim <1175088275@qq.com>
Date: Thu Apr 4 15:36:37 2019 +0800
添加了一些文件
複製代碼
echo "# demo" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:DobbyKimmy/demo.git
git push -u origin master
複製代碼
push an existing repository from the command line
git remote add origin git@github.com:DobbyKimmy/demo.git
git push -u origin master
複製代碼
本地倉庫上傳至GitHub只須要執行git remote和 git push 兩個命令。origin 是 git@github.com:DobbyKimmy/demo.git
這個倉庫的代號,remote命令的做用是讓本地倉庫與GitHub遠程倉庫創建聯繫。git push 則是將本地倉庫內容推送到遠程倉庫上,origin仍是遠程倉庫的代號,master表明默認的主分支。
示例:建立一個GitHub倉庫,這一次須要創建一個非空倉庫。
/node_modules/
,
/.vscode/
就能夠避免node_modules/和 .vscode/目錄上傳到GitHub上了。 License是開源許可證書,這裏面我選擇了MIT的開源許可證。建立好倉庫之後,複製連接:
git clone "複製的SSH URL"
就能夠下載倉庫了。
下載到本地倉庫之後,上傳更新很簡單,只須要前後執行:
git pull
命令的做用是讓本地同步好遠程倉庫的代碼。若是一個項目,你作出了修改,你的程序員同事也作出了修改,而且先於你一步提交了代碼,那麼你本地倉庫的代碼就不是最新版本的了。這時候上傳代碼到遠程倉庫會出現錯誤,只須要先將最新的代碼從遠程倉庫pull 下來再次上傳便可。在運用這兩個命令時,從應用場景來看,git clone 是本地沒有倉庫時,將遠程的倉庫下載下來,git pull 命令則是將遠程倉庫新commit的數據拉到本地,再與本地倉庫進行merge。git clone和 git pull 都是下載代碼。從遠程服務器克隆一個如出一轍的版本庫到本地,複製的是整個版本庫,叫作clone,這是一個從無到有的過程。git pull 是拉去遠程分支更新到本地倉庫的操做,git pull 至關於,從遠程倉庫獲取最新版本,而後再與本地分支merge的過程,這是一個從有到全面,從非同步到同步的過程。