因爲小組工程須要使用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教程,我這是個一頁手冊,不是教程^_^