HLT團(tuán)隊(duì)內(nèi)部GitLab使用指南

經(jīng)過(guò)老師的初步考慮篓叶,我們暫時(shí)放棄Phabricator,完全使用GitLab來(lái)管理我們的項(xiàng)目羞秤。這個(gè)決定老師綜合考慮了各方面因素缸托,而且GitLab口碑出眾,是個(gè)潮牌瘾蛋,對(duì)以后的工作也大有裨益嗦董,相信大家會(huì)喜歡上它的,每天不用兩把都不舒服瘦黑。

一、第三方評(píng)價(jià)

(一)Slant評(píng)價(jià)

??2017年Slant社區(qū)關(guān)于"最好的web自托管Git倉(cāng)庫(kù)是什么奇唤?"的討論里幸斥,Gitlab排名第一,Phabricator排名第三咬扇。也能證明甲葬,Gitlab對(duì)于我們這樣長(zhǎng)期50-100人且流動(dòng)性強(qiáng)的校園團(tuán)隊(duì)來(lái)講,是完全夠用的懈贺。

詳情可看這里.

(二)Forrester關(guān)于Gitlab CI/CD評(píng)價(jià)

??CI/CD是Gitlab的持續(xù)集成/持續(xù)交付功能经窖,我們現(xiàn)在還不需要使用,它在2017年Forrester中排名第一梭灿。


??GitLab cited as a Leader in The Forrester Wave?: Continuous Integration Tools, Q3 2017 report released today.

Forrester的評(píng)價(jià):“GitLab’s vision is to serve enterprise-scale, integrated software development teams that want to spend more time writing code and less time maintaining their tool chain.”

二画侣、我們?nèi)绾问褂?/h2>

我們的GitLab地址已經(jīng)發(fā)布到組內(nèi)的wiki上了,大家只需要記妆ざ省:

  • 外網(wǎng)的GitLab一行代碼都不存配乱,這是學(xué)生、老師和合作單位互相交流issues的平臺(tái)皮迟。
  • 內(nèi)網(wǎng)的GitLab存我們的代碼搬泥,管理我們的項(xiàng)目。

為什么不用一個(gè)GitLab主要是考慮到安全問(wèn)題伏尼,代碼放內(nèi)網(wǎng)肯定是最安全的忿檩。

基礎(chǔ)使用

如果你有基礎(chǔ),首先在Gitlab新建一個(gè)項(xiàng)目爆阶,然后看看項(xiàng)目下面一個(gè)簡(jiǎn)單的tutorial就可以了:
命令行指令

Git 全局設(shè)置

git config --global user.name "xxx"
git config --global user.email "xxx@gmail.com"

創(chuàng)建新版本庫(kù)

git clone http://192.168.131.172:9999/xxx/projectname
cd projectname
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

已存在的文件夾

cd existing_folder
git init
git remote add origin http://192.168.131.172:9999/xxx/projectname
git add .
git commit -m "Initial commit"
git push -u origin master

已存在的 Git 版本庫(kù)

cd existing_repo
git remote add origin http://192.168.131.172:9999/xxx/projectname
git push -u origin --all
git push -u origin --tags

但是光看這些還是不太夠燥透,我們舉點(diǎn)實(shí)際的例子講解下沙咏,以后忘了可以再查閱。

場(chǎng)景1. 已經(jīng)有一個(gè)正在做的項(xiàng)目或者做完的項(xiàng)目兽掰,如何使用git并添加進(jìn)遠(yuǎn)程倉(cāng)庫(kù)GitLab中芭碍?

首先假設(shè)我們有個(gè)工程ch02(你可以找一個(gè)自己的項(xiàng)目跟著做)如下:

我們看左邊的sideBar里面的工程目錄,文件有:

  • digits文件夾:數(shù)據(jù)文件
  • datingTestSet.txt:數(shù)據(jù)文件
  • datingTestSet2.txt:數(shù)據(jù)文件
  • kNN.py:代碼文件
  • test.py:代碼文件

1.1在工程中使用git版本控制

我們進(jìn)入已有的工程目錄下:執(zhí)行命令:

git init

