17

git-subtreeを使用して、ライブラリ リポジトリをより大きなプロジェクトにマージする方法をテストしています。原則として素晴らしいようです。「git subtree pull」を実行すると、次のようなマージ競合が発生することがあります。

<<<<<<< HEAD
=======
An inserted line from the lib repo
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d

これは、ライブラリ リポジトリで行われた変更のためのもので、ローカルで変更されていないファイルにマージされます。または別の例として、ローカル プロジェクト リポジトリに行を追加しましたが、マージされるサブツリーの一部であるファイルに次の行を追加しました。

<<<<<<< HEAD
Another inserted line
=======
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d

git がこれらをマージの競合として報告するのに、競合として報告された領域が空であるのはなぜですか? それを防ぐ方法はありますか?

これらは簡単に解決できますが、git-subtree ワークフローを台無しにします

4

2 に答える 2

3

これは根本的な問題の解決策ではなく、むしろそれを緩和するものです。
git merge -Xignore-space-change コミットでスペースの変更を無視するために使用できます。

おそらく行末に問題があります。--dry-runマージで代替を試すことができます(オプションgit mergeはありません--dry-run):

$git merge -Xignore-space-change --no-commit --no-ff $BRANCH

実際にコミットする前に変更を確認します。

于 2016-10-26T20:35:43.940 に答える
-3

サブモジュールを使用して共有作業を保持します。調整が必要な共有プロジェクトと非共有プロジェクトで多くの作業を行う場合は、git-slave があります。行末ストレージの不均衡がなくなります。

于 2011-12-30T20:04:51.340 に答える