[英]git add remote tracking branch to bare repo
例如,如果我有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
應該管用。
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.