一次Git學(xué)習(xí)之旅

圖片來(lái)源:https://git-scm.com/

個(gè)人認(rèn)為男韧,Git是對(duì)開(kāi)發(fā)人員溝通協(xié)作要求更高的源代碼版本管理系統(tǒng)涝涤,使用元數(shù)據(jù)來(lái)管理代碼句占。

Git不同于集中式的SVN,是一種分布式的源代碼管理系統(tǒng)溪胶,Git在本地有完整的代碼倉(cāng)庫(kù)搂擦,在本地也可以實(shí)現(xiàn)版本控制和分支管理。通過(guò)添加遠(yuǎn)程倉(cāng)庫(kù)的的方式哗脖,就可以實(shí)現(xiàn)Git所推崇的多分支多倉(cāng)庫(kù)的源代碼版本管理理念瀑踢。

在第一次在團(tuán)隊(duì)正式任務(wù)中引入使用之前,進(jìn)行過(guò)幾次局部嘗試才避,逐步的了解了一些Git的基本操作和原理橱夭,也看過(guò)一些文章,知道有Gitlab-flow桑逝、Github-flow徘钥、Feature Branch等常用的Git工作流,一直在平時(shí)的工作中進(jìn)行小的嘗試肢娘。

正好在結(jié)合使用CI集成環(huán)境,進(jìn)行快速開(kāi)發(fā)的過(guò)程中舆驶,在團(tuán)隊(duì)中嘗試推行了一次Git工作方式橱健,使用的過(guò)程中也沒(méi)有要求一上來(lái)就能達(dá)到某種工作流的最佳實(shí)踐,以解決實(shí)際開(kāi)發(fā)中的團(tuán)隊(duì)協(xié)作開(kāi)發(fā)作為知道方針沙廉,進(jìn)行開(kāi)放的探索拘荡;結(jié)果在使用過(guò)程中,收獲非常大撬陵, 基本上在過(guò)程中掌握了所有常用的Git命令和工具珊皿。記錄下這次學(xué)習(xí)探索之旅网缝,分享出來(lái),希望對(duì)有興趣學(xué)習(xí)Git的人有幫助蟋定。

1粉臊、項(xiàng)目的創(chuàng)建

這次開(kāi)發(fā)的demo項(xiàng)目要使用某個(gè)CI工具進(jìn)行自動(dòng)化構(gòu)建,并且一鍵部署到演示服務(wù)器上驶兜,所以選用了可以免費(fèi)創(chuàng)建代碼庫(kù)的Gitlab扼仲,配合Gitlab CI進(jìn)行開(kāi)發(fā)和演示;這里用到里代碼庫(kù)創(chuàng)建和遠(yuǎn)程庫(kù)跟蹤的命令

git init
git remote add origin https://git.coding.net/liuwill/webPageTest.git
git pull

當(dāng)然如果本地還沒(méi)有任何代碼抄淑,可以使用git clone來(lái)直接克隆遠(yuǎn)程庫(kù)git clone https://git.coding.net/liuwill/webPageTest.git屠凶。

2、第一次提交代碼

在Git的原理里面肆资,新創(chuàng)建或者編輯過(guò)的代碼矗愧,是在工作區(qū)里面,而提交的意思郑原,就是將代碼保存到本地倉(cāng)庫(kù)唉韭,中間有一個(gè)暫存區(qū),要提交的代碼必須先添加到暫存區(qū)颤专,才能提交到本地倉(cāng)庫(kù)纽哥。具體用到了add和commit命令;在提交代碼之前栖秕,涉及到的操作包括:將文件添加到暫存區(qū)春塌,提交暫存區(qū)的代碼到本地存庫(kù);添加新文件簇捍;刪除錯(cuò)誤添加的文件只壳。

git add .
git commit -m 'first commit'

執(zhí)行過(guò)程中,可以使用git status命令暑塑,查看當(dāng)前的工作區(qū)和暫存區(qū)的情況吼句。
如果在過(guò)程中,修改了某個(gè)文件事格,或者添加了新文件惕艳,可以執(zhí)行命令git add filename,將文件添加在暫存區(qū)驹愚。如果添加暫存區(qū)之后远搪,不想重新發(fā)起一次commit,可以git commit --amend逢捺,這樣可以把暫存區(qū)的文件谁鳍,合并到上一次commit中。
此外還可以使用git rm filename --cached來(lái)將添加到暫存區(qū)中的文件,從暫存區(qū)移除倘潜,但是保留本地副本绷柒。

