- 浏览: 436047 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
weiwu83:
为什么我在手机内访问127.0.0.1访问不了呀
NanoHttpd 构建android 手机端的HttpServer -
jiae:
为啥我的插入语句乱码? 但是可以插入数据库 然后复制你 ...
SQLite3 在应用启动时初始化数据 -
lichenxiao77:
...
android 连接远程数据库 -
林源滔:
为什么我make clobber之后第一次执行make 可以。 ...
No rule to make target `out/target/common/obj/JAVA_LIBRARIES/bouncycastle_in -
cn23snyga:
new String(str.getBytes("I ...
android 平台上SQLite3中文乱码 --我的小bug
基本操作
创建和销毁
分支列表:
$: git branch * master prepub product
创建分支:
$: git branch prepub
切换已有分支:
$: git checkout prepub Switched to branch 'prepub'
创建并切换分支:
$: git checkout -b issue1234 Switched to branch 'issue1234'
删除分支:
$: git branch -d issue1234 Deleted branch issue1234 (was b904c07).
合并和冲突
合并前要先切回 要并入 的分支。
以下表示issue1234
分支合并入master
分支
$: git checkout master $: git merge issue1234 Merge made by recursive. README | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
冲突的时候,git会报出哪些文件冲突,这时候需要手动解决完冲突方可提交。
$: git merge issue1234 Auto-merging index.html CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.
通过git status
查看冲突文件。
$: git status index.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 product warning: 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 prepub Counting 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/product Branch 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/product Branch 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 :p4popt To 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了。
|
# 先在v3.0中查看要合并的commit的commit id
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吧。
|
# 合并b
git rebase b # 处理完冲突继续合并 git rebase --continue # 跳过 git rebase --skip # 取消合并 git rebase --abort |
来源: |
发表评论
-
Android.mk文件解析
2016-01-27 14:01 937以 tools/tradefederation/Androi ... -
NanoHttpd 构建android 手机端的HttpServer
2015-10-20 16:24 2947NanoHttpd是Github上的一个开源项目, 通过下载 ... -
permission denial : android.permission.INTERACT_ACROSS_USERS_FULL
2015-08-05 16:50 5046在android5.0上运行 Runtime.getRun ... -
android getprop() 和 java System.getPropety()
2015-06-04 14:39 63581 System.getPropety()是java中的方 ... -
android cts测试相关
2015-05-27 17:38 0example: -
android uiautomator 相关
2015-05-15 16:53 16951 Runtime.getRuntime().exec 启 ... -
android UI test Espresso
2015-04-10 18:31 1202google android UI测试工具 espresso ... -
android 安全(转)
2014-12-26 12:37 721一 如何不被反编译解析1防止反编译工具的反编译 查看 ... -
nexus related
2014-12-17 15:29 7411 nexus drivers https://deve ... -
git related
2014-12-17 15:24 9671 see all detailed git info ... -
ubuntu android studio 配置和使用
2014-12-10 17:34 3627Ubuntu 64位,Android studio 的安装, ... -
eclipse+ADT+android配置相关
2014-12-05 16:40 14531 eclipse 过旧时,ant 运行不了,会报sdk. ... -
anroid 开发小知识点
2014-10-09 09:52 8231 1)代码 获取APK安装路径和包名 L ... -
androird 内存泄露 浅析
2013-06-19 17:52 1449主要是记录工作中出 ... -
No rule to make target `out/target/common/obj/JAVA_LIBRARIES/bouncycastle_in
2013-01-31 10:19 15778在android4.0源码中,mm编译apk时出现下面的错 ... -
java层堆栈调用的打印
2012-12-26 15:14 44711. 在指定的函数内打印相关java调用 Log.d ... -
mms 数据包相关
2012-11-26 14:51 22721 抓包 adb shell tcpdump -i any ... -
sms AT指令返回错误代码: CMS errors & CME errors 的区别!
2012-10-26 18:35 12027CMS的是短信中心的返回错误。 CME 是设备返 ... -
sms 发送 radio log
2012-10-26 17:25 4073发送短信:radio.log 关键字 :SEND_SMS ... -
SQLite --函数
2012-09-03 18:22 1987一、日期和时间函数:原文地址SQLite主要支持以下 ...
相关推荐
本文档收集了Gerrit日常操作中常用的命令,包括创建和销毁分支、合并和冲突解决、管理多个分支等。这些命令对于Gerrit的日常操作非常重要,可以帮助用户更好地管理代码仓库。 一、创建和销毁分支 在Gerrit中,创建...
git+gerrit配置文件和常用命令,完整的gerrit配置和提交代码管理工具描述
Git 和 Repo 是 Gerrit 使用的两个主要工具,本附录中总结了 Git 和 Repo 的常用命令。 附 2:常见错误解决方法 解决 Gerrit 中常见的错误方法,包括解决 Git 和 Repo 的常见错误等。 其他 Gerrit 还提供了许多...
8. Git的常用命令: Gerrit虽然提供了Web界面来辅助代码审查,但大多数功能仍然需要开发者通过Git的命令行来完成,包括提交更改、拉取更新、合并分支等操作。 从提供的内容中可以看出,Gerrit的配置和使用涉及到了...
1. 查看变更记录:使用 Gerrit 服务器页面查看变更记录。 四、常见问题 1. 冲突解决:使用 Git 命令解决冲突,包括查看分支情况、选择分支、fetch 源代码、rebase 源代码、解决冲突、add 操作和继续 rebase。 ...
Gitiles提供了网页界面,使得用户可以直观地浏览项目文件、查看历史记录、比较不同版本之间的差异,并进行其他与代码相关的操作,而无需直接使用命令行工具。 Gitiles的核心功能包括: 1. **源代码浏览**:通过...
在Gerrit的安装目录下,运行`bin/gerrit.sh start`命令。如果一切顺利,Gerrit应该会在指定的端口上启动,并监听HTTP和SSH连接。 现在,我们需要配置Git客户端以使用Gerrit。在你的Git客户端中,设置用户信息,如...
Gerrit是一款强大的Git代码审查系统,用于协作开发和确保代码质量。在Gerrit中,代码提交经历三个主要状态:Open、Merged和Abandoned。 1. **Open状态**: 当开发者提交代码到Gerrit时,它们首先会处于Open状态。...
使用git add命令添加本地库所有未被追踪的文件,使用git commit -m"xxxxx"命令来完成本地代码提交,最后使用git push命令推送代码到Gerrit服务器。 五、代码审核 用户可以将变更提交到Gerrit网站,并进行自我代码...
- 使用Git命令或Gerrit界面将变更推送(push)到Gerrit服务器; - Gerrit服务器接收到变更后,会触发一个审查过程,审查者会查看代码变更并进行评论; - 审查通过后,变更将被Gerrit自动合并到目标分支; - 若...
2. **推送更改至Gerrit:** 使用`git push origin HEAD:refs/for/<branch>`命令将提交推送到Gerrit服务器上指定的分支,等待审核。 **注意事项:** - 确认提交的信息准确无误。 - 推送前先了解目标分支的状态,避免...
Gerrit搭建及权限配置 Gerrit是一款基于Web的代码Review工具,它提供了一个平台来review和validate代码变更。下面是Gerrit搭建及权限配置的详细介绍: 安装JDK 在安装Gerrit之前,需要先安装JDK。可以使用压缩包...
《Gerrit 用户指南》是一本专为Gerrit用户量身定制的详细教程,旨在帮助用户深入理解和熟练使用Gerrit代码审查系统。Gerrit是一款基于Web的开源工具,广泛应用于Git版本控制系统中的代码审核流程,尤其在开放源码...
gerrit-3.6.1安装包
### Gerrit 自动化脚本评审使用说明 #### 一、概述 Gerrit是一款用于协同审查代码的工具,能够帮助团队确保代码质量并优化工作流程。本文档旨在详细介绍如何利用Gerrit进行自动化脚本的评审过程,包括必要的软件...
在IT领域,特别是软件开发和版本控制环境中,Gerrit是一个广泛使用的代码审查系统。它允许团队成员提交代码更改,并由其他成员进行审查,确保代码质量。本篇文档将详细介绍如何在Gerrit系统中添加新用户,以及后续的...
这条命令用于在Gerrit服务器上创建名为`projectA/manifests`的仓库,并添加一个空提交记录。 2. **推送manifest文件到Gerrit服务器**: ```bash $ git init $ git add . $ git commit -m "add manifests file!...
Gerrit.war包是Gerrit Code Review系统的Web应用程序包。Gerrit是一个开源的代码审查和协作代码管理系统,广泛应用于Git版本控制环境中。它提供了便捷的代码审核流程,帮助开发者确保代码质量和团队协作效率。 ...
通过java命令运行gerrit.war文件,并初始化review site。Gerrit默认使用内置的Jetty容器进行服务的启动,可以在Linux和MacOS X系统上自动启动,而Windows系统需要手动启动。 4. 配置Gerrit:Gerrit的主要配置文件是...