每次吃一點(diǎn)Android_Gitの三

目錄:
1凭戴、Git沖突處理
2杉武、Git合并的遞歸策略合并模式
3胳赌、Git分支管理策略

進(jìn)擊的小仙

穿越:【目錄】每次吃一點(diǎn)Android_Git版本管理

參考資料:Git教程 - 廖雪峰的官方網(wǎng)站

1鲫惶、Git沖突處理

1.1. 沖突產(chǎn)生

借著模擬沖突產(chǎn)生的情景鳖孤,從新建項(xiàng)目到提交到Github,整個(gè)流程復(fù)習(xí)一遍吧绪颖。

  • 1秽荤、在Github上創(chuàng)建同名倉庫
  • 2、在本地新建安卓AS工程菠发,添加README.md文件王滤,寫入項(xiàng)目描述。
  • 3、本地工程目錄下打開bash缚窿,并執(zhí)行以下操作冰悠。
# 初始化git
git init
# 將工程目錄下的所有內(nèi)容都添加提交到master分支
git add .
git commit -m "origin project"
# 添加遠(yuǎn)程版本倉庫
git remote add origin git@github.com:elspet/My_MVP_App.git
# 將內(nèi)容提交到遠(yuǎn)程版本庫
git pull origin master
git push origin master 

注意:如果在github上新建倉庫時(shí)同時(shí)生成了README.md文件,然后本地又自己新增一個(gè)README.md胜榔,pull時(shí)會(huì)出現(xiàn)以下錯(cuò)誤,須得刪除一個(gè)再提交。

Paste_Image.png

提交成功后悠抹,github有了對(duì)應(yīng)的文件內(nèi)容。


Paste_Image.png
  • 4扩淀、上方已完成工程版本管理的基本構(gòu)建楔敌,接下來模擬沖突
# 新建一個(gè)分支
git checkout -b bran_one
# 在該分支下修改README.md文件內(nèi)容,并添加提交到分支
vim README.md
git add README.md
git commit -m "modified README file content."
# 切換到master分支下修改README.md文件內(nèi)容驻谆,并添加提交到分支
git checkout master
vim README.md
git add README.md
git commit -m "modified README file content."
#將bran_one分支的內(nèi)容合并到master分支
git merge bran_one

執(zhí)行完畢報(bào)出沖突:

Paste_Image.png

1.2. 解決沖突

  • 1卵凑、先看下沖突內(nèi)容:
    git status
Paste_Image.png

提示我們兩個(gè)分支各自都修改了README.md文件,所以沖突了胜臊。

  • 2勺卢、再看下README.md現(xiàn)在的內(nèi)容
    cat README.md
Paste_Image.png

可以看到HEAD下面一行是master分支修改的內(nèi)容,bran_one上面一行是bran_one分支修改的內(nèi)容象对。

  • 3黑忱、修改README.md的內(nèi)容,并添加提交到分支
vim README.md
git add README.md
git commit -m "resloved README file conflict"
  • 4勒魔、查看版本日志
    git log --graph --pretty=oneline --abbrev-commit
Paste_Image.png

再切換到bran_one分支下甫煞,查看README.md文件,已經(jīng)同步更新了冠绢。

  • 5危虱、快速解決沖突:
# 使用我們修改的內(nèi)容
git checkout ours README.md
# 使用對(duì)方的內(nèi)容
git checkout theirs README.md

2. Git合并的遞歸策略合并模式

《每次吃一點(diǎn)Android_Gitの二》一文中提到的分支合并我們用的是:

git merge branchname

這種默認(rèn)的命令模式稱為Fast Forward模式,特點(diǎn)是合并后沒有合并記錄唐全。
這里要說的是另外一種合并模式:Merge made by recursive 遞歸策略式合并埃跷,特點(diǎn)是會(huì)保留合并記錄蕊玷,格式如下:

git merge --no-ff -m "merge lisa branch 2 master branch" lisa

那么,做個(gè)練習(xí)鞏固鞏固

# 新建lisa分支
git checkout -b lisa
# 在lisa分支下修改README.md文件弥雹,并添加提交到分支
vim README.md
git add README.md
git commit -m "modified README.md file on lisa branch "
# 切換到上一級(jí)分支
git checkout dev
# 采用遞歸策略合并方式將lisa的修改合并到dev分支中
git merge --no-ff -m "merge lisa branch 2 dev branch" lisa 

通過git log --graph --pretty=oneline --abbrev-commit指令查看提交日志:

Paste_Image.png

3. Git分支管理策略

