每次吃一点Android_Gitの三

目录:
1、Git冲突处理
2、Git合并的递归策略合并模式
3、Git分支管理策略

进击的小仙

穿越:【目录】每次吃一点Android_Git版本管理

参考资料:Git教程 - 廖雪峰的官方网站

1、Git冲突处理

1.1. 冲突产生

借着模拟冲突产生的情景,从新建项目到提交到Github,整个流程复习一遍吧。

  • 1、在Github上创建同名仓库
  • 2、在本地新建安卓AS工程,添加README.md文件,写入项目描述。
  • 3、本地工程目录下打开bash,并执行以下操作。
# 初始化git
git init
# 将工程目录下的所有内容都添加提交到master分支
git add .
git commit -m "origin project"
# 添加远程版本仓库
git remote add origin git@github.com:elspet/My_MVP_App.git
# 将内容提交到远程版本库
git pull origin master
git push origin master 

注意:如果在github上新建仓库时同时生成了README.md文件,然后本地又自己新增一个README.md,pull时会出现以下错误,须得删除一个再提交。

Paste_Image.png

提交成功后,github有了对应的文件内容。


Paste_Image.png
  • 4、上方已完成工程版本管理的基本构建,接下来模拟冲突
# 新建一个分支
git checkout -b bran_one
# 在该分支下修改README.md文件内容,并添加提交到分支
vim README.md
git add README.md
git commit -m "modified README file content."
# 切换到master分支下修改README.md文件内容,并添加提交到分支
git checkout master
vim README.md
git add README.md
git commit -m "modified README file content."
#将bran_one分支的内容合并到master分支
git merge bran_one

执行完毕报出冲突:

Paste_Image.png

1.2. 解决冲突

  • 1、先看下冲突内容:
    git status
Paste_Image.png

提示我们两个分支各自都修改了README.md文件,所以冲突了。

  • 2、再看下README.md现在的内容
    cat README.md
Paste_Image.png

可以看到HEAD下面一行是master分支修改的内容,bran_one上面一行是bran_one分支修改的内容。

  • 3、修改README.md的内容,并添加提交到分支
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文件,已经同步更新了。

  • 5、快速解决冲突:
# 使用我们修改的内容
git checkout ours README.md
# 使用对方的内容
git checkout theirs README.md

2. Git合并的递归策略合并模式

《每次吃一点Android_Gitの二》一文中提到的分支合并我们用的是:

git merge branchname

这种默认的命令模式称为Fast Forward模式,特点是合并后没有合并记录
这里要说的是另外一种合并模式:Merge made by recursive 递归策略式合并,特点是会保留合并记录,格式如下:

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

那么,做个练习巩固巩固

# 新建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 "
# 切换到上一级分支
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分支管理策略

那么应用到实际的团队项目开发过程中,git也有一些相应的使用规范。
大体上将分支分成三个大类:

  • master 该分支上的代码是稳定的,每个版本都是一个可发行的版本,如App 1.0正式上线的版本。
  • dev 分支是开发的主分支,每个人在自己的分支上修改后再提交到该分支上
  • 如lisa分支,专属每个人开发的独立分支,每个人在自己的分支上进行修改,然后提交到dev分支上。

全流程再走一遍:

# 首先新建一个文件夹,对git进行初始化
git init
# 将远程库中的My_MVP_App工程克隆到本地
git clone git@github.com:elspet/My_MVP_App.git
# 进入工程里面
cd My_MVP_App
# 查看远程仓库的分支
git branch -a 
# 将远程仓库分支获取到本地
git checkout -b dev origin/dev
# 或者 
git fetch origin dev_originname:dev_localname
# 新建个人分支: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
# 假设现在Jimbo同学也在做自己的部分
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
# 准备上线,提交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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,645评论 4 54
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,672评论 1 17
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,626评论 9 163
  • 01 我坐在老旧的桌旁给肚子里未出生的宝宝织毛衣,毛线是丈夫特意从城里的百货公司买的大红色,也是我最喜欢的颜色。我...
    一味清欢阅读 4,903评论 0 3
  • 总有人冷嘲热讽 要学会不痒不痛 哪怕是负重前行 也没有丢失笑容 与瞌睡斗争 借咖啡提神 太明亮的灯 恍惚了眼睛 黑...
    阴平阳平阅读 144评论 0 0