开发A和开发B都在修改仓库repo_test的代码,开发A修改test1txt 然后提交到gerrit上,并在gerrit上合入了这个提交(commitA),开发B没有执行git pull, 直接修改了test2txt, 这个test2txt和test1txt没有任何关联性,是完全不相关的模块,然后开发B提交gerrit,然后gerrit上合入了这个提交(commitidB),此时,由于开发B的这个提交相对服务器少了开发A的改动提交,就自动生成了一条merge(叫commitB+吧),比如如下:
以上,B+是自动生成的merge,这个自动merge的记录在gerrit上是看不到的,真正的修改是在B,所以开发在gerrit上找到B,让我(职位:CM)在B节点标记tag,我在B标记tag后打包(我执行git checkout B),发现没有A的修改了,这就出问题了!!!但是git checkout B+就有A的提交!!
然后发现,是因为开发B没执行git pull ,没把A的改动带进去,所以提交的时候就自动产生了这个merge的提交记录,话说,使用rebase就不会产生,但是怎么搞呢?
然后发现了gerrit的submit type 可以控制:
默认的是“Merge if Necessary”, 这个就是在有差异的时候自动生成一条merge记录
所以换成“Rebase if Necessary”,这个会自动rebase,不会自动产生merge记录
如下是gerrit换成“rebase if Necessary”的提交记录:
STM32 对内部FLASH读写接口函数(转)
ymodem协议c实现(转)
STM32启动模式及API(转)
Keil STM32调试,使用ST-Link下载程序时提示“flash timeoutreset the target and try it again”
UVA 11020
LeetCode Maximal Square
Android中的消息机制
关于DPM(Deformable Part Model)算法中模型可视化的解释
Nodejs能够做什么?
hdu 1071 The area
Linux经常使用命令(九)
[ACM] hdu 4248 A Famous Stone Collector (DP+组合)
linux程序设计——个人总结
poj3252-Round Number 组合数学
QML与C++交互:登陆界面设计
delphi2010发送邮件—中文显示为乱码解决
WCF探索之旅(五)——WCF与WebService的异同
数据库备份还原,日志清理代码
Android自己定义View、画家(画布)Canvas与画笔Paint的应用——绘图、涂鸦板app的实现
Berkeley DB基础教程
SSL和SSH的差别1git checkout xxx(切换到你要将其他分支合并到的主分支上,xxx是分支名)
2git merge xxx (合并 *** 作)
3git branch -d xxx(删除已经合并的分支,可选择不删除)
git clone url #克隆新的版本库
02 git init
03 git pull repo_name #有关联的远程库,抽取并和本地合并
04 git fetch remote_repo_name #抽取并新建分支
05
06
07
08 #在当前commit对象上新建分支 指针head
09 #head指向正在工作中的本地分支的指针(别名)
10 #不会切换到新建的分支上
11 git branch branch1
12
13 #切换分支将head指向branch1
14 git checkout branch1
15
16 #工作流程卡
17 #在不同的分支里反复切换,并在时机成熟时把他们合并到一起
18 #git的分支实际是一个包含所指向对象校验和的文件(40个字符长度SHA-1字串)
19
20 #分支的新建和合并
21 #0、自己工作分支mybranch,工作的好好的
22
23 #1、突然有新需求,先切换到生产环境分支product;
24 git checkout product
25
26 #2、为新需求新建分支branch_pack,切到其中,并在其中编码,直到通过测试用例
27 # -b 新建分支并切换到其上
28 git checkout -b issueXXXX
29
30 #3、切换到生产环境分支product,将2中的开发工作分支branch_pack合并进来,然后推送到生产服务器上
31 git checkout product
32 # 合并
33 git merge branch_pach
34 #冲突解决,merge失败时很可能因对同一文件的同时更改,所以必须手动人工解决 取舍代码,确认冲突解决后需要把冲突文件 git add到staged area,运行git status查看所有状态确保无误后再git commit提交,注释好冲突为什么这么解决
35
36 git push 远程仓库名 本地仓库名
37
38 #分支删除
39 git branch -d branch_pach
40
41 4、切换到mybranch继续自己的工作
42 git checkout mybranch
43
44 #切换分支最好没有待提交的文件,即stage area是清洁的
45 #查看各个分支最后一个提交对象的信息
46 git branch -v
47 git branch --merge/no-merged
48 #查看哪些分支已被并入当前分支(译注:也就是说哪些分支是当前分支的直接上游
49
50
51
52 #给分支生成patch文件可以给
53 git format-patch
54
55
56 #把本地名为serverfix的分支推送到远程origin库的awesomebranch分支
57 git push origin serverfix:awesomebranch
58
59 #跟踪远程分支 从远程分支checkout出的本地分支成为 跟踪分支
60 git checkout -b sf origin/serverfix
61 git checkout --track origin/serverfix
62
63 #删除远程分支
64 git push origin :serverfix
65
66 git两种开发分支方法
67 长期分支:一个主分支保持稳定代码,其余多个开放分支
68 特性topic分支:多个短期单一功能的分支
69
70 #给当前文件 打特定版本标签
71 git tag -a beta01 -m "some 注释"
72
73 #回退到某个tag
74 git tag beta01
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)