Git & Github 一頁簡明筆記

  因爲小組工程須要使用git&github的版本控制來協做,但我對其使用並不熟悉,特此寫篇一頁的筆記放在手邊,備隨時查閱。git

  相信這種一頁的簡明筆記,對你們也是有幫助的。個人筆記總結自廖雪峯的Git教程(這是個連接,點進去就好^_^)。github

  請不怎麼了解Git的同窗先去看廖雪峯的教程,好好學習,由於我這裏並不會陳列知識上的細節。ssh

 


  使用方法:經常使用命令供隨時查閱,其他內容供新手瞭解。工具


 

0. 經常使用命令一覽學習

# 配置倉庫命令(項目名:play,項目發起者的名字:icedream61,URL=git@github.com:icedream61/play.git)
git clone URL                    # 第一次克隆遠程倉庫,並關聯:遠程倉庫 -> 本地倉庫
git remote add origin URL        # 第一次推送本地倉庫,並關聯:本地倉庫 -> 遠程倉庫(遠程倉庫名習慣起爲origin,請入鄉隨俗)

# 配置分支命令(分支名:dev,遠程倉庫名:origin)
git checkout -b dev origin/dev   # 第一次克隆遠程分支,並關聯:遠程分支 -> 本地分支
git push -u origin dev           # 第一次推送本地分支,並關聯:本地分支 -> 遠程分支

# 調試命令
git remote                       # 查看遠程倉庫名(如origin)
git remote -v                    # 查看遠程倉庫庫的名字、URL地址以及本身擁有的權限(fetch & push,即 克隆 & 推送)
git branch                       # 查看本地全部分支,以及本身當前所處的分支(前面有星號)
git status                       # 查看本地工做區、暫存區狀態
git tag                          # 查看本地全部標籤
git show <tag>                   # 查看對應標籤詳細信息
git log                          # 查看全部歷史版本(詳細信息)
git log --pretty=oneline         # 查看全部歷史版本(一個版本一行信息)
git reflog                       # 查看全部歷史操做(一樣能夠加單行參數,不過貌似沒區別)

# 協同開發命令
git pull                         # 克隆所有遠程分支:遠程倉庫 -> 本地倉庫
git push origin <branchs>        # 推送本地分支:本地倉庫 -> 遠程倉庫(分支名以空格分割)
git push origin <tags>           # 推送本地標籤:本地標籤 -> 遠程標籤(標籤名以空格分割)
git push origin --tags           # 推送所有本地標籤:本地標籤 -> 遠程標籤

# 單機開發命令
git add <files>                  # 添加文件:工做區 -> 暫存區(文件名以空格分割)
git add -A                       # 添加全部文件:工做區 -> 暫存區(參數-A也能夠寫成--all)
git commit -m ".."               # 提交全部文件:暫存區 -> 本地倉庫(""中的註釋必定寫清楚~)
git checkout -- <files>          # 撤銷文件在工做區的修改:暫存區 -> 工做區
git reset HEAD <files>           # 撤銷文件的提交:本地倉庫 -> 暫存區(就是回退到當前版本^_^)
git reset HEAD                   # 撤銷全部文件的提交:本地倉庫 -> 暫存區
rm <files>                       # 刪除工做區的文件(這個按說不算git命令=_=)
git rm <files>                   # 刪除暫存區的文件
git reset --hard commit_id       # 切換到指定版本(commit_id能夠改爲HEAD、HEAD^、HEAD^^、……,即當前版本、上一版本、……)

# 單機分支管理命令
git branch dev                   # 建立dev分支
git checkout dev                 # 切換至dev分支
git checkout -b dev              # 建立並切換至dev分支
git merge my_dev                 # 將my_dev分支合併到當前所處分支中(經過git branch命令查看當前所處分支)
git branch -d my_dev             # 刪除my_dev分支

# 單機標籤管理命令
git tag <tagname>                # 爲當前版本(HEAD指向的版本)打一個標籤
git tag <tagname> commit_id      # 爲指定版本(commit_id對應版本)打一個標籤
git tag -a <tagname> -m ".."     # 爲當前版本打一個標籤,加上備註信息
git tag -d <tagnames>            # 刪除本地標籤(標籤名以空格分割)

 

1. 安裝Gitfetch

  檢查是否安裝:命令行下輸入git,能找到命令便可。ui

