2016-05-08 2 views
4

わからないが、1つのリポジトリを親リポジトリとして使用するにはどうすればよいですか?タイトルは右の文言されている場合

私はリモコンとしてAとBを設定しているBでrepo-Arepo-B

を持っています。
Bはいくつかの追加ファイルでAを拡張したもので、Aからの変更でBを定期的に更新したいが、追加のBファイルをAにプッシュしないとします。

これが可能です。この

+0

「Bに私はリモコンとしてAとBを設定している」Bが自身のリモートであるように、私はこれを読ん。それは意味をなさない。打ち間違え?とにかく、あなたが何を記述しているのかは、ブランチでうまくいくことができます。彼らは別のレポスでなければなりませんか? – Schwern

+0

@Schwern:それは誤字であってはいけません。なぜそれは意味をなさないのでしょうか?私はこの場合分岐したくない。それは複雑です:)「コミュニティ版」と「プレミアム版」を考えてください –

+0

「私のローカルリポジトリではAとBをリモコンとして設定しています」という意味だと思います。おそらく、gitコマンドを使って何をしたのか説明する必要があります。 – Schwern

答えて

2

別のリポジトリを持っている特定の要件がありますない限り、何を記述していると、枝として行わ優れています。 BはA.の枝であり、他の枝と同じようにgit merge Aまたはgit rebase AのいずれかのBを更新します。ここから私は合併を仮定します。これは、マージでどのように見えるかです。

1 - 2 - 3 - 6 - 7 - 10 - 12 - 13 [A] 
      \  \    \ 
      4 - 5 - M - 8 - 9 - 11 - M - 14 [B] 

別々のリポジトリである必要がある場合は、リモートブランチでも同じことを行います。あなたが直接制御できないプロジェクトを拡張しているときに、これを使うかもしれません。物事を少し明確にするために、Aを "上流"、Bをあなたのレポジトリと呼ぶことにしましょう。 AはBの上流にあり、Bは上流から引っ張り出すだけで後退しない。

最初にAをクローンし、origin(A)の名前をupstreamに変更します。

  • git remote rename origin upstream
  • git clone A

    • は、その後、あなたがリモートで変更内容を保存し、それをプッシュする新しい原点を追加します。

      • git remote add origin <url to your remote>
      • git push origin

      今、あなたはこれを持っています。 3つのブランチはすべて同じコミットを指していることに注意してください。

      1 - 2 - 3 [master] [origin/master] [upstream/master] 
      

      正常に作業し、正常にコミットし、元に戻します。ここに2つの新しいコミットとプッシュがあります。

      1 - 2 - 3 [upstream/master] 
           \ 
            4 - 5 [master] [origin/master] 
      

      最初にgit fetch upstreamを更新する場合。これはあなたの地元の支店を変更することはありません、それは上流のもののあなたのコピーを更新するだけです。上流のマスターブランチに2つの新しいコミットがあるとしましょう。

      1 - 2 - 3 - 6 - 7 [upstream/master] 
           \ 
            4 - 5 [master] [origin/master] 
      

      さらに、他のブランチのようにマージする:git merge upstream/master

      1 - 2 - 3 - 6 - 7 [upstream/master] 
           \  \ 
            4 - 5 - M [master] [origin/master] 
      

      これは、git pull upstream masterという1つの手順で実行できます。

      これを行うには続行し、分岐鎖状のだろうかのように、あなたは同じことをする羽目になるだろう。

      1 - 2 - 3 - 6 - 7 - 10 - 12 - 13 [upstream/master] 
            \  \    \ 
            4 - 5 - M - 8 - 9 - 11 - M - 14 [master] [origin/master] 
      

      重要なものは以下のとおりです。

      • リモート枝だけの支店です。
      • 上流からプル:原点git pull upstream
      • プッシュ:git push origin
    1

    を行うための最善の方法は、はい、あなたはそれを非常にシンプルに何ができるかです:私はリモコンとしてAとBを設定しているBでは

    これは、あなたが単にあなたのプロジェクトにリモコンのための任意の数を追加し、あなたがしたい任意の方法でそれらを使用する必要が

    をしなければならなかったまさにです。 (1にプッシュして、他のものから引っ張るなど)。

    リポジトリは、リポジトリが話すことができるURLであり、どのように使用するかを決めることができます。オリジナルのレポ

  • は今、あなたは2つのリモコンから枝を引くとマージすることができ、単一のレポ
  • 内側両方のリポジトリからのコードを使用して新しいリモートgit remote add <origin2> <url2>

  • を追加

    • クローンと両方のコードを単一のリポジトリに持っています。

      下の画像に示すように、大きなリポジトリを構築する2つのリポジトリがあります。

      # clone first repository 
      git clone <repo1> 
      
      # add remote 
      git remote add <remote2> <url2> 
      
      # display the list of all the remotes 
      git remote -v 
      

      と私は定期的にAからの変更とBを更新したいが

      に追加Bファイルをプッシュしていないあなたは、この時点でなければならないすべて単にAからの変更を引き出すことです。

      # make sure you are on the branch from repository B 
      git pull origin A <branch> 
      
      # now you have all the changes from A in your B branch 
      

      enter image description here

  • 関連する問題