文章目录
1. Gerrit的安装配置
JAVA + Apache + Gerrit
Gerrit安装参考这个
配置文件参考这个
2. 修改某一次提交
场景1——对象(最近的一次提交),操作(追加文件+修改commit信息)
amend,changeId保持一致
场景2——对象(最近的一次提交),操作(撤回某一个文件)
reset --soft
重新推,原来的abandon掉
场景3——对象(非最近一次提交),操作(追加文件+修改commit信息):New Branch方法
目标:对提交1新增一个文件,并且修改它的信息
操作:
- 右键new Branch
- 在新分支里,新增文件,点击amend commit,带上changeId。
- push 记得修改分支名称
- 最终效果:不会产生新的提交,但是对本次提交进行了修改
场景3 延申处理
在上述场景中,由于[第1次提交]在新分支追加提交了,当切回第五次提交时,此时追加提交的记录并不会出现。
个人做法:
- 比较蠢的,但在简单场景下(涉及到的代码不多的情况下)也能解决问题。
checkout到develop分支的最新commit [第5次提交]
从刚刚那笔提交中,cherrypick需要更新的文件,
再commit或者amend一笔提交,不要push到远程就好。
可以解决问题,但是会导致本地仓库的commit比较混乱 - merge 会产生分叉点
checkout到要的最新节点
工具栏,merge目标节点,解决冲突
- rebase 这个应该是标准的做法
跟merge流程一样
场景4—— 对象(某一次提交),操作(撤回其中的一个文件)
-
找到目标提交,在该处new Branch
-
在新分支里,找到要撤回的文件,右键revert
-
选中要撤回的文件,commit 后 push (检查changeId)
-
当要进行rebase时候,本地可能会产生一笔多余的提交可以进行drop commit消除掉
场景5:对象(非最近一次提交),操作(追加文件+修改commit信息): 不需要new branch的方法 使得本地比较干净
比如修改提交六
1.在本地commit提交需要改的东西 记住一定不要push到远程
2.选中第六笔提交,右键 选择interactive rebase here
3. 选择合并sqush要合并的提交
4. 再远程push就好