文件在git中的生命周期

3、將修改過(guò)的代碼推送到遠(yuǎn)程倉(cāng)庫(kù)

完成代碼編輯和本地倉(cāng)庫(kù)的代碼提交之后涮因,就可以將代碼推送到遠(yuǎn)程倉(cāng)庫(kù)

git remote -v
git push origin master

第一個(gè)命令可以查看本地倉(cāng)庫(kù)中已經(jīng)添加的遠(yuǎn)程倉(cāng)庫(kù)废睦;第二個(gè)命令,將本地的master分支推送到origin命名的遠(yuǎn)程倉(cāng)庫(kù)蕊退,且使用master分支郊楣;如果添加-u參數(shù),那么origin/master就會(huì)設(shè)為本地master分支的跟蹤分支瓤荔;如果不想推送到遠(yuǎn)程倉(cāng)庫(kù)的master分支净蚤,執(zhí)行git push origin master:develop,可以把本地的master分支推送到遠(yuǎn)程倉(cāng)庫(kù)的develop分支上输硝。

4今瀑、創(chuàng)建新分支

在開(kāi)發(fā)過(guò)程中,git推薦使用多分支進(jìn)行開(kāi)發(fā)点把,根據(jù)不同的工作流橘荠,可以有不同的分支命名規(guī)范可以采用;

通忱商樱可以默認(rèn)采用git flow進(jìn)行開(kāi)發(fā)哥童;
1、一般會(huì)在develop分支中進(jìn)行開(kāi)發(fā)褒翰,然后在發(fā)布的時(shí)候贮懈,將代碼合并到master分支;
2优训、如果需要朵你,還會(huì)使用feature branch、hotfix branch和release branch分別用來(lái)進(jìn)行特性開(kāi)發(fā)揣非、修復(fù)補(bǔ)丁抡医、或者發(fā)布版本

git branch new-branch
git checkout -b new-branch

兩種命令都可以用來(lái)創(chuàng)建新的分支,checkout直接將當(dāng)前工作分支切換到新建的分支上

5早敬、獲取遠(yuǎn)程分支代碼

如果需要獲取遠(yuǎn)程分支忌傻,或者同步最新的代碼,可以直接git pull origin develop搞监,從遠(yuǎn)程倉(cāng)庫(kù)拉取origin/develop分支芯勘。
或者使用fetch命令

git fetch origin develop
git log -p develop..origin/develop
git merge origin/develop

執(zhí)行之后,就可以把遠(yuǎn)程倉(cāng)庫(kù)的develop分支合并到本地的當(dāng)前工作分支下腺逛。

6、在分支中進(jìn)行開(kāi)發(fā)

如果在團(tuán)隊(duì)中使用feature branch進(jìn)行開(kāi)發(fā),并且多個(gè)feature同時(shí)進(jìn)行開(kāi)發(fā)的話棍矛,開(kāi)發(fā)過(guò)程中安疗,不同的特性完成并合并到主分支的時(shí)間是不一樣的,在最后合并代碼的時(shí)候够委,可能會(huì)產(chǎn)生將多的沖突需要處理荐类。這個(gè)時(shí)候可以使用rebase命令,在開(kāi)發(fā)過(guò)程中茁帽,及時(shí)同步最新的代碼玉罐,從而避免最后merge的時(shí)候,處理大量的沖突潘拨;

git checkout master
git pull
git checkout feature-x
git rebase master

如果出現(xiàn)代碼沖突的話吊输,打開(kāi)文件處理沖突,處理完之后铁追,可以繼續(xù)進(jìn)行rebase

git add conflict_filename
git rebase --continue

如果要放棄本次合并季蚂,使用git rebase --abort命令,就會(huì)取消本次rebase操作琅束。在rebase之前扭屁。

7、處理開(kāi)發(fā)過(guò)程中的沖突

如果在合并代碼涩禀,或者獲取遠(yuǎn)程倉(cāng)庫(kù)代碼之前料滥,本地還有不想提交或者未完成的代碼,可以使用stash命令艾船,先將代碼放到棧中暫存起來(lái)葵腹,等完成代碼更新之后,在取出未完成的代碼丽声,繼續(xù)進(jìn)行操作礁蔗。具體操作如下:

