使用GitHub構(gòu)建自己的遠(yuǎn)程代碼庫

?背景


存在這樣一種狀況输钩,工作的時(shí)候有一個(gè)模塊因?yàn)樗悸纷枞荒芮斑M(jìn)床玻,周末在家忽然有了idea翼虫,但是手頭沒有模塊Code屑柔,只能動(dòng)筆記下思路,周一上班Code實(shí)現(xiàn)珍剑。這種狀況對(duì)于Coder而言比較頻繁掸宛,相比用筆寫下思路,Coder們更希望可以直接在代碼中調(diào)試解決招拙,這樣在遇到新的問題唧瘾,才有實(shí)際的依據(jù)繼續(xù)深入,畢竟多數(shù)的Idea沒有Code的支持迫像,很難言其靠譜性劈愚。

當(dāng)然,你也可以常備U盤闻妓,時(shí)時(shí)更新菌羽,如果考慮保密等問題,確實(shí)應(yīng)該由缆,如果只是純技術(shù)注祖,其實(shí)有更好的解決辦法——代碼版本管理工具。

這類工具均唉,PI君用過SVN和GIt是晨,至于TFS,聞過大名舔箭,限于單位性質(zhì)罩缴,不曾采用。如果只是構(gòu)建自己的遠(yuǎn)程代碼庫层扶,考慮到Github的免費(fèi)空間箫章,PI君推薦使用Git,簡單易用镜会。

git

總體思路


設(shè)計(jì)思路

需求描述:

→在家或者在單位都可以獲取某個(gè)項(xiàng)目或模塊的最新Code檬寂;

→可以將本地所做的修改上傳至Github遠(yuǎn)程倉庫;

→可以控制版本的發(fā)布戳表,對(duì)發(fā)布版本有獨(dú)立的路徑進(jìn)行訪問桶至;

→可以在不影響當(dāng)前功能的基礎(chǔ)上獨(dú)立開發(fā)新功能昼伴,并允許最終合并至Develop版本;

→可以追蹤歷史版本镣屹,對(duì)每一個(gè)歷史版本有文檔記錄圃郊。

OK,就PI君自己野瘦,以上所列基本滿足需求了描沟。當(dāng)然,Git本身鞭光,在滿足以上需求的同時(shí)吏廉,還具備其他的功能,感興趣的看官們自行挖掘吧~別忘了有好的分享也知會(huì)下PI君~~

實(shí)施過程


下載安裝git

首先惰许,當(dāng)然是下載安裝Git啦

Git官網(wǎng)下載地址:https://git-scm.com/downloads

配置github遠(yuǎn)程倉庫

其次席覆,配置下Github遠(yuǎn)程倉庫,過程不細(xì)說汹买,申請(qǐng)github賬號(hào)->新建Repository佩伤,最后結(jié)果如下圖:

new Repository

一般的有關(guān)github的使用說明,到此就結(jié)束了晦毙,但是就PI君篇頭所提的需求生巡,目前還不滿足。還需要針對(duì)這個(gè)空的github的Repository做一些配置见妒。

配置github的Repository

新建的Repository默認(rèn)master為其主干分支孤荣,我們要做的是另建一個(gè)分支Develop,如下圖:

新建Develop分支

這個(gè)分支用來做什么的呢须揣?且看我們的需求:

可以控制版本的發(fā)布盐股,對(duì)發(fā)布版本有獨(dú)立的路徑進(jìn)行訪問;

當(dāng)前的Repository有兩個(gè)分支:master和Develop耻卡,這樣疯汁,PI君可以把本地新增代碼只上傳到Develop分支,一旦完成一個(gè)版本卵酪,就可以將該版本合并至master幌蚊,如果不需要發(fā)布新版本,那么所有的代碼更新只在Develop分支上發(fā)生溃卡,這樣溢豆,PI君就可以控制版本的發(fā)布啦。

配置本地Git

首先塑煎,先安裝git沫换,window版本有安裝向?qū)С粢希宦穘ext即可最铁,Linux版本也有很多教程讯赏,這里不再贅述。

