1

リモートブランチと混同しています。

私のローカルリポジトリ:

(local) ---A---B---C-master

私のリモートリポジトリ(intと呼ばれる):

(int) ---A---B---C---D---E-master

私がやりたいのは、intのマスターブランチに従うようにローカルリポジトリのマスターブランチを設定することです。ローカルリポジトリ:

(local) ---A---B---C---D---E-master-remotes/int/master

そのため、intが次のように変更されます。

(int) ---A---B---C---D---E---F-master

git pullローカルリポジトリのマスターから実行して取得できます

(local) ---A---B---C---D---E---F-master-remotes/int/master

これが私が試したことです:

  1. git fetch intintのすべてのブランチをリモートブランチに取得します。intには何百ものブランチがある可能性があるため、これは厄介になる可能性があります。

  2. git fetch int master私にコミットを取得しますが、それへの参照はありませんFETCH_HEAD。リモートブランチもありません。

  3. git fetch int master:new_master動作しますが、更新するたびに新しい名前が必要ではなく、リモートブランチが設定されていません。

  4. git pull int master私が望むことをしますが、それでもリモートブランチのセットアップはありません。そうしても大丈夫だと思いますが(今のところ最高です)、リモートセットアップで十分だとあちこちで読んでいますgit pull

  5. git branch --track new_master int/masterhttp://www.gitready.com/beginner/2009/03/09/remote-tracking-branches.htmlによる。「有効なオブジェクト名ではありません:int/master」が表示されます。git remote -vintが定義されており、正しい位置を指していることを示しています(1.動作しました)。私が見逃しているのはint/masterブランチです。これは、まさに私が取得したいものです。

  6. git fetch in master:int/master。さて、int / masterは作成されますが、リモートではありません。

要約すると、私は運が悪かったものをいくつか試しました。私は2がリポジトリintでマスターするためのリモートブランチを私に与えることを期待します。

私が今使用している解決策はオプション3です。

設定ファイルを手動で変更できるとどこかで読んだのですが、少し面倒ではありませんか?


設定ファイルを編集する「面倒な」方法は機能しました:

[branch "master"]
    remote = int
    merge = master

コマンドラインから実行できます。

$ git config branch.master.remote int

$ git config branch.master.merge master

上記のオプション2が自動的にそれを行わない理由は何ですか?その場合でもgit pull、リモートからすべてのブランチをフェッチします。

4

1 に答える 1

1

まず、作業ツリーに現在の作業がないことを確認してください。

次に、(Git1.7.0以上で)試してください:

git fetch int master
git branch --force -- set-upstream master int/master
于 2010-06-08T18:27:08.903 に答える