3

Windows の git 1.8.3 で奇妙なエラーが発生しました。を使用してgit subtree、2 つのプロジェクト間で共有するファイルを取得し、それを別のリポジトリにプッシュしました。

だから、repo1で私はこれをしました:

# push script
git subtree split --prefix=shared-dir --rejoin --branch split
git push shared-repo split:master
git branch -D split

両方のリポジトリでshared-repo、共有コードを含むリモートを指します。共有コードは、同じ名前のディレクトリに存在します。

repo2 で私はこれをしました:

# pull script
git fetch shared-repo
git subtree merge --prefix=shared-dir shared-repo/master

私が期待しているのは、共有ファイルを取得し、ディレクトリの下の repo2 に配置すること./shared-dir/です。何が起こるかというと、ファイルはリポジトリのルートに配置されます!

ファイルを正しいフォルダーに移動し、repo1 のプッシュ スクリプトに似たものをコミットして実行すると、プッシュが早送りされていないことが示されるため、プッシュが拒否されます。プル スクリプトを再度実行すると、すべてが最新であることが示されます。

私は踏みにじられており、インターネットを検索しても、同様の問題を抱えている人は他にいませんでした. 何が問題で、どうすればよいですか?


更新: Ubuntu 12.04 の git 1.7.9.5 でも、git-subtree2 週間前に git リポジトリから取得したスクリプトで同じことが起こります。--prefix=./shared-dir/また、無駄に言うようにコマンドを変更しました。

興味深いことに、ディレクトリをgit subtree作成shared-dirしますが、共有ファイルをそのディレクトリ内ではなくルート ディレクトリに配置します。

4

2 に答える 2