git stash
## do something
git stash list
git stash pop stash@{0}

8、遠(yuǎn)程倉(cāng)庫(kù)管理

此外雁社,在開(kāi)發(fā)過(guò)程中浴井,因?yàn)槌掷m(xù)集成部署的需要,可能會(huì)使用不同的遠(yuǎn)程倉(cāng)庫(kù)來(lái)完成不同的構(gòu)建策略霉撵;或者對(duì)遠(yuǎn)程倉(cāng)庫(kù)的代碼進(jìn)行管理磺浙,還用到了一些基本的命令;

刪除遠(yuǎn)程分支:git push --delete origin feature-x
添加多個(gè)遠(yuǎn)程倉(cāng)庫(kù):git remote add deploy http://giturl/repo.git
將代碼強(qiáng)制推送到遠(yuǎn)程倉(cāng)庫(kù):git push -f deploy develp

這篇文章是系列文章的第一篇徒坡,簡(jiǎn)單的介紹了在一次Git團(tuán)隊(duì)協(xié)作開(kāi)發(fā)中用到的基本命令撕氧,接下來(lái)的一系列文章中,將會(huì)分主題對(duì)git學(xué)習(xí)使用過(guò)程中的各種相關(guān)知識(shí)和體會(huì)進(jìn)行介紹喇完。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伦泥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌不脯,老刑警劉巖府怯,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異防楷,居然都是意外死亡牺丙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)复局,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冲簿,“玉大人,你說(shuō)我怎么就攤上這事亿昏÷吞蓿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵龙优,是天一觀的道長(zhǎng)羊异。 經(jīng)常有香客問(wèn)我,道長(zhǎng)彤断,這世上最難降的妖魔是什么野舶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮宰衙,結(jié)果婚禮上平道,老公的妹妹穿的比我還像新娘。我一直安慰自己供炼,他們只是感情好一屋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著袋哼,像睡著了一般冀墨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涛贯,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天诽嘉,我揣著相機(jī)與錄音,去河邊找鬼弟翘。 笑死虫腋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稀余。 我是一名探鬼主播悦冀,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼睛琳!你這毒婦竟也來(lái)了盒蟆?” 一聲冷哼從身側(cè)響起踏烙,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎历等,沒(méi)想到半個(gè)月后宙帝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡募闲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了愿待。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浩螺。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖仍侥,靈堂內(nèi)的尸體忽然破棺而出要出,到底是詐尸還是另有隱情,我是刑警寧澤农渊,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布患蹂,位于F島的核電站,受9級(jí)特大地震影響砸紊,放射性物質(zhì)發(fā)生泄漏传于。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一醉顽、第九天 我趴在偏房一處隱蔽的房頂上張望沼溜。 院中可真熱鬧,春花似錦游添、人聲如沸系草。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)找都。三九已至,卻和暖如春廊酣,著一層夾襖步出監(jiān)牢的瞬間能耻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工啰扛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嚎京,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓隐解,卻偏偏與公主長(zhǎng)得像鞍帝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子煞茫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,661評(píng)論 9 163
  • Git是目前最流行的版本管理系統(tǒng)帕涌,也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,707評(píng)論 1 17
  • 2017年4月2日 1.感恩父母幫助照顧孩子摄凡。 2.感恩兒子讓我享受到幸福,現(xiàn)在越來(lái)越會(huì)表達(dá)自己的感受了蚓曼。 3.感...
    馮梓源閱讀 229評(píng)論 0 0
  • 我和王先生相識(shí)于最俗不可耐的相親中亲澡。 相識(shí)半年結(jié)婚了。 說(shuō)句笑話纫版,領(lǐng)證之前我倆僅僅牽過(guò)手床绪,聽(tīng)起來(lái)有點(diǎn)像豪賭,賭注是...
    一心飛揚(yáng)閱讀 667評(píng)論 3 8
  • 春天是萬(wàn)物復(fù)蘇的季節(jié)其弊,最適合踏青外游癞己,今天一大早,約了大幫好朋友又上山了梭伐,山上的景色特別好痹雅,春風(fēng)撫面,綠樹(shù)成蔭糊识,從...
    惠芝閱讀 263評(píng)論 1 0