gerrit 常用命令记录
来源:互联网 发布:python random.sample 编辑:程序博客网 时间:2024/06/05 07:45
gerrit 常用命令记录
基本操作
创建和销毁
分支列表:
$: git branch* master prepub product
创建分支:
$: git branch prepub
切换已有分支:
$: git checkout prepubSwitched to branch 'prepub'
创建并切换分支:
$: git checkout -b issue1234Switched to branch 'issue1234'
删除分支:
$: git branch -d issue1234Deleted branch issue1234 (was b904c07).
合并和冲突
合并前要先切回 要并入 的分支。
以下表示issue1234
分支合并入master
分支
$: git checkout master$: git merge issue1234Merge made by recursive. README | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
冲突的时候,git会报出哪些文件冲突,这时候需要手动解决完冲突方可提交。
$: git merge issue1234Auto-merging index.htmlCONFLICT (content): Merge conflict in index.htmlAutomatic merge failed; fix conflicts and then commit the result.
通过git status
查看冲突文件。
$: git statusindex.html: needs merge# On branch master# Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)##unmerged: index.html#
打开index.html
,git会在冲突位置做上标示。
<<<<<<< HEAD:index.html<div id="footer">contact : email.support@github.com</div>=======<div id="footer"> please contact us at support@github.com</div>>>>>>>> iss53:index.html
解决完冲突,这时候需要手动标识该冲突已经解决,类似svn的resolved
。
$: git add index.html$: git status# On branch master# Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)##modified: index.html#
这时候就可以提交了。
$: git commit -m "合并issue1234"[master e3ece67] 合并issue1234 1 files changed, 1 insertions(+), 0 deletions(-)
管理多个分支
前面提到,git非常推荐频繁使用分支,在大量分支的情况下,我们需要对分支做好管理(曾经一次上线,开了13个分支 = =
)
通过-v
可以看到最后一次提交日志。
$: git branch -v* master b904c07 把丘迟的产品搜改动合并一下 p4popt 8b93380 p4p加上refpid,开发给出来的配置是 P4P_refpid prepub a6cc66b P4P解析参数少一次替换,顺便解决\!失效的问题 product 301ae4e rankbar图片换成data uri
通过--merged
和--no-merged
来查看分支是否已经合并完成。
$: git branch --merged* master p4popt$: git branch --no-merged prepub product
未合并的分支,在删除时会提示分支未合并。
$: git branch -d productwarning: deleting branch 'product' that has been merged to 'refs/remotes/s/product', but it is not yet merged to HEAD.Deleted branch product (was 301ae4e).
分支管理流程
一般情况下,分支可以划分为长分支和短分支两种。
长分支
- 长期任务
prepub
:上线前合并,根据上线列表,从各个分支中集中到该分支,统一部署提测master
:上线后合并,长期保留一个稳定可用的分支应付紧急任务
- 项目
- 较难解决的bug
- 新特性试验田
- 重构
长分支,经常会落后其他分支一大截,需要养成习惯,适时从其他重要分支进行合并, 尤其是项目分支 。
短分支
- 临时需求
- 小bug
分支可视化
git本身的log
提供--gragh
选项,可以提供字符界面的分支可视化视图。
$: git log --graph --pretty=oneline| * 50cc7a78b7f2704a2014afa3667f6ac5b5b47374 merging refs/remotes/origin/prepub into HEAD| |\ | | * 8f685bd1be3757effe32d6ff37f86bd07dd2b549 又被无情地冲掉了代码| * | 75a17b4ad610327a9b0e1eecfc6c4bf9cade7359 修改icon| |/ | * 146a0990de450c854b1a7d9995e12979fff2d537 merging refs/remotes/origin/prepub into HEAD| |\ | | * 93b379680796eb443961bb8c59008f8ae5678be4 Merge branch 'prepub' of search.ued.taobao.net:projects/search into prepub| | |\ | | * | 8b93380ccfb9020bf8f8e1e8a4a553601de3c788 p4p加上refpid,开发给出来的配置是 P4P_refpid| * | | 08201de89834f6fecb195c2b7c3546b5cafccc85 秒杀折扣浮动层样式| | |/ | |/| | * | 0f4d1df17f79c7aa3ca3d36ab848c10b78029010 修改icon| * | ae719fc29cc550321f284323db06a294b97c1398 p4p创意优化| |/ | * a6d4501e1456589d30ab1a5800b651876629c8ca 修改icon
git还有很多GUI工具,可以提供可视化地分支走势图,比如gitk
,qgit
,GitX
等等。
远程分支
至今为止,前面所有提到的概念都是直接本地操作的,并不需要任何网络连接。
而git本身是一个分布式代码管理工具(DVCS),所以分支管理上,存在本地分支和远程分支两种概念。
可以简单的理解,远程分支就是别人的本地分支push
到服务器上的时候产生的。比如master
就是一个最典型的远程分支(默认)。
$: git push origin master
除了master
之外,我们还可以随便创建分支,然后push
到服务器上去。
$: git push origin prepubCounting objects: 27, done.Delta compression using up to 2 threads.Compressing objects: 100% (15/15), done.Writing objects: 100% (15/15), 7.30 KiB, done.Total 15 (delta 10), reused 0 (delta 0)To git@search.ued.taobao.net:projects/search.git 1b95a57..779dbe1 prepub -> prepub
远程分支的标识形式为{remote/branch}
,比如origin/product
。
$: git branch -a master p4popt* prepub product remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/p4popt remotes/origin/prepub remotes/origin/product
远程分支和本地分支需要区分,所以,在从服务器上拉取特定分支的时候,需要指定本地分支名字。
$: git branch product origin/productBranch product set up to track remote branch product from origin.
而1.6.2以上版本的git,可以通过--track
选项,简化这一过程。这也是为什么直接执行git clone
的时候,会自动创建本地master
分支的原因。(实际上,pull
操作相当于fetch
+merge
。)
$: git checkout --track origin/productBranch product set up to track remote branch refs/remotes/origin/product.Switched to a new branch "product"
远程分支和本地分支是松散的结构,可以把任意远程分支合并到任意本地分支里;同样,也可以把任意本地分支push
到任意远程分支上。
# THIS WILL MESS UP YOUR REPO!!$: git branch master* prepub p4popt product$: git pull origin product$: git push origin master
同步本地远程分支。
$: git fetch origin
删除远程分支。
$: git push origin :p4poptTo git@search.ued.taobao.net:projects/search.git - [deleted] p4popt
git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我 们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0 中的功能到v2.0中,这里就可以使用cherry-pick了。
git log
# 假设是 commit f79b0b1ffe445cab6e531260743fa4e08fb4048b
# 切到v2.0中
git check v2.0
# 合并commit
git cherry-pick f79b0b1ffe445cab6e531260743fa4e08fb4048b
git rebase有点类似git merge,但是两者又有不同,打个比方,你有两个抽屉A和B,里面都装了衣服,现在想把B中的衣服放到A中,git merge是那种横冲直撞型的,拿起B就倒入A里面,如果满了(冲突)再一并整理;而git rebase就很持家了,它会一件一件的从B往A中加,会根据一开始放入的时间顺序的来加,如果满了你可以处理这一件,你可以继续加,或者跳过这一件,又 或者不加了,把A还原。所以merge适合那种比较琐碎的,简单的合并,系统级的合并还是用rebase吧。
git rebase b
# 处理完冲突继续合并
git rebase --continue
# 跳过
git rebase --skip
# 取消合并
git rebase --abort
- gerrit 常用命令记录
- git/gerrit 常用命令记载
- git+gerrit 自用记录
- gerrit+gitlab出错记录
- 记录Gerrit的使用
- gerrit的第一次提交记录
- gerrit
- Gerrit
- gerrit
- 常用命令记录
- 常用命令记录
- 常用命令记录
- 常用命令记录
- 常用命令记录
- Gerrit上分支操作记录(创建分支、删除分支)
- CI持续集成系统环境---部署gerrit环境完整记录
- Gerrit上分支操作记录(创建分支、删除分支)
- CI持续集成系统环境---部署gerrit环境完整记录
- vue中如何使用全局变量和全局函数
- 信息检索的评价指标(Precision, Recall, F-score, MAP)
- 8月9日云栖精选夜读:大数据时代_如何构建国家地质基础数据更新体系
- js 模拟搜狐视频纪录片列表展示
- Android Studio酷炫插件(一)——自动化快速实现Parcelable接口序列化
- gerrit 常用命令记录
- Excel 处理单元格中文字间空格问题。
- 《笨办法学python》加分习题6——我的答案
- MySQL锁详解
- IOS块与多线程
- STM8S汇编入门(1-3)
- 深入理解ArrayList
- 从0开始搭建阿里云(腾讯云)ubuntu16.04 nodejs + nginx + mysql + pm2 服务(三、搭建mysql环境)
- Windows常用快捷键