Mac OS X 已預置
Ubuntu sudo apt-get install git
較老的Ubuntu 或 其他Linux系統 從Git官網源碼安裝,詳見廖雪峯的Git教程
Windows 詳見廖雪峯的Git教程

  Git安裝以後,須要在命令行寫三條命令設置下:spa

git config --global user.name "icedream61" # 建議和github保持一致 git config --global user.email "icedream@sjtu.edu.cn" # 建議和github保持一致 git config --global color.ui auto

 

2. 熟悉Github命令行

  首先要去Github上面註冊一個帳號,具體細節見官網。版本控制

  登錄進去Github,隨時點左上角的小貓頭像即可以回到主頁。主頁上方搜索框能夠搜索開源項目,四張醒目的圖片是Github的官方使用教程(顯然是英文),下面左側是你所參與項目的近期動態,右側則是你所參與的項目列表。在這裏,你能夠看到 +New repository 按鈕,用來建立新項目的按鈕。

  在Github中,建立項目又叫建立項目「倉庫」(repository)。由於Github一個項目就是一個存放代碼的倉庫,你們均可以來看代碼、下載代碼……

  Github是容許你在線改代碼的,但每每在線修改並不容易(如Android代碼,顯然下載到本地用IDE纔是正道),所以每每你們都下載代碼在本地修改,改好了傳上去。下載上傳代碼有兩種方式,一種是點按鈕的,一種是命令行的,這裏只介紹命令行的。

  Github是基於一個叫Git的命令行工具的,這東西的歷史詳見廖雪峯教程開篇的Git簡介。平常使用中,Github是須要和Git協同工做的,通常流程都是這樣:

新建項目

上Github,新建一個項目倉庫,作好基本設置,寫好簡介

這樣,你和別人便均可以看到這個項目了

下載代碼

上Github,找到項目,在頁面右側下方找到clone URL,選擇傳輸方式(SSH最快),點擊按鈕複製網址

進入本地某目錄(如workspace),輸入命令:git clone URL(剛纔的網址),選擇yes

假如剛纔的項目叫play,你如今本地便會多個目錄workspace/play/,裏面是項目的所有代碼

 

3. 設置SSH KEY

  本地Git和遠程Github通訊是採用ssh協議的,所以須要設置ssh密鑰。

  若是目錄~/沒有.ssh目錄,則須要建立ssh密鑰,命令:ssh-keygen -t rsa -C "youremail@example.com"(換成你的郵箱)

  上Github,右上角點你本身的頭像,選settings;左側,選擇SSH keys進入;選Add SSH key,寫個Title,把~/.ssh/id_rsa.pub內容複製到文本框Key,點Add key。

  搞定。

  對了,給Github設置ssh密鑰,你的郵箱應該會收到郵件提醒的~

 

4. 倉庫(又稱版本庫)與遠程倉庫、版本控制、分支、標籤

  這幾個概念必須清晰,這裏只作簡述,詳見廖雪峯教程。

  在Git中,有倉庫和工做區之分。以剛纔的play項目爲例,你項目根目錄workspace/play/即是你的工做區,而倉庫則是workspace/play/.git/目錄(隱藏的)。你平時工做就在工做區工做,文件隨便改;想保存了,就利用Git的命令存入倉庫;想恢復了,就利用Git的命令從倉庫恢復,這樣工做區便成了你以前保存的樣子。

  遠程倉庫,就是像Github這樣的地方。本地的修改,上傳到遠程倉庫,能夠省得本地代碼丟失,以及方便你們協同工做、方便發佈代碼。

  Git會把每一個版本都存一份,而HEAD指針指向當前版本。你用git clone下載的就是HEAD指針所指的版本,而你能夠查看全部版本信息,能夠用HEAD指向任何以前的版本,便退回去了。

  Git有飛快的分支管理(比別的類git軟件分支管理快得多),好比play這個項目上線了,你們開始用穩定版。而大家團隊打算繼續開發,有開發UI界面的、遊戲內核的等等,那麼大家便須要各自建立本身的分支去開發,此時大家便依舊能夠正常從Github上傳和下載代碼,而因爲所處分支不一樣,大家各自的開發進度、大家的開發和上線的版本都不會互相影響。等各自開發完了,再把各個分支合併起來,造成新的版本繼續開發和發行。

  Git有標籤管理,你能夠給某個版本打上獨特的標籤,這樣之後即可以輕鬆定位到了。例如發行什麼1.0版、2.0版,開發1.1版、1.1.3版之類的,隨你喜歡。

  熟練使用這些功能,能夠極大提升開發效率。

 