選一個(gè)路徑冷尉,新建文件夾漱挎,取名“TestGit”,在VS里新建一個(gè)用于測試Git的工程項(xiàng)目雀哨,路徑配置在剛才新建的文件夾磕谅,(項(xiàng)目類型whatever,啥項(xiàng)目都行)雾棺。OK膊夹,在TestGit文件夾下右鍵選擇“Git Bash Here”,彈出Git bash命令行捌浩,如下圖:

gitbash

首先放刨,需要生成本地SSH-KEY,并添加至Github中尸饺,這是一個(gè)通行證进统,gitgub必須知道是誰在某個(gè)特定賬戶推送更新,如果沒有key的限制浪听,大家都可以更改PI君的github代碼螟碎,不可想象~,很簡單迹栓,在gitBash中輸入:

ssh-keygen -t rsa -C "你的github注冊(cè)郵箱"

這樣會(huì)默認(rèn)在本地用戶文件夾下產(chǎn)生兩個(gè)文件:

SSH-KEY文件

這個(gè)是你本地的SSH密鑰掉分,如果想在本地更新那個(gè)github代碼倉庫,必須把你本地的publickey添加至github賬戶的SSH-KEY列表中迈螟,拿PI君自己舉例:

首先叉抡,使用txt打開id_rsa.pub文件,復(fù)制里面的全部內(nèi)容答毫,然后打開github賬戶設(shè)置褥民,見下圖:

github-Setting

找到SSH Keys,點(diǎn)開洗搂,然后點(diǎn)擊【New SSH key】消返,如下圖:

New SSH key

起個(gè)名字給Title,在Key中粘貼復(fù)制的內(nèi)容耘拇,點(diǎn)擊Add SSH key撵颊,添加完成。

現(xiàn)在本地就可以向github遠(yuǎn)程倉庫推送更新了惫叛。

本地git使用策略

在配置完遠(yuǎn)程倉庫和本地git連接后倡勇,剩下的就是怎么使用遠(yuǎn)程倉庫以及本地git來實(shí)現(xiàn)剩下的需求啦,我們回顧一下一開始的需求:

→在家或者在單位都可以獲取某個(gè)項(xiàng)目或模塊的最新Code嘉涌;

→可以將本地所做的修改上傳至Github遠(yuǎn)程倉庫妻熊;

→可以控制版本的發(fā)布夸浅,對(duì)發(fā)布版本有獨(dú)立的路徑進(jìn)行訪問;

→可以在不影響當(dāng)前功能的基礎(chǔ)上獨(dú)立開發(fā)新功能扔役,并允許最終合并至Develop版本帆喇;

→可以追蹤歷史版本,對(duì)每一個(gè)歷史版本有文檔記錄亿胸。

OK坯钦,這些需求的最終實(shí)現(xiàn),需要git的本地使用策略來完成~

首先侈玄,初始化本地倉庫(可以在新建的空文件夾或已有文件的文件夾婉刀,反正不限制):

$git init

然后,添加遠(yuǎn)程主機(jī)(github倉庫):

$git remote add <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程主機(jī)地址>

例如:

$git remote add github_footballgame https://github.com/fei090620/FootballGame.git

將遠(yuǎn)程倉庫復(fù)制到本地(如果遠(yuǎn)程倉庫是新建的序仙,那這一步可以省了):

$git clone <遠(yuǎn)程倉庫地址>

例如:

$git clone https://github.com/fei090620/FootballGame.git

此時(shí)路星,會(huì)在TestGit文件夾下生成一個(gè)FootballGame的新文件夾,里面包含了FootballGame這個(gè)Repository里所有數(shù)據(jù)诱桂。

推送本地倉庫的內(nèi)容至遠(yuǎn)程

$git push -u origin master

加上參數(shù)“-u”洋丐,Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來挥等,在以后的推送或者拉取時(shí)就可以簡化命令友绝。

推送成功后,可以立刻在GitHub頁面中看到遠(yuǎn)程庫的內(nèi)容已經(jīng)和本地一模一樣肝劲。如果出現(xiàn)SSH警告迁客,可以無視。后續(xù)所有本地倉庫在master上的更新都可以push至github倉庫下的master分支啦~~~

