簡體   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