国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

VSwithGit

2019-11-14 15:52:54
字體:
供稿:網(wǎng)友

認(rèn)識(shí)Git

Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。相對(duì)于分布式版本控制系統(tǒng),也有集中式版本控制系統(tǒng),比如TFS。

集中式版本控制系統(tǒng),版本庫是集中存放在中央服務(wù)器的,而干活的時(shí)候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務(wù)器。中央服務(wù)器就好比是一個(gè)圖書館,你要改一本書,必須先從圖書館借出來,然后回到家自己改,改完了,再放回圖書館。

集中式版本控制系統(tǒng)最大的問題是必須聯(lián)網(wǎng)才能工作,而且,如果中央服務(wù)器出問題,所有人沒法工作了。

而分布式版本控制系統(tǒng)就不存在這樣的問題,因?yàn)槊總€(gè)人的電腦中都有一個(gè)完整的版本庫,在同步之前,所有操作都可以在本地倉庫中完成。

集中式版本控制系統(tǒng):

clipboard[122]

分布式版本控制系統(tǒng):

clipboard[123]

分布式版本控制系統(tǒng)的本地操作流程圖:

clipboard[124]

工作目錄,暫存區(qū)域和本地倉庫這幾個(gè)概念非常重要。

工作目錄:即解決方案所在目錄。

暫存區(qū)域:已添加,但還未提交到本地倉庫。

本地倉庫:已提交,相對(duì)于遠(yuǎn)端倉庫而言的本地版本。

測(cè)試環(huán)境

  • vs2015
  • GitLab
  • 取消IE代理并且關(guān)閉fiddler

添加到遠(yuǎn)端倉庫

基于已存在的項(xiàng)目,將它添加到遠(yuǎn)端倉庫(GitLab)中。

比如,現(xiàn)在我要將本地項(xiàng)目HelloWebAPI添加到GitLab中,要進(jìn)行以下操作。

1,解決方案上右鍵,選擇將解決方案添加到源代碼管理菜單,打開選擇源代碼管理窗口。或者打開菜單"文件/添加到源代碼管理"也可以打開選擇源代碼管理窗口,如下圖

clipboard[125]

clipboard[126]

2,選擇Git,確定,在打開的更改窗口中,寫上備注點(diǎn)擊提交,此時(shí)項(xiàng)目已添加到本地倉庫中了,但還沒有發(fā)布到遠(yuǎn)端倉庫。

clipboard[127]

clipboard[128]

clipboard[129]

3,在發(fā)布到遠(yuǎn)端倉庫之前,必須在GitLab上先建立一個(gè)遠(yuǎn)端倉庫。

clipboard[130]

點(diǎn)擊Create PRoject按鈕,即創(chuàng)建了一個(gè)遠(yuǎn)端倉庫。

clipboard[131]

創(chuàng)建遠(yuǎn)端倉庫時(shí)的可見性要說明一下:

Private:是需要顯式授權(quán)(加入到項(xiàng)目成員中)才可以clone項(xiàng)目。

Internal:只要擁有GitLab帳號(hào)(或者域帳號(hào))的開發(fā)人員默認(rèn)都可以clone項(xiàng)目。

Public:不需要任何授權(quán)就可以clone項(xiàng)目。

綜合以上,我們?cè)趧?chuàng)建遠(yuǎn)端倉庫的時(shí)候,最好將可見性設(shè)為Internal,其它項(xiàng)目成員都可以clone項(xiàng)目,免去了一個(gè)一個(gè)添加的麻煩。

復(fù)制地址,下面會(huì)用到。

clipboard[132]

4,發(fā)布到遠(yuǎn)端倉庫。

clipboard[133]

點(diǎn)擊發(fā)布按鈕,可以看到已經(jīng)發(fā)布成功了。

clipboard[134]

此時(shí)進(jìn)到GitLab項(xiàng)目的主頁刷新頁面,可以看到提交的記錄,如下圖。

