gerrit基于git库新建git库,即fork git 库,或跨库提交,多库提交。

场景:
gerrit 上有project A,A有分支B,需要基于project A新建一个project A1,及分支B1,分支B1代码同B。
步骤:

  1. gerrit上project->create a new project. 填入名称A1,勾选Init empty commit,建立新的project A1。
  2. 新建branch B1,branches,填写branch name:B1。
  3. 终端clone A代码。并进入代码目录。git remote -v 及git remote show查看远程库信息。此时,应该只有gerrit上A的远程代码库名origin(可有不同)及url。本地分支B->origin/B。
  4. git remote add origin_new gerrit仓库A1url。
    其中origin_new可自定义,要与A远程库名区分开。
  5. git remote -v 及git remote show 查看远程库信息。
    此时该文件夹对应A A1两个远程代码库。
  6. git fetch origin_new B1:B2。
    此时会创建本地分支B2对应远程库A1的分支B1,即 origin_new 对应A1库。本地分支B2->origin_new/B1
  7. git checkout B2。
  8. git merge origin/B。
  9. git push origin_new B2:B1
    此方法可用于不同库之间的代码提交。

知识点:

git fetch 用法:
git fetch origin branch1
这个操作是git pull origin branch1的第一步, 而对应的pull操作,并不会在本地创建新的branch。这个命令可以用来测试远程主机的远程分支branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常.
git fetch origin branch1:branch2
首先执行上面的fetch操作,使用远程branch1分支在本地创建branch2(但不会切换到该分支),如果本地不存在branch2分支, 则会自动创建一个新的branch2分支,
如果本地存在branch2分支, 并且是`fast forward’, 则自动合并两个分支, 否则, 会阻止以上操作.

gerrit的权限管理reference。Reference是代码提交的目的地(分支或Tag),Gerrit的权限管理是基于reference进行。默认reference是“refs/heads/”,这个通常不需要修改。"refs/"是控制所有提交的reference。

一般提交要加refs/for/branchname。如git push origin HEAD:refs/for/main_dev。之后需进行review及submit才可进库。
具有管理权限的账户,可直接不加refs/for进行提交,如:
git push origin master
git push origin main_dev:main_dev
这样的提交会直接入库,不需要review及submit。所以要尽量小心。

强制将本地代码与远程库中保持一致。

git fetch --all
git reset --hard origin/master
git pull

主要执行git reset --hard origin/branchname
–hard 强制使本地源码恢复与远程仓库一致;
不加–hard 本地提交与远程仓库保持一致,但是,本地代码没有修改。应该是。

若不小心提交了一些代码进入远程库。记submit。想撤回。只有通过本地代码revert到先前的提交,会生成一条关于revert的新的commit,再push入库。
git revert commit哈希值 或者git revert HEAD^ 退到前一次提交。

reset与revert:
reset 会消除提交历史;
revert 会新生成一个提交记录,表明恢复到哪一次提交。不会删除提交记录。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值