'gitsubtree'がどのように機能するかを理解しようとしています。 このページ のすべての指示に従いましたが、自分のリポジトリでサブツリープロジェクトをマージしようとすると常にエラーが発生します(「ステップ2」):fatal: refusing to merge unrelated histories
。
この投稿 を読みましたが、--allow-unrelated-histories
オプションを使用すると、正常に機能しているようです。ただし、これを使用する必要があるかどうかはわかりません...サブツリーの全体的なポイントは、1つのリポジトリ内に無関係な履歴があることであるため、オプションを追加する必要があるのは奇妙に感じます。それでも追加する必要がありますか、それとも何か間違ったことをしていますか?
私はosx10.11.6でgitv2.9.3を使用しています
サブツリーが--squash
を使用して追加された場合、プルするときに--squash
も使用する必要があります
git subtree pull --prefix=<folder-goes-here> <remote-goes-here> <branch-goes-here> --squash
私はしばらくこれに苦労していて、解決策を見つけたと思います。
私はgitを初めて使用するので、間違った名前を使用した場合はご容赦ください。
この問題は、git subtreeaddコマンドを実行したときに--squash
オプションを使用したことが原因である可能性があります。
サブツリーを削除してみてください(リモートリポジトリを削除し、すべてのローカルファイルを削除し、コミットして、プッシュします)。次に、--squash
オプションを指定せずにサブツリーの追加をやり直します。
次に、サブツリーリポジトリにジャンプし、いくつかの変更を加え、コミットしてプッシュし、メインのスーパープロジェクトリポジトリに戻って、gitサブツリーをプルしました。作業ツリーに変更があることについてエラーが発生しました。それを回避するために、私はgitチェックアウトマスターを実行し、次にgit Pushを実行してから、サブツリープルを再試行しました。機能した。
お役に立てば幸いです。
私は専門家ではありません。
しかし、私は何かを見つけました。私はもともと通常のプルを試していました。しかし、私はこの特定のサブツリープルを見つけました。
git subtree pull --prefix myPrefixname https://github.com/subTreeRepo.git master --squash
ここで、masterはもちろんブランチ名です
(から
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/
)