這樣我們就在項(xiàng)目中使用上了git孽尽,并且默認(rèn)進(jìn)入了master分支窖壕。

現(xiàn)在我們使用命令

git status

查看項(xiàng)目的追蹤狀態(tài),這就像我們平時(shí)使用ls命令一樣杉女。

可以看到git提示我們瞻讽,我們有一些文件沒(méi)有追蹤,它們是我們已經(jīng)提到的:

  • digits文件夾:數(shù)據(jù)文件
  • datingTestSet.txt:數(shù)據(jù)文件
  • datingTestSet2.txt:數(shù)據(jù)文件
  • kNN.py:代碼文件
  • test.py:代碼文件

1.2 忽略大的數(shù)據(jù)文件

其中有一些東西是我們不需要追蹤的熏挎,甚至不能追蹤的速勇,比如數(shù)據(jù)文件,原因有二:

  1. 對(duì)項(xiàng)目沒(méi)有意義坎拐,且傳到GitLab上會(huì)有泄漏數(shù)據(jù)的風(fēng)險(xiǎn)烦磁。
  2. 因?yàn)樗麄兒艽螅瑒?dòng)輒幾G哼勇,追蹤他們會(huì)使git操作變得巨慢都伪。

所以我們需要了解git中的.gitignore文件,拆開(kāi)看就是git ignore,很直白积担,他可以告訴git陨晶,哪些文件我們忽略不追蹤。
我們直接用編輯器編輯文件(看你個(gè)人喜好)帝璧,這里用的vim編輯如下:

可以看到語(yǔ)法非常簡(jiǎn)單先誉,即忽略所有數(shù)據(jù)文件:

  • digits文件夾
  • datingTestSet.txt
  • datingTestSet2.txt

如果你有其他大型項(xiàng)目開(kāi)發(fā),這里有模板可以參考的烁,但是我們做NLP的應(yīng)該暫時(shí)可以不用管褐耳,暫時(shí)還用不上。

現(xiàn)在我們?cè)俅问褂?code>git status查看:

就發(fā)現(xiàn)我們成功的忽略掉了數(shù)據(jù)文件撮躁,只剩下代碼文件了漱病。

1.3 把本地倉(cāng)庫(kù)同遠(yuǎn)程GitLab倉(cāng)庫(kù)關(guān)聯(lián)

首先我們要進(jìn)入GitLab創(chuàng)建一個(gè)空倉(cāng)庫(kù),用于接收這個(gè)本地項(xiàng)目把曼。倉(cāng)庫(kù)的項(xiàng)目名稱最好和本地一樣杨帽,免得自己混淆。


權(quán)限說(shuō)明:

  • Private: 私人倉(cāng)庫(kù)嗤军,項(xiàng)目只有自己能看到注盈,其他人都不能看到,包括系統(tǒng)管理員叙赚。
  • Internal: 項(xiàng)目只有登錄賬戶可看老客。
  • Public: 項(xiàng)目即使是游客都能看到僚饭。

創(chuàng)建好后可以看到這個(gè)界面:


我們復(fù)制好git倉(cāng)庫(kù)地址,在我這邊是http://192.168.131.172:9999/joezhow/ch02.git胧砰,然后進(jìn)入命令行鳍鸵,輸入:

git add . && git status

把代碼提交到git的緩存區(qū),然后輸入:

git commit -m "保存已經(jīng)完成的kNN代碼"

把代碼提交到git的本地倉(cāng)庫(kù)尉间。


現(xiàn)在關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)偿乖,輸入:

git remote add origin http://192.168.131.172:9999/joezhow/ch02.git

然后我們就把本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)建立起了一條關(guān)聯(lián)渠道,git remote是和git遠(yuǎn)程操作相關(guān)的命令哲嘲,add origin是指把倉(cāng)庫(kù)地址http://192.168.131.172:9999/joezhow/ch02.git贪薪,以別名origin保存下來(lái),方便我們的push操作眠副,不然每次push都寫(xiě)這么大串地址十分不方便画切,我們可以通過(guò)

git remote -v

命令查看詳細(xì)內(nèi)容


關(guān)于這個(gè)fetch我們后文會(huì)講,首先我們講push囱怕。

