E.g。如果我有foo.org和bar.org,那么我的裸仓就有drupal的分支+一个名为foo,一个名为bar。
我的想法是,我可以充分利用git的硬链接来节省本地克隆的磁盘空间。我以为我会保留从git.drupal.org获取的裸仓库,并将更改下载到我的本地副本,foo&酒吧。然后,当更新出现时很容易。
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无法“看到”裸仓库的遥控器。我该怎么办?
答案 0 :(得分:2)
你需要一个工作文件夹来进行rebase。所以你需要克隆这个仓库,然后做你需要的。之后,将修改后的分支推回到裸仓库。
或者,您可以指定工作目录git --work-tree=../somedir rebase 7.8
。遗憾的是,git命令的worktree和git dir选项并未完全针对所有命令实现。第一种选择是最好的。
Rebase需要一个工作目录,因为它需要在遇到冲突时让你控制。然后,您可以修复冲突并发出git rebase --continue
命令,让它在新基础上应用其余提交。
希望这有帮助。
答案 1 :(得分:2)
2分,如“git rebase fatal: Needed a single revision”中所述:
origin/7.8
,而不是7.8
:git rebase origin/7.8
应该有用。
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应该工作