clipboard[135]


從遠(yuǎn)端倉庫克隆

添加到遠(yuǎn)端倉庫是基于本地已存在項(xiàng)目,而從遠(yuǎn)端倉庫克隆是項(xiàng)目在本地不存在,需要從遠(yuǎn)端倉庫克隆一份到本地的情形,操作步驟如下。

1,Git全局設(shè)置,可以設(shè)置用戶名,email和存儲(chǔ)庫位置。用戶名和email會(huì)顯示在你的提交記錄中,存儲(chǔ)庫位置便于統(tǒng)一遠(yuǎn)端倉庫克隆時(shí)的路徑,如下圖。

clipboard[136]

2,復(fù)制你要克隆的遠(yuǎn)端倉庫的url,如下圖。

clipboard[137]

3,進(jìn)入團(tuán)隊(duì)資源管理器的連接窗口,在本地Git存儲(chǔ)庫項(xiàng)中粘貼上前面copy的url,然后點(diǎn)擊克隆按鈕,這樣就成功創(chuàng)建了一個(gè)本地存儲(chǔ)庫,如下圖。

clipboard[138]

clipboard[139]

可以雙擊打開項(xiàng)目。

提交更改

遠(yuǎn)端倉庫克隆到本地后,我們就可以在本地開發(fā),并提交更改了。

1,簽出代碼并修改

我在readme文件中添加了一句話

clipboard[140]

2,提交

在解決方案上右鍵,選擇提交,進(jìn)入團(tuán)隊(duì)資源管理器的更改窗口。

clipboard[141]

輸入注釋,然后點(diǎn)擊提交按鈕,即可提交代碼,需要注意的是,此時(shí)只是提交到本地存儲(chǔ)庫中,還不是遠(yuǎn)端存儲(chǔ)庫。

clipboard[142]

提交按鈕有個(gè)下拉菜單,這個(gè)后面會(huì)講到,先點(diǎn)擊提交(第1個(gè))即可。

clipboard[143]

clipboard[144]

3,同步

要將本地的更改發(fā)布到遠(yuǎn)端存儲(chǔ)庫,我們還需要做同步操作,如下圖。

我們先不管獲取,拉取和推送這些,后面會(huì)講。

clipboard[145]

提示提交成功

clipboard[146]

查看遠(yuǎn)端存儲(chǔ)庫,已經(jīng)可以看到同步成功了。

clipboard[147]

同步

進(jìn)入到團(tuán)隊(duì)資源管理器的同步窗口,如下圖。

clipboard[148]

先來了解下這幾個(gè)按鈕的作用。

推送:將本地存儲(chǔ)庫的更改更新到遠(yuǎn)端存儲(chǔ)庫。

獲取:在拉取之前獲取所有傳入提交。

拉取:從遠(yuǎn)端存儲(chǔ)庫獲取最新版本。

同步:同步實(shí)際上同時(shí)進(jìn)行了兩個(gè)操作,先從遠(yuǎn)端存儲(chǔ)庫拉取(pull)最新版本,然后和本地存儲(chǔ)庫進(jìn)行比較,進(jìn)行自動(dòng)合并(merge)后推送(push)到遠(yuǎn)端存儲(chǔ)庫。

1,獲取最新版本

為了減少?zèng)_突,在開始開發(fā)新功能前,都會(huì)先去獲取最新版本,獲取的方式一般有兩種,當(dāng)然要依實(shí)際情況來選擇。

1) 獲取和拉取,在傳入提交項(xiàng)可以看到團(tuán)隊(duì)其它成員的提交更改,可以拉取全部,或者拉取其中某個(gè)更改到本地。

clipboard[149]

2) 同步,因?yàn)橥綍?huì)同時(shí)進(jìn)行兩個(gè)操作,拉取和推送。所以這個(gè)操作適合本地存儲(chǔ)庫沒有待推送的更改的情形,因?yàn)槿绻镜卮嬖诖扑偷母牡臅r(shí)候,很容易導(dǎo)致沖突的發(fā)生。