現(xiàn)在我們已經(jīng)有了通道霍弹,我們通過(guò)命令

git push -u origin master

這個(gè)命令會(huì)把master分支傳到遠(yuǎn)程倉(cāng)庫(kù)origin的master分支上,-u參數(shù)可加可不加娃弓,加了會(huì)更好庞萍,為什么我現(xiàn)在也說(shuō)不清楚。

然后它可能會(huì)叫你輸入你Gitlab的賬號(hào)和密碼忘闻,輸入過(guò)后,代碼即push到遠(yuǎn)程倉(cāng)庫(kù)了恋博。


場(chǎng)景2. 項(xiàng)目被師兄添加了高端新代碼齐佳,我怎么更新?

比如我們的ch02項(xiàng)目中债沮,我今天的工作就是做了kNN炼吴,像上圖那樣就已經(jīng)做完了,然后師兄又做了另一個(gè)更加高效的kNN實(shí)現(xiàn)代碼kNN1.py疫衩,并且上傳到遠(yuǎn)程倉(cāng)庫(kù)硅蹦,如下圖:


而我們本地倉(cāng)庫(kù)沒(méi)有kNN1.py文件,所以我們需要把本地倉(cāng)庫(kù)ch02項(xiàng)目的代碼更新闷煤,我們獲得遠(yuǎn)程倉(cāng)庫(kù)的最新版本:

git fetch origin master

這句話的意思是從遠(yuǎn)程的origin倉(cāng)庫(kù)的master分支下載代碼到本地的origin master童芹,這條語(yǔ)句是很安全的羽峰,可以隨意使用篷牌,因?yàn)樗粫?huì)覆蓋掉本地倉(cāng)庫(kù)的代碼。

接下來(lái)我們對(duì)比本地master和origin master代碼有哪些不同:

git log -p master.. origin/master

這里按行解釋下:

    1. commitID
    1. 作者
    1. 提交時(shí)間
    1. commit的內(nèi)容
    1. 添加了一個(gè)文件kNN1.py
    1. 添加的內(nèi)容

然后我們需要這份高效的代碼杂抽,使用命令:

git merge origin/master

即可合并到本地倉(cāng)庫(kù)近顷。

場(chǎng)景3.多人協(xié)作中生音,學(xué)弟應(yīng)該如何正確push宁否,并給Mentor發(fā)起Merge?

多人協(xié)作中缀遍,我們要規(guī)范在dev分支開(kāi)發(fā)慕匠,主master分支只接受穩(wěn)定版本,因此域醇,在Gitlab的項(xiàng)目權(quán)限中僅有少數(shù)的mentor可以對(duì)代碼的master分支進(jìn)行merge台谊,即有權(quán)限更新master分支代碼。這樣可以保證新人不會(huì)隨便把質(zhì)量不好的代碼push或者merge到主分支上歹苦。所以我們實(shí)際開(kāi)發(fā)使用dev開(kāi)發(fā)青伤,mentor也應(yīng)該如此。

這里假設(shè)學(xué)弟寫(xiě)了個(gè)比kNN1更高效kNN2殴瘦,add commit后狠角,輸入以下命令,把dev分支push到origin的dev分支上:

git push -u origin dev

師弟需要進(jìn)入Gitlab蚪腋,進(jìn)入dev分支中會(huì)發(fā)現(xiàn)項(xiàng)目比master分支多一個(gè)kNN2.py文件丰歌,最重要的是多出了一個(gè)Create merge request的按鈕:

這里要填寫(xiě)一些信息:


最重要的是這里的指派,把這個(gè)request指派給哪個(gè)mentor屉凯,然后提交立帖,接下來(lái)就是mentor的code review任務(wù)。

師兄就會(huì)有一個(gè)合并請(qǐng)求和待辦事項(xiàng):


我們可以查看查看變更悠砚,直接在Gitlab的網(wǎng)頁(yè)在完成merge晓勇,也可以使用Check out branch:

在本地命令行完成變更。

場(chǎng)景4.在項(xiàng)目中添加member

我們找到項(xiàng)目的設(shè)置->成員:



在里面就可以添加新成員了:


總結(jié)