那么應(yīng)用到實(shí)際的團(tuán)隊(duì)項(xiàng)目開發(fā)過程中垃帅,git也有一些相應(yīng)的使用規(guī)范。
大體上將分支分成三個(gè)大類:

  • master 該分支上的代碼是穩(wěn)定的剪勿,每個(gè)版本都是一個(gè)可發(fā)行的版本贸诚,如App 1.0正式上線的版本。
  • dev 分支是開發(fā)的主分支厕吉,每個(gè)人在自己的分支上修改后再提交到該分支上
  • 如lisa分支酱固,專屬每個(gè)人開發(fā)的獨(dú)立分支,每個(gè)人在自己的分支上進(jìn)行修改头朱,然后提交到dev分支上运悲。

全流程再走一遍:

# 首先新建一個(gè)文件夾,對(duì)git進(jìn)行初始化
git init
# 將遠(yuǎn)程庫中的My_MVP_App工程克隆到本地
git clone git@github.com:elspet/My_MVP_App.git
# 進(jìn)入工程里面
cd My_MVP_App
# 查看遠(yuǎn)程倉庫的分支
git branch -a 
# 將遠(yuǎn)程倉庫分支獲取到本地
git checkout -b dev origin/dev
# 或者 
git fetch origin dev_originname:dev_localname
# 新建個(gè)人分支:lisa
git checkout -b lisa
# 修改README.md文件
vim README.md
# 添加并提交到lisa分支
git add README.md
git commit -m "modified on lisa branch 15:17"
# 切換到dev分支项钮,合并lisa分支到dev分支
git checkout dev
git merge --no-ff -m "merge lisa 2 dev with no-ff mode" lisa
# 查看合并記錄
git log --graph --pretty=oneline --abbrev-commit
# 假設(shè)現(xiàn)在Jimbo同學(xué)也在做自己的部分
git checkout -b jimbo
vim README.md
git add README.md
git commit -m "modified on jimbo branch 15:21"
git checkout dev 
git merge --no-ff -m "merge jimbo 2 dev with no-ff mode" jimbo
# 準(zhǔn)備上線班眯,提交dev上最終版本到master分支上
git checkout master
git merge --no-ff -m "release 1.0 version to master branch" dev
# 在master分支上看所有的版本記錄
git log --graph --pretty=oneline --abbrev-commit 
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市烁巫,隨后出現(xiàn)的幾起案子署隘,更是在濱河造成了極大的恐慌,老刑警劉巖亚隙,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磁餐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡阿弃,警方通過查閱死者的電腦和手機(jī)诊霹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恤浪,“玉大人畅哑,你說我怎么就攤上這事∷桑” “怎么了荠呐?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長砂客。 經(jīng)常有香客問我泥张,道長,這世上最難降的妖魔是什么鞠值? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任媚创,我火速辦了婚禮,結(jié)果婚禮上彤恶,老公的妹妹穿的比我還像新娘钞钙。我一直安慰自己鳄橘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布芒炼。 她就那樣靜靜地躺著瘫怜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪本刽。 梳的紋絲不亂的頭發(fā)上鲸湃,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音子寓,去河邊找鬼暗挑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛斜友,可吹牛的內(nèi)容都是我干的炸裆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼蝙寨,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼晒衩!你這毒婦竟也來了嗤瞎?” 一聲冷哼從身側(cè)響起墙歪,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贝奇,沒想到半個(gè)月后虹菲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掉瞳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年毕源,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陕习。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霎褐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出该镣,到底是詐尸還是另有隱情冻璃,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布损合,位于F島的核電站省艳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嫁审。R本人自食惡果不足惜跋炕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望律适。 院中可真熱鬧辐烂,春花似錦遏插、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至分瘾,卻和暖如春胎围,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背德召。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工白魂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人上岗。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓福荸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肴掷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敬锐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,654評(píng)論 4 54
  • Git是目前最流行的版本管理系統(tǒng)呆瞻,也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,682評(píng)論 1 17
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,645評(píng)論 9 163
  • 01 我坐在老舊的桌旁給肚子里未出生的寶寶織毛衣台夺,毛線是丈夫特意從城里的百貨公司買的大紅色,也是我最喜歡的顏色痴脾。我...
    一味清歡閱讀 4,930評(píng)論 0 3
  • 總有人冷嘲熱諷 要學(xué)會(huì)不癢不痛 哪怕是負(fù)重前行 也沒有丟失笑容 與瞌睡斗爭(zhēng) 借咖啡提神 太明亮的燈 恍惚了眼睛 黑...
    陰平陽平閱讀 147評(píng)論 0 0