clipboard[150]

2,提交更改

當(dāng)開發(fā)完某個(gè)功能,或者fix了某個(gè)bug時(shí),就會(huì)去提交更改到遠(yuǎn)端存儲(chǔ)庫。

1) 推送,可以一次推送全部本地更改或提交一個(gè),推送一個(gè)。

clipboard[151]

2) 同步,也可以點(diǎn)擊同步實(shí)現(xiàn)提交更改,當(dāng)然,在同步之前最好拉取最新版本,這樣可以減少?zèng)_突的發(fā)生。

clipboard[152]

成員和權(quán)限管理

1,入口

clipboard[153]

clipboard[154]

有兩種添加成員的方式,Add members是從人員清單中添加,Import members是從其它項(xiàng)目中批量導(dǎo)入成員。

clipboard[155]

2,GitLab默認(rèn)提供了四種角色,如果要允許成員提交更改的話,必須設(shè)定其角色為Master,否則會(huì)收到如下圖的錯(cuò)誤。

clipboard[156]

clipboard[157]

注:以上錯(cuò)誤,只是針對(duì)主線master,在分支上提交更改不會(huì)報(bào)告這個(gè)錯(cuò)誤。

分支管理,創(chuàng)建與合并分支

1,創(chuàng)建分支

有兩種方法創(chuàng)建分支,分別是基于本地創(chuàng)建分支和基于遠(yuǎn)端創(chuàng)建分支,如果是基于本地創(chuàng)建分支,最好先獲取最新版本,如果是基于遠(yuǎn)端創(chuàng)建分支,團(tuán)隊(duì)成員最好都提交本地更改。我們約定,一般都基于遠(yuǎn)端創(chuàng)建分支。

需要注意的是,如果是基于遠(yuǎn)端創(chuàng)建分支,一定要取消跟蹤遠(yuǎn)程分支復(fù)選框,否則就創(chuàng)建成了跟蹤分支了。跟蹤分支不能分布,它是用于聯(lián)系本地分支和遠(yuǎn)程分支的,在跟蹤分支上的操作(包括推送和拉取)會(huì)自動(dòng)推送和拉取到關(guān)聯(lián)的遠(yuǎn)程分支上,比如默認(rèn)的本地master分支就是origin/master的一個(gè)跟蹤分支。

image

 

clipboard[158]

輸入分支名稱,點(diǎn)擊創(chuàng)建分支。

clipboard[159]

創(chuàng)建成功,接著發(fā)布分支,即將分支推送到遠(yuǎn)端存儲(chǔ)庫。

clipboard[160]

 

要注意的是,此時(shí)該分支變?yōu)楦櫡种Я恕?/font>

image

分支2015.07.29.HelloWebAPI1.0已經(jīng)推送到遠(yuǎn)端存儲(chǔ)庫了。

clipboard[161]

2,合并分支

為了模擬實(shí)際情形,先在分支2015.07.29.HelloWebAPI1.0上做些修改,然后提交更改,最后將分支合并到主線上。

在test2.txt中添加一行新的記錄,并提交更改到本地存儲(chǔ)庫

clipboard[162]

clipboard[163]

切換到分支窗口,先切換到主線(master)分支,然后點(diǎn)擊合并按鈕,從分支合并選擇源分支2015.07.29.HelloWebAPI1.0,當(dāng)前分支選擇目標(biāo)分支master,然后點(diǎn)擊合并按鈕開始合并。

clipboard[164]

合并,提交更改成功提示

clipboard[165]

分支更新的代碼已經(jīng)合并過來了。

clipboard[166]

推送更改到遠(yuǎn)端存儲(chǔ)庫

clipboard[167]

進(jìn)入GitLab,已經(jīng)可以看到提交更改記錄,并且主線代碼已經(jīng)更新了。

