R,Git和Github(下)
作者:Wenhu
部落格:http://bioinfostar.com/
本講第一部分,介紹git的“足夠你用”命令;本講為第二部分,介紹github的主要用途,包括版本管理、分枝管理等,以及推薦的在Rstudio中使用git的教程,部分內容改編自廖雪峰的《Git教程》。歡迎轉載,但請註明出處!
原始碼:https://github.com/mckf111/mckf111.github.io/tree/master/_posts
這可絕對是個好東西啊,日前剛被微軟收購,不知前景如何!
前面提到git的兩大特點,版本控制相信大家看到這裡,已經瞭然於胸了,而想要一窺分散式的威力,就不得不提到github這個“交友網站”啦!
分散式其實就是多個電腦上的版本庫同時更新,都是最新版本,當有一處電腦上的版本庫有改動時,通過推送,其他電腦都能接收到,這為下面講的多人協作分支管理提供了基礎,而github相當於一個始終處於開機狀態的電腦,其他所有電腦可隨時聯網與它保持更新,獲得最新版本。分散式與集中式有本質上的區別,具體解釋請參考廖雪峰:集中式VS分散式。
1. 註冊賬號:
https://github.com/ 這個毫無難點,不用多說。
2. 建立SSH金鑰。
本地的git倉庫和github上的倉庫是通過SSH(secure shell)加密傳輸的,也就是你每次的版本同步更新,都要在驗證密碼正確的前提下進行:
把email地址換成你自己常用的,執行完上述命令後,你主目錄(~)中就會有資料夾出現,裡面包含兩個檔案:和,前面是私鑰,不可洩露,而後面的是公鑰(public),這是要提交給github的。
3. 把的內容提交給github
進入目錄,提取公鑰內容。
將螢幕上的內容全部複製下來,再來到你的github主頁: - - - 取個title,”my_computer”之類的,然後把剛才複製的內容全部貼上到下面的框框中 - ,至此,你的電腦本地倉庫就和github配置好了安全連線。
github最重要的作用就是為你的本地專案提供一個雲端同步更新的倉庫,讓你走到哪都能隨意擼程式碼,無需擔心版本問題,同時,如果有多人蔘與你的專案,你的合作者也能隨時看到最新的版本狀態,和你電腦上的版本庫保持同步更新。
在你的github主頁右上角可以看到一個,點開後,點選,進入建立遠端庫的初始介面,在裡填上你的倉庫名稱,本例中應填上,其他的不用管,直接點選最下方的綠色按鈕。
當然,你可以使用網頁中的按扭來新增程式碼和檔案,但我們更多的是在本地進行編輯和新增操作。英語演講開場白命令列模式編輯一個倉庫,注意修改github的使用者名稱為自己帳號名稱(非郵箱地址,每個github有一個使用者名稱作為唯一地址,全球唯一),如下文中的:
此處將使用者名稱賦與變數,只需修改一次即可
如果你的同事對版本做了修改,並且推送到了遠端庫,但你還沒有更新,或者對github上別人的開源專案感興趣,想弄到本地來研究研究,這時你就需要把遠端庫先給克隆到本地上來。
也是一個命令全搞定:
其中,你所需要修改的就是:改為你想克隆的倉庫的建立者,改為倉庫名稱,其他不用動,注意,其中的後面沒有空格,不可習慣性的加上一個,否則報錯!如果報錯了,出了問題,請學會google和求助stackoverflow,這是必備技能,meta-knowledge!
我們要關注的是第二條:”…or push an existing repository from the command line”,把提示的命令輸入到git bash中 (注意,此時你的工作目錄必須在中):
以後,在你想要把本地的推送到遠端庫時,只需記住這一個命令:,其中是遠端庫的名字,倒裝句而則是主分支的名字。
這時,你再重新整理一下github的頁面,你會發現庫中的內容和你本地一模一樣了。
注意:第一次push的時候,會有警告出現,輸入yes即可,不用害怕~
之前我們所有的操作都是在主分支中進行,但我們會經常有個新想法,想試驗一下,寫了幾個檔案,但又不想影響主分支,或者影響同伴的工作,怎麼辦?最好的就是,從上叉出一條次分支,與互不干擾,等到自己的開發成熟了,並且與同伴溝通好了,再把次分支合併到主分支上。這是git的最大特色了!
在本例中,我們建立一個開發分支elopment:
我們再看下目前有哪些分支:
結果提示我們目前有和兩個分支,前面帶號的表明當前所處分支。
我們換到分支去看看:
切換成功,現在你可以在分支上做各種改動,但都不會絲毫影響到分支。
當你對新開發的特性很滿意之後,想要把的改動全部合併到,可以用命令,首先要先切換到分支:
如果你不想要分支了:
有木有覺得前面的指令打起來會經常敲錯字母,比如我老是將打成,能否有簡化一點的辦法呢?必須有!別名(alias)!
輸入上面指令之後,你每次就不用輸入了,只需即可,爽不爽?那就繼續多改幾個吧:
當然,你也可以指定你喜歡的別名,不一定要和我一樣。最後,再來個猛的,從廖老師那裡學到的:
你可以輸入試試看,好了,git的基本常用指令和github的簡要介紹就到這裡了,however下面稍微提一下在R中如何玩git。
以上的知識,可以讓你輕鬆管理你編輯的R程式碼,備份,版本管理。但Rstudio整合使用會有更直觀的檢視版本程式碼的修改。
相信很多Rer都是用Rstudio來寫R和執行R的,Rstudio本身也集成了git的功能,並且做成了圖形化介面,方便一些不習慣git bash的朋友,點點滑鼠,就能完成版本控制!具體的用法,由於篇幅所限,就不展開說了,有興趣的同學可以參考R packages: Git and Github http://r-pkgs.had.co.nz/git.html ,裡面的介紹非常簡潔易懂,半小時就能搞定,自主學習吧~