1. 拷贝远程库
在 Git bash 中,使用以下命令拷贝远程库:
git clone review:<repository_name>
<repository_name> 是远程库的名称,例如:远程库叫 "ProjectA",使用以下命令:
git clone review:ProjectA
但是,如果使用的是 Tortoise 将不能使用这种简写的形式,得使用 URL 链接:
ssh://<username>@<Gerrit_host_name>:29418/ProjectA
注意:以上步骤并不能把 ProjectA 直接下下来,而是建立了连接,后面还需若干步骤来下载代码。
2. 建立“钩子”
你需要取得 Gerrit 的 Change-Id 的钩子(hook)。使用 Git bash 输入以下命令:
# 进入到刚才拷贝下来的远程库目录 cd ProjectA # 从 server 上下载 “钩子” scp -p review:hooks/commit-msg .git/hooks/
一个叫 "commit-msg" 的文件会被下载下来。
hooks 实际上是包含一系列命令的脚本,该脚本在 commit 时会被自动调用,你可以在服务器上放置这样的脚本,以统一客户端的提交行为 (或者其它需要统一的事情 )。
3. 可视化组件
git 有一个可视化工具:gitk,它可以展示每次的提交,也可以看到哪些被 merge ,以及 branch 上的情况,在命令行下输入以下命令:
# 显示当前所在分支( Branch )上的所有提交 gitk # 显示所有分支的所有提交 gitk --all
4. 创建跟踪分支(Tracking Branches)
在第 1 步中的 git clone 命令会自动在本地创建一个叫 'master' 的分支跟踪远端库中的 master (即 'origin/master' )。而后可以使用 git branch 在本地创建分支来跟踪服务器上的远端分支( Remote Branches )。我们称这种本地分支为 Tracking Branch 。创建跟踪分支的命令如下:
git branch <tracking_branch> -t origin/<remote_branch>
例如:
git branch 1.0.0 -t origin/1.0.0
以上命令为:在本地创建 1.0.0 的分支来跟踪远端 1.0.0 分支( 即 'origin/1.0.0 )。然后,可以使用 checkout 命令将当前目录切换到 1.0.0 上去。
git checkout 1.0.0
以上两步可以合并为一步,创建 Tracking Branch 同时切过去:
git checkout -b 1.0.0 -t origin/1.0.0
注意:与 SVN 不同,checkout 在 git 中不是签出,而是切换到指定分支。签出是 git pull 。
5. 从 server 上更新
如果要从 server 上签出更新。首先,切换到想签出的分支上(如果当前不在该分支上),然后签出:
git checkout 1.0.0 git pull
git pull 针对于 Tracking Branch,对特征分支( Feature Branch ),需使用 git rebase 。
6. 创建特征分支( Feature Branch )
无论何时要对代码进行修改,总是应该先创建特征分支,然后在特征分支上进行修改。
首先,切换到跟踪分支上( 如果当前不在该分支上 ),签出更新:
git checkout 1.0.0 git pull
然后,在该跟踪分支上创建特征分支并切换到上面:
git checkout -b <feature_branch>
例如:
git checkout -b FixForBug1922
此处创建了一个叫 'FixForBug1922' 的特征分支。特征分支的应该总是取有意义的名字,最好能够概括本次修改的目的。远端服务器并不知道这个特征分支的存在,所以如果要对它进行更新,需要使用 git rebase 命令。
7. 备份特征分支
特征分支存于本地,如果需要把它备份到服务器上,使用如下命令:
git push origin +FixForBug1922:features/abc/FixForBug1922
该命令会将特征分支 'FixForBug1922' 备份至服务器,并称之为 'features/abc/FixForBug1922' 。
注意:此处的 '+' 号。在你 rebase 或 修改了本地代码后,希望再次备份时会产生作用。因为这意味着需要抛弃以前提交的备份,服务器需要知道你确切地知道自己在做什么。如果是第一次备份或没做任何修改,则不需要 '+' 号。
如果你要删除某特征分支,也可以选择相应的删除远端的备份:
# 删除本地的特征分支 git branch -D FixForBug1922 # 删除远端的对应备份 git push origin :features/abc/FixForBug1922
注意:删除远端备份也使用 push ,只不过这次将空 push 到了远端。
8. 提交文件
提交分为两步。首先,将要提交的文件加入( add )到临时区域( staging area )。这使你可以选择性提交( git 甚至允许只提交文件内的某些修改,参见 Pro GIT )。与 SVN 不同,无论对修改的还是新增的文件,都需要执行 add 命令。对 EGit 和 Tortoise 来说,当你选者文件并 commit 的时候,add 会被自动执行。
git add file1 git add file2 git commit
如果你十分有把握,目前所有的变化都是要提交的,可以使用一句话的简写:
git commit -a
注意:commit 只是提交到本地库。签入到 server 还需要其它步骤。下一步将看到如何修改提交。
9. 修改/撤销提交
如果是在同一个工作任务中,最好是修改以前的提交。这样在 code review 时因为只有一次提交需要审查,可以减少审查者的工作量。甚至在 review 以后,如果修改了代码也要修改前一次的提交( 针对同一次任务 )。因为此时你的修改会被放在同一提交中被 review,所有以前的 comments 都会被保留下来,并且还能比较前后的异同。
git add file1 git add file2 git commit --amend
如果要恢复已修改(但还未添加add)的文件,使用git checkout恢复:
git checkout -- <file_name>
如果要撤销已添加(但还未提交commit)的修改,使用git reset恢复:
git reset HEAD <file_name>
如果要撤回已提交(commit)的修改,使用git revert恢复:
# 恢复到最近一次提交 git revert HEAD # 恢复到指定版本 git revert <commit_id>
10. 重新放置( rebase )特征分支
rebase 会将你的修改重新放置到一个更新的代码基础上。更多详情参见 Pro GIT。
首先,从 server 上更新跟踪分支:
git checkout 1.0.1 git pull
然后重新放置特征分支:
git checkout FixForBug1922 git rebase 1.0.1
以上命令首先切换到特征分支 'FixForBug1922',然后将该特征分支上新的提交( commit )应用到 1.0.1 上去。
有可能会有冲突,如果需要,合并冲突,然后:
git commit git add conflicted/file/1 git add another/conflicted/file git rebase --continue
11. 签入代码,进行 review
代码提交完成后就可以上传代码至 Gerrit 并进行 review。Gerrit 是一款 review 工具,同时它也是中心库。命令如下:
git push origin FixForBug1922:refs/for/1.0.1/FixForBug1922
注意:如果在 master 上签入,则为:
git push origin master:refs/for/master
- "git push origin": 告诉 git 上传更改至 server 上的某个 branch 。
- "FixForBug1922:refs/for/1.0.1/FixForBug1922": 告诉 git 将本地的 'FixForBug1922' 的更改提交到服务器上 'refs/for/1.0.1/FixForBug1922' 分支上去。
如果我们不需要 review ,可以将代码提交到 'refs/heads/1.0.1' 分支上。
- "refs/for/1.0.1": 这告诉 Gerrit 有更改需要被 review ,如果 review 通过,代码将被合入到分支 '1.0.1' 中去。
- "/FixForBug1922": 这是一个可选标签,它能将一系列的 review 组到一起( 如果它们确实应该分在一起 )。
注意:你的特征分支是从哪个分支创建的,就要提交到哪个分支上,否则 Gerrit 会认为你想把一个分支上的所有提交都合并到另一个分支上。
12. 向上合并更新
如果要避免一次艰难痛苦的合并,最好的办法是经常合并。
我们应该避免只更新部分版本,并且最好是整个分支的进行合并。基于这个理由我们应该总是向上合并而不是向下合并。
例如:你可以合并整个 '1.0.1' 分支到 'master' ,因为 'master' 应该总是包含了 '1.0.1' 分支中的所有更改,而不应该从 'master' 到 '1.0.1' 分支,因为 'master' 中可能包含了很多不稳定的代码。( 假设 '1.0.1' 已经是一个稳定版本 )
所以,在开发中应该遵循以下原则:
- 经常合并。最理想的情况是每一个稳定的提交都进行合并。
- 如果需要更改( 例如需要修正一个 bug ,该 bug 是先前的分支就有了只是现在才发现 )。从尽可能早的版本开始更改,合并。
- 沿着版本号挨个向上合并。例如:合并从 1.0.1 -> 1.0.2 -> 1.0.3 -> master ;而不是直接从 1.0.1 -> master 。
- 不要挑着更改,合并。
合并命令如下:
# 切换到目标分支 git checkout master # 创建并切换到特征分支 git checkout -b toMergeBugFix1922 # 执行合并 git merge 1.0.1 # 如果出现冲突,解决冲突,然后: # 1. 使用 add 命令告诉 git 我们已经解决了冲突 git add conflictedfile.txt git add conflictcode.java # 2. 提交合并 git commit # 将合并提交 review git push origin toMergeBugFix1922:refs/for/master # 让某些人来做 review
相关推荐
- **安装 Apache2**:使用命令 `sudo apt-get install --reinstall apache2 apache2.2-common` 进行安装。 ##### 1.4 设置反向代理 为了使外部可以通过 Apache2 访问到 Gerrit 服务器,需要设置反向代理。 - **...
- **提交到Gerrit**:修改完成后,使用`git push`将代码推送到Gerrit,等待审核。同时,可能需要更新相关的JIRA问题状态。 Gerrit的使用涉及一系列步骤,包括代码的本地开发、版本控制操作、代码审查以及自动化...
Git、Gerrit与JenkinsHudson CI服务器
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
《基于YOLOv8的智慧社区独居老人生命体征监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
Android Studio Meerkat 2024.3.1 Patch 1(android-studio-2024.3.1.14-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/90557060 part2: https://download.csdn.net/download/weixin_43800734/90557056
侧轴承杯加工工艺编制及夹具设计.zip
NASA数据集锂电池容量特征提取(Matlab完整源码和数据) 作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信。
板料折弯机液压系统设计.zip
C6150车床的设计.zip
机器学习之KNN实现手写数字
python爬虫;智能切换策略,反爬检测机制
mpls-vpn-optionA-all
56tgyhujikolp[
GB 6442-86企业职工伤亡事故调查分析规则.pdf
汽车液压式主动悬架系统的设计().zip
2000-2024年各省专利侵权案件结案数数据 1、时间:2000-2024年 2、来源:国家知识产权J 3、指标:专利侵权案件结案数 4、范围:31省 5、用途:可用于衡量知识产权保护水平
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
内容概要:本文档详细复现了金融数学课程作业,涵盖欧式看涨期权定价和投资组合优化两大部分。对于欧式看涨期权定价,分别采用Black-Scholes模型和蒙特卡洛方法进行了计算,并对彩虹期权进行了基于最大值的看涨期权定价。投资组合优化部分则探讨了最小方差组合、给定收益的最小方差组合、最大效用组合以及给定风险的最大收益组合四种情形,还对比了拉格朗日乘数法和二次规划求解器两种方法。文中不仅提供了详细的MATLAB代码,还有详尽的中文解释,确保每一步骤清晰明了。 适合人群:金融工程专业学生、量化分析师、金融数学爱好者。 使用场景及目标:①帮助学生理解和掌握金融衍生品定价的基本原理和方法;②为从事量化分析的专业人士提供实用工具和技术支持;③作为教学材料辅助高校教师讲授相关内容。 其他说明:文档还包括了完整的论文结构建议,从封面页到结论,再到附录,涵盖了所有必要元素,确保提交的作业符合学术规范。此外,还特别强调了数据预处理步骤,确保代码可以顺利运行。
脉冲电解射流加工喷射装置设计(1)