4
  1. git.drupal.orgから複製されたベアリポジトリがあります。
  2. この裸のリポジトリからさまざまな異なるWebサイトにクローンを作成しました。
  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は、ベアリポジトリのリモートを「見る」ことができません。私に何ができる?

4

2 に答える 2

2

リベース用の作業フォルダーが必要です。したがって、このリポジトリのクローンを作成してから、必要なことを実行する必要があります。その後、変更されたブランチをベアリポジトリにプッシュバックします。

または、作業ディレクトリを指定することもできますgit --work-tree=../somedir rebase 7.8。残念ながら、gitコマンドのworktreeおよびgit dirオプションは、すべてのコマンドに完全に実装されているわけではありません。最初のオプションが最適です。

Rebaseは、競合が発生したときに制御できるようにする必要があるため、作業ディレクトリが必要です。次に、競合を修正し、git rebase --continueコマンドを発行して、残りのコミットを新しいベースに適用できるようにします。

お役に立てれば。

于 2011-09-27T17:10:10.210 に答える
2

「 gitrebasefatal:単一のリビジョンが必要」で説明されているように、2つのポイント:

  • ブランチの名前を指定する必要があります。あなたの場合はorigin/7.8、ではなく、7.8です。
   git rebase origin / 7.8

動作するはずです。

  • 現在のブランチが最初に作成されたコミットを含まないブランチにリベースすることはできません。(したがって、レポの場合であることを確認してください)

OPartfulrobotは次のように報告します。

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

私が答えたもの:

ブランチとしてオリジンに存在しない場合7.8、このエラーメッセージが表示されます。
たぶん' 'リポジトリ7.8のタグoriginです。
この場合、最初に上記のタグを明示的にフェッチする必要があります。

git fetch --tags origin

その後、リベースが機能するはずです

于 2011-09-28T05:38:46.970 に答える