13

以下に示す 2 つの git リポジトリがあります。1 つ目は、典型的な python プロジェクトのように構成されています。

foo_repo/
    .git/
    setup.py
    foo/
         __init__.py
         some_code.py
    tests/

bar/
    .git/

foo_repo/foo/ディレクトリをサブツリーとして含めたいのですが、更新をfoo_repo リポジトリから bar に、またはその逆bar/にマージできるようにしたいと考えています。foo_repo/foo/some_code.py

初期設定も悪くない。私が使用するfoo/ディレクトリから:

git subtree --prefix=foo/ split -b export

次に、ディレクトリの内容のみを含む新しいブランチを foo_repo に作成しfoo_repo/foo/ます。これをバーに取り込むには、bar/ディレクトリに移動して次のようにします。

git subtree --prefix=foo/ add ../foo_repo/.git export

foo/すべての準備が整ったので、コード開発を行い、両方のリポジトリを最新の状態に保ちたいと思います。バーから押すと、私は理解したと思います。bar/ディレクトリから:

touch foo/more_code.py
git add foo/more_code.py
git commit -m "more code"
git subtree --prefix=foo/ push ../foo_repo/.git export

次に、foo_repo/ディレクトリから:

git checkout master
git subtree --prefix=foo/ merge export

他の方法でマージすることは、私が立ち往生しているところです。からfoo_repo/:

git checkout master
touch foo/yet_more_code.py
git add foo/yet_more_code.py
git commit -m "yet more code"
???

は、ディレクトリをブランチとマージ???するコマンドです。次に、から:foo/exportbar/

git subtree --prefix=foo/ pull ../foo_repo/.git export

だから私は基本的に、???その場で使えるライン、または同じことをする別のワークフローを探しています. 繰り返してみましたがうまくいきgit subtree --prefix=foo/ split -b export_fooません。

4

1 に答える 1

1

再度分割するとfoo/、このサブツリー用に作成された新しいコミットが、 に既に存在する古いコミットの上に作成されます。これにはexport、必要なマージが含まれます。

git subtree --prefix=foo/ split

オプションを使用する-b場合、ブランチは以前に存在してはならないため、新しいブランチを作成するか、後で強制的に変更する必要があることに注意してください。

于 2013-09-20T20:57:06.880 に答える