Git,GitHub入門

1:Git 及GitHub入門css

1:什麼是Git? 什麼是GitHub?

  • Git Git 是一個開源的分佈式版本控制系統,能夠有效並高速地處理從很小到很是大的項目版本管理。 說到Git,首先要明白什麼是版本控制及分佈式管理系統。
  1. 版本控制 版本控制是指在多人協做的軟件開發過程中,對各類代碼,配置文件及說明文檔變動的管理。最主要的功能就是追蹤文件的變動。它會將何時,什麼人更改了文件的什麼內容等信息忠實地記錄下來。例如:
    html

    image.png

  2. 分佈式管理 提到分佈式管理,不得不說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

    image.png

    集中式版本控制系統以SVN爲表明。版本庫集中存放在中央服務器。多人協做的項目中,每一臺電腦都要先從中央服務器取得最新的版本,再添加或修改好代碼之後, 再將本身的代碼推送給中央服務器。一旦中央服務器出現了故障,或者崩潰,雖然程序員我的的電腦上有從中央服務器上拉下來的代碼,可是中央服務器上有着項目全部的歷史版本,想要修復以往的歷史版本是很是困難的。

  • 分佈式版本控制系統表明:Git 程序員

    image.png

    分佈式版本控制系統則沒有中央服務器這樣的概念,每一個人的電腦都是一個完整的版本庫,固然,分佈式版本控制系統一般也存在一臺充當中央服務器的電腦,方便程序員更新以及推送最新版本。即便這個所謂的"中央服務器" 掛掉,每一個人的電腦上都保留着歷史版本的信息。這樣來看,分佈式版本控制比集中式版本控制的安全性要高。固然Git相比於SVN的優點遠遠不止這些,詳見:Git與SVN區別

  • GitHub GitHub是一個開源的私有軟件項目的託管平臺,於2008年上線。GitHub只支持git做爲惟一的版本庫格式進行託管。github

2:GitHub的配置工做

  1. 首先,註冊GitHub帳號,註冊完畢後點擊頭像位置的settings。shell

  2. 在左側欄的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-agentvim

  3. 按照上面的提示操做便可:打開GitBash ,輸入命令:ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ,輸入完畢後,敲入三次回車,便可。注意 後面須要填寫你本身的郵箱。安全

  4. 運行命令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

  5. 接下來點擊 剛剛說過的 "New SSH key" 按鈕,Title就是你這個SSH key的名字,下面的key的內容須要將你的公鑰的內容所有複製進去,在GitBash上執行命令cat ~/.ssh/id_rsa.pub. 而後將"ssh-rsa"至"your_email@example.com" 的所有內容複製並粘貼到key裏面。添加完畢後點擊 「Add SSH key」 按鈕。

  6. 在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共存。

3: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之後,才能夠保證之後不會報錯。

4:Git的本地使用

  1. git init 選擇一個空目錄,GitBash Here,而後執行命令git init。該命令的做用是初始化,執行完該命令後,在當前目錄下會建立一個名叫.git的目錄。

  2. 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 不知道該如何處理這兩個文件,因此會出現"??"這樣的符號。

  3. git add

    命令git add 能夠將建立的文件添加到暫存區,可使用:git add index.html 而後再使用 git add css/style.css 一次一次地將文件添加進暫存區,也能夠 一次性地 git add . 此命令表示一次性將當前目錄裏全部的變更都添加到暫存區。再執行完添加暫存區的命令之後 再次使用 git status -sb 能夠發現 原來紅色的"??"變成了綠色的"AA"。A的意思就是add,也是是說,你告訴git,這些變更的文件我要加入到倉庫中。

  4. 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
        添加了一些文件
    複製代碼
  5. git log

    上文已經使用過git log 命令了,git log是一個很是重要的命令,能夠查看項目全部的歷史變更信息,並且能夠看到更新人的姓名 以及郵箱帳號。

  6. 文件變更

    在提交至本地倉庫之後,咱們對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
    
        添加了一些文件
    
    複製代碼

5:Git 本地倉庫上傳到GitHub

  1. 首先在GitHub上新建一個空倉庫:
    image.png

    只須要設置倉庫的名字,其餘的一律不填,由於若是填寫了就不是空倉庫了。
  2. 按照GitHub 上的指示進行操做 首先要選擇SSH路徑。創建好空倉庫之後GitHub會在下面出現命令提示。 create a new repository on the command line
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表明默認的主分支。

6:下載GitHub上的倉庫至本地

示例:建立一個GitHub倉庫,這一次須要創建一個非空倉庫。

image.png

respository name仍是倉庫的名字,description 爲倉庫的說明信息,勾選Initialize this repository with a README 是用於在建立倉庫時初始化README.md文件。其中.gitignore文件的做用是忽略Git中不想提交的文件,在.gitignore文件中能夠進行一些配置,來避免某些文件的提交,好比:寫上 /node_modules//.vscode/就能夠避免node_modules/和 .vscode/目錄上傳到GitHub上了。 License是開源許可證書,這裏面我選擇了MIT的開源許可證。建立好倉庫之後,複製連接:

進入到你想clone的目錄下,在GitBash上輸入: git clone "複製的SSH URL"就能夠下載倉庫了。

7:上傳更新

下載到本地倉庫之後,上傳更新很簡單,只須要前後執行:

  1. git add.
  2. git commit -am "xxx"
  3. git pull 其中 git pull命令的做用是讓本地同步好遠程倉庫的代碼。若是一個項目,你作出了修改,你的程序員同事也作出了修改,而且先於你一步提交了代碼,那麼你本地倉庫的代碼就不是最新版本的了。這時候上傳代碼到遠程倉庫會出現錯誤,只須要先將最新的代碼從遠程倉庫pull 下來再次上傳便可。
  4. git push

8:git pull 和 git clone的區別

在運用這兩個命令時,從應用場景來看,git clone 是本地沒有倉庫時,將遠程的倉庫下載下來,git pull 命令則是將遠程倉庫新commit的數據拉到本地,再與本地倉庫進行merge。git clone和 git pull 都是下載代碼。從遠程服務器克隆一個如出一轍的版本庫到本地,複製的是整個版本庫,叫作clone,這是一個從無到有的過程。git pull 是拉去遠程分支更新到本地倉庫的操做,git pull 至關於,從遠程倉庫獲取最新版本,而後再與本地分支merge的過程,這是一個從有到全面,從非同步到同步的過程。

相關文章
相關標籤/搜索