5. 如何本地開發

  想要本地開發,這個你們先要理解了Git的幾個文件存儲區:(依舊以workspace/play/目錄爲例)

    (1)工做區:就是這個workspace/play/目錄,除了裏面的.git文件夾以外,都算作工做區。就是本地一個文件目錄,該怎麼開發怎麼開發就好。

    (2)暫存區:在.git中的一個地方,若是這裏沒有和本地倉庫的當前版本徹底同步,工做區就被稱爲是「不乾淨的」。

      (我沒看錯的話,廖雪峯教程中給的暫存區實際目錄應該已通過時,你們請去自行查閱資料,找到真正的暫存區所在+_+)

    (3)本地倉庫:也在.git中的一個地方……這裏面存着全部版本和全部信息,全都不會刪,能夠從這裏隨時找到任何一個版本。

    (4)遠程倉庫:在Github上,這裏不具體講解。

  而後,本身靈活使用命令就好。並且不一樣小組開發狀況不一樣,也沒法一律而論,就不贅述了,只說下三個區。

 

6. 小組協做方式

  咱們假設狀況很簡單:有一個master是發行版,一個dev是開發版,而後每一個人有本身的一個分支。

  首先是A同窗建立好項目:

    (1)在Github上建立一個項目倉庫,寫好使用方法。

    (2)找個目錄,輸入:git clone URL,把倉庫內容clone下來。

    (2+)在工做區輸入:git remote -v,確認遠程庫的名字、地址以及本身擁有的權限(fetch&push)。

    (2+)在工做區輸入:git branch,確認當前只有master分支,而且master前面有個星號(*表示當前正處於此分支下)。

    (3)寫好master分支(發行版),寫入本地倉庫,在工做區輸入:git push origin master,推送分支。

    (4)在工做區輸入:git checkout -b dev,建立並切換到dev分支。固然,依舊能夠用git branch確認。

    (5)寫好dev分支(開發版),寫入本地倉庫,在工做區輸入:git push -u origin dev,推送分支。

  而後去通知全部同窗來參與項目,而參與項目的B同窗則要這樣:

    (1)在Github上找A同窗要到push代碼的權限(不然只能clone下來,不能push修改)。

    (2)找個目錄,輸入:git clone URL,把倉庫內容clone下來。

    (3)在工做區輸入:git checkout -b dev origin/dev,建立一個dev分支並和遠程dev分支關聯起來。

  這樣一來,全部同窗便均可以在本地開發並協同工做了,具體流程就像這樣:

    (1)在工做區輸入:git checkout -b <name>,建立本身的分支。

    (2)使用:git push -u origin <name>,首次提交,在遠程倉庫建立此分支。

    (3)開發

    (3+)隨時使用:git push origin <name>,提交代碼。

    (3+)隨時使用:git pull,取得最新dev代碼。

  當本身的開發成果能夠合併到dev分支時,先保證本地dev代碼是最新的,而後:

    (1)使用:git checkout dev,切換到dev分支

    (2)使用:git merge <name>,將本身的分支合併到dev中

    (3)使用:git push origin dev,將dev分支推送到遠程倉庫

  一旦要在另外一個電腦(或目錄)中創建開發環境,則只須要:

    (1)使用:git clone URL,把倉庫內容clone下來。

    (2)在工做區輸入:git checkout -b dev origin/dev,建立一個dev分支並和遠程dev分支關聯起來。

    (3)在工做區輸入:git checkout -b lq origin/lq,建立本身的lq分支並和遠程那個本身以前寫着一半的分支關聯起來。

  一旦要在兩個電腦(或目錄)中切換着開發,則只須要:

    (1)切換目錄,使用:git pull,獲得最新代碼。

    (2)開發

    (3)使用:git push origin <name>,把本身的工做進度提交到遠程倉庫。

 

7. 結語

  再次重申,這些命令每一個的含義和使用方法,不懂的請去看廖雪峯的Git教程,我這是個一頁手冊,不是教程^_^

相關文章
相關標籤/搜索