遠(yuǎn)程master辞槐,也就是origin/master和本地的master分支默認(rèn)對(duì)應(yīng)掷漱,推送的時(shí)候,如果不加更改榄檬,也是本地master和origin/master分支關(guān)聯(lián)卜范,如果,我們想推送Develop分支怎么辦鹿榜?

畢竟海雪,考慮控制發(fā)布發(fā)布的需求,master分支中的版本是Develop版本更新到一定程度的時(shí)候?qū)ν獍l(fā)布至master舱殿,所以奥裸,頻繁被推送的遠(yuǎn)程分支應(yīng)該是origin/Develop,而不是origin/master沪袭。要達(dá)到這個(gè)目的湾宙,必須做一些修改:

首先,在本地git倉庫新建一個(gè)計(jì)劃和origin/Develop分支關(guān)聯(lián)的分支,這是除master主分支以外的另一個(gè)比較重要的分支侠鳄,可以自定義取名嗡害,方便理解,取相同的名字“Develop”畦攘。

$git branch Develop ?//新建Develop分支

$git checkout Develop ?//切換至Develop分支

#當(dāng)然也可以一步到位

$git checkout -b Develop

制定本地Develop分支與遠(yuǎn)程origin/Develop分支連接:

$git branch --set -upstream Develop origion/Develop

然后,先pull十电,然后合并無沖突后知押,再push,這是原則鹃骂,奉勸看官們不要違背台盯,至于為什么,用過svn的應(yīng)該能理解畏线,PI君就不廢話了静盅。

$git pull

$git push origin/Develop

這樣,本地Develop就可以推送至遠(yuǎn)程倉庫中的Develop分支寝殴。

那如果蒿叠,想發(fā)布了呢,簡單蚣常,現(xiàn)在本地倉庫里合并至master分支市咽,然后推送至origin/master即可,操作如下:

$git status //檢查下當(dāng)前工作空間的更新情況

$git checkout master //切換至master

$git merge Develop //合并Develop至master

$git pull //獲取origin上的最新版本

$git push origin master //推送當(dāng)前分支至origin/master分支

OK抵蚊,到此施绎,需求已經(jīng)基本滿足了,那如果本地master分支或者Develop分支需要多個(gè)人協(xié)作贞绳,怎么辦呢谷醉?這不是本片內(nèi)容的范疇,如果有疑惑后續(xù)發(fā)文再聊啦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冈闭,一起剝皮案震驚了整個(gè)濱河市俱尼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萎攒,老刑警劉巖号显,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異躺酒,居然都是意外死亡押蚤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門羹应,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揽碘,“玉大人,你說我怎么就攤上這事■ù蹋” “怎么了劫灶?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長掖桦。 經(jīng)常有香客問我本昏,道長,這世上最難降的妖魔是什么枪汪? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任涌穆,我火速辦了婚禮,結(jié)果婚禮上雀久,老公的妹妹穿的比我還像新娘宿稀。我一直安慰自己,他們只是感情好赖捌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布祝沸。 她就那樣靜靜地躺著,像睡著了一般越庇。 火紅的嫁衣襯著肌膚如雪罩锐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天卤唉,我揣著相機(jī)與錄音唯欣,去河邊找鬼。 笑死搬味,一個(gè)胖子當(dāng)著我的面吹牛境氢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碰纬,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼萍聊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悦析?” 一聲冷哼從身側(cè)響起寿桨,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎强戴,沒想到半個(gè)月后亭螟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骑歹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年预烙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片道媚。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扁掸,死狀恐怖翘县,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谴分,我是刑警寧澤锈麸,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站牺蹄,受9級(jí)特大地震影響忘伞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沙兰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一氓奈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧僧凰,春花似錦、人聲如沸熟丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽执庐。三九已至锻离,卻和暖如春渤滞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呀闻。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留潜慎,地道東北人捡多。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像铐炫,于是被迫代替她去往敵國和親垒手。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容