clipboard[168]

主線代碼已經(jīng)更新

clipboard[169]

3,刪除分支

首先從遠(yuǎn)端刪除分支

image

此時(shí)本地對(duì)應(yīng)的分支就由跟蹤分支為普通分支了,直接刪除即可。

image

這樣,分支2015.08.27就被完整刪除了。

解決沖突

當(dāng)團(tuán)隊(duì)中兩人或多個(gè)同時(shí)修改同一文件的同一代碼段,后提交更改或獲取更新的人就會(huì)碰到?jīng)_突。

1,沖突發(fā)生

以主線(master)的文件test1.txt為例,假如兩人同時(shí)修改它。

張三在test1.txt的第3和4行新增兩行代碼,并提交到本地存儲(chǔ)庫。

clipboard[170]

李四也在test1.txt的第3和第4行新增兩行代碼,并提交更改和推送到遠(yuǎn)端存儲(chǔ)庫。

clipboard[171]

如果張三再去推送的話, 沖突就發(fā)生了。

clipboard[172]

clipboard[173]

2,解決沖突

先獲取并拉取最新,然后解決沖突。

獲取并拉取最新版本

clipboard[174]

點(diǎn)擊解決沖突鏈接,進(jìn)入到解決沖突窗口

clipboard[175]

點(diǎn)擊合并按鈕

clipboard[176]

clipboard[177]

源和目標(biāo)的更改都勾選上,并且點(diǎn)擊接受合并

clipboard[178]

提交合并

clipboard[179]

GitLab已更新

clipboard[180]

TFS代碼遷移到Git

1,使用TortoiseGit等工具手動(dòng)推送。

2,使用其它工具,可以參考下面文章。

1),http://m.survivalescaperooms.com/sorex/archive/2013/03/11/2954095.html

2),http://chriskirby.net/migrate-an-existing-project-from-tfs-to-github-with-changeset-history-intact/

3,TFS—>git可以保留完整歷史記錄(包括源代碼),方法:

https://github.com/git-tfs/git-tfs

系統(tǒng)變量的path里加上:
;C:/Program Files (x86)/Git/bin;F:/Users/Desktop/GitTfs-0.22.0/

新開cmd,執(zhí)行命令
md C:/PackageFH
cd C:/PackageFH
git-tfs clone http://hp580tfssz:8080/tfs/WingonTravel $/PackageFH/MainLine

TortoiseGit的使用

安裝程序可以從以下路徑獲得:

//172.18.21.12/技術(shù)開發(fā)部/轉(zhuǎn)運(yùn)站/Software/git/TortoiseGit-1.8.14.0_64bit.1436148947.msi

主要有以下幾個(gè)步驟

1,創(chuàng)建本地倉庫

image

點(diǎn)擊OK,即創(chuàng)建本地倉庫成功。

image

2,設(shè)置

設(shè)置用戶信息和遠(yuǎn)端倉庫url

image

image

點(diǎn)擊確定,設(shè)置完成。

3,提交到本地倉庫

image

image

點(diǎn)擊OK,代碼就提交到本地倉庫了。

4,推送到遠(yuǎn)端倉庫

image

image

image

推送成功

image

查看GitLab,代碼已經(jīng)同步過去了。

image


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 双牌县| 莫力| 建德市| 西昌市| 城步| 宝鸡市| 耒阳市| 沈阳市| 涪陵区| 武邑县| 郯城县| 江川县| 饶河县| 子洲县| 石家庄市| 丰顺县| 长丰县| 广水市| 阿瓦提县| 高碑店市| 北碚区| 开化县| 长阳| 乳山市| 边坝县| 金乡县| 舒城县| 普兰县| 武安市| 泰安市| 尉氏县| 宜城市| 泾阳县| 施秉县| 伊吾县| 稻城县| 扬州市| 科尔| 涟水县| 沂南县| 渑池县|