繁体   English   中英

git将远程跟踪分支添加到裸仓库

[英]git add remote tracking branch to bare repo

  1. 我有一个从git.drupal.org克隆的裸仓库。
  2. 我已经从这个简单的回购克隆到各种不同的网站。
  3. 从这些中,我将特定于站点的分支推送到裸仓库。

例如,如果我有foo.org和bar.org,那么我的裸仓库有drupal的分支+一个名为foo,一个名为bar。

我的想法是,我可以充分利用git的硬链接来节省本地克隆的磁盘空间。 我以为我会保留从git.drupal.org获取的裸仓库,并将更改下载到我的本地副本,foo和bar。 然后,当更新出现时很容易。

bare-repo$ git fetch >/dev/null ; git branch -a
* 7.x
  foo
  bar
  remotes/origin/7.x
  remotes/origin/8.x

foo和bar从分支7.x开始,但我想将它们更新为7.8,例如通过git rebase 7.8但是这会失败:

fatal: Needed a single revision
invalid upstream 7.8

foo和bar不能'看到'裸机壳的遥控器。 我能做什么?

你需要一个工作文件夹来进行rebase。 所以你需要克隆这个仓库,然后做你需要的。 之后,将修改后的分支推回到裸仓库。

或者,您可以指定工作目录git --work-tree=../somedir rebase 7.8 遗憾的是,git命令的worktree和git dir选项并未完全针对所有命令实现。 第一种选择是最好的。

Rebase需要一个工作目录,因为它需要在遇到冲突时让你控制。 然后,您可以修复冲突并发出git rebase --continue命令,让它在新基础上应用其余的提交。

希望这可以帮助。

2点,如“ git rebase fatal:Needed a single revision ”中所述:

  • 你需要指定一个分支的名称,在你的情况下将是origin/7.8 ,而不是7.8
git rebase origin/7.8

应该管用。

  • 您不能重新绑定到不包含最初创建当前分支的提交的分支。 (所以请确保你的回购是这样的)

OP artfulrobot报道:

git rebase origin/7.8 
fatal: Needed a single revision invalid upstream origin/7.8

我回答说:

如果原点中没有7.8作为分支,则会出现此错误消息。
也许7.8 ' origin '回购中的标签
在这种情况下, 您需要首先显式获取所述标记

git fetch --tags origin

然后rebase应该工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM