2017-11-23 13 views
0

問題は私たちのプロジェクトに外部の変更を統合する必要があり、それらの外部ファイルはGitを使用しません。 Gitは新しいbrach( 'their'は 'dev'から派生したもの)にコードを貼り付け、これらの変更を新しいブランチ(merge-test)でマージしようとしたので、Fast Forwardマージ(単純置換)ブランチには最新の開発者のHEADがあります。これらの変更がGit内のローカルリポジトリを使用して行われた場合(例えば再帰的)には、代わりに矛盾の解決を適用する必要があります。Gitで同じヘッドで早送りせずにマージする最良の方法

マージコマンドで選択するマージ戦略はありますが、使用していないので、ここでマージするのが最も安全なコマンドは何ですか?これは--no-ffフラグに関する質問ではないことに注意してください(コミット時の表記調整のためだけだと思います)。私が間違っているなら私を訂正してください。

ありがとうございました。

+0

"マージテスト"ブランチを作成するときは、最新のブランチではなく、相手が作業を開始したポイントからブランチをブランチします。 Gitは、SVNとは違って、コンフリクトに対して3-wayマージを行います。適切な基盤がなければ、 "conflict"は表示されません。 – Ferrybig

+0

お返事ありがとうございます。悲しいことに、私は公開しようとしたときに相手方のコードでgitブランチを持っていませんでした: _those外部ファイルはGit._ –

+0

を使用しませんこの場合、gitはマージを手助けすることはできません。 diff file1 file2'を使用して差分を作成し、「手動マージ」 – Ferrybig

答えて

0

これは私が見つけたと(例えば、ネーミング・で)私のために働いていたソリューションでした:彼らの貼り付けgit checkout --orphan external-project-flow(これが正常にファイルを指定せずに、新しいブランチを作成し、完全に空の歴史をコミット)

  • を実行

    1. (私たちと同じファイル階層を持つ)コードをそのブランチに追加し、コミットします。 git checkout -B merge-test
    2. マージの実行::git merge external-project-fow
    3. はバック
    4. devブランチそこから新しいブランチを作るのチェックアウト。これは、私が探していた早送りのマージではなく、再帰的なマージをもたらしました。これはまた、衝突ラインが示すファイルに追加されます。

    私はこのコンプリート手法をあきらめました。コンフリクトが多かったので、私はアプリケーションが失敗しないようにしました。代わりに、別のdevベースのブランチから手動で統合ファイルを手動でファイルに適用することを検討しました。しかし、少なくとも私はまだmerge-testからの変更を特定のGUIを使って見ることができます(実際にはそのブランチをチェックアウトせずに)。

  • 関連する問題