web-dev-qa-db-ja.com

gitサブツリーエラー「致命的:無関係な履歴のマージを拒否する」

'gitsubtree'がどのように機能するかを理解しようとしています。 このページ のすべての指示に従いましたが、自分のリポジトリでサブツリープロジェクトをマージしようとすると常にエラーが発生します(「ステップ2」):fatal: refusing to merge unrelated histories

この投稿 を読みましたが、--allow-unrelated-historiesオプションを使用すると、正常に機能しているようです。ただし、これを使用する必要があるかどうかはわかりません...サブツリーの全体的なポイントは、1つのリポジトリ内に無関係な履歴があることであるため、オプションを追加する必要があるのは奇妙に感じます。それでも追加する必要がありますか、それとも何か間違ったことをしていますか?

私はosx10.11.6でgitv2.9.3を使用しています

9
Matthijs
3
daurnimator

サブツリーが--squashを使用して追加された場合、プルするときに--squashも使用する必要があります

git subtree pull --prefix=<folder-goes-here> <remote-goes-here> <branch-goes-here> --squash

13
PencilBow

私はしばらくこれに苦労していて、解決策を見つけたと思います。

私はgitを初めて使用するので、間違った名前を使用した場合はご容赦ください。

この問題は、git subtreeaddコマンドを実行したときに--squashオプションを使用したことが原因である可能性があります。

サブツリーを削除してみてください(リモートリポジトリを削除し、すべてのローカルファイルを削除し、コミットして、プッシュします)。次に、--squashオプションを指定せずにサブツリーの追加をやり直します。

次に、サブツリーリポジトリにジャンプし、いくつかの変更を加え、コミットしてプッシュし、メインのスーパープロジェクトリポジトリに戻って、gitサブツリーをプルしました。作業ツリーに変更があることについてエラーが発生しました。それを回避するために、私はgitチェックアウトマスターを実行し、次にgit Pushを実行してから、サブツリープルを再試行しました。機能した。

お役に立てば幸いです。

2
Cyrus

私は専門家ではありません。

しかし、私は何かを見つけました。私はもともと通常のプルを試していました。しかし、私はこの特定のサブツリープルを見つけました。

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/

0
granadaCoder