這樣一個(gè)簡(jiǎn)單的團(tuán)隊(duì)workflow就講完了灌旧,同學(xué)們不會(huì)的問(wèn)題绑咱,請(qǐng)?jiān)谕饩W(wǎng)的gitlab的gitlab-question/issues里留下問(wèn)題,后續(xù)可以更新枢泰。

結(jié)語(yǔ):蘇州大學(xué)HLT團(tuán)隊(duì)(人類語(yǔ)言技術(shù)研究所描融,所長(zhǎng)張民),是從新加坡回國(guó)的年輕團(tuán)隊(duì)衡蚂,所長(zhǎng)張民擔(dān)任蘇州大學(xué)副院長(zhǎng)窿克,國(guó)家杰出青年學(xué)者,本團(tuán)隊(duì)長(zhǎng)期招收有夢(mèng)想的優(yōu)質(zhì)本科畢業(yè)生毛甲。主攻方向?yàn)槿斯ぶ悄茏钪匾囊鍺LP技術(shù)年叮,組內(nèi)有如知識(shí)圖譜、語(yǔ)音翻譯玻募、句法分析等各種方向谋右,畢業(yè)大半去往BAT或感興趣深造讀博,歡迎感興趣的同學(xué)聯(lián)系報(bào)考补箍。詳情請(qǐng)看:蘇州大學(xué)人類語(yǔ)言技術(shù)研究所

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末改执,一起剝皮案震驚了整個(gè)濱河市啸蜜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辈挂,老刑警劉巖衬横,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異终蒂,居然都是意外死亡蜂林,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)拇泣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)噪叙,“玉大人,你說(shuō)我怎么就攤上這事霉翔≌隼伲” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵债朵,是天一觀的道長(zhǎng)子眶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)序芦,這世上最難降的妖魔是什么臭杰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮谚中,結(jié)果婚禮上渴杆,老公的妹妹穿的比我還像新娘。我一直安慰自己宪塔,他們只是感情好将塑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蝌麸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艾疟。 梳的紋絲不亂的頭發(fā)上来吩,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音蔽莱,去河邊找鬼弟疆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盗冷,可吹牛的內(nèi)容都是我干的怠苔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼仪糖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柑司!你這毒婦竟也來(lái)了迫肖?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤攒驰,失蹤者是張志新(化名)和其女友劉穎蟆湖,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體玻粪,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隅津,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了劲室。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伦仍。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖很洋,靈堂內(nèi)的尸體忽然破棺而出充蓝,到底是詐尸還是另有隱情,我是刑警寧澤蹲缠,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布棺克,位于F島的核電站,受9級(jí)特大地震影響线定,放射性物質(zhì)發(fā)生泄漏娜谊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一斤讥、第九天 我趴在偏房一處隱蔽的房頂上張望纱皆。 院中可真熱鬧,春花似錦芭商、人聲如沸派草。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)近迁。三九已至,卻和暖如春簸州,著一層夾襖步出監(jiān)牢的瞬間鉴竭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工岸浑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搏存,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓矢洲,卻偏偏與公主長(zhǎng)得像璧眠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git责静,從https:/...
    落魂灬閱讀 12,649評(píng)論 4 54
  • -有時(shí)候會(huì)不會(huì)發(fā)現(xiàn)袁滥,其實(shí)別人根本沒(méi)有那樣子想你。 我最近在參加一個(gè)寫(xiě)作練習(xí)小組泰演,規(guī)定每人每天堅(jiān)持寫(xiě)500字呻拌,開(kāi)三次...
    葉倩倩閱讀 1,649評(píng)論 0 1
  • 第三節(jié).對(duì)手在能干什么 第三節(jié).對(duì)手在能干什么。 你的游戲?qū)κ质钦l(shuí)睦焕。是主力藐握。是莊家。是游資...
    精彩飛神閱讀 873評(píng)論 2 5
  • 我是一切的根源垃喊?第一次看到這句話猾普,徹底懵了。 這是幾個(gè)意思氨久铡初家?身邊不順利的事情多了去了,無(wú)一不牽扯到方方面面的因素...
    銀子姐閱讀 486評(píng)論 4 1