Git が何もないと判断したときに、他の人が競合を強制しようとして失敗したようです。
この SO の質問 " Git merge - manual merge - force conflic with WHOLE old and new file version " は、コメントで締めくくられています。
私が最も恐れているのは、「それは不可能です。それはgitの仕組みだからです」という答えです。
そして、「GITワークフローの提案が必要」には、試してみることが言及されています:
*.xml merge=Unset
私の.gitattributes
ファイルに。または、自動マージを失敗
させようとするカスタム マージ ドライバ~/.gitconfig
言い換えれば、それは正しいアプローチではないかもしれません。
マージによって導入されたすべての変更がここにあってはならないことが確実な場合は、次を試すことができます。
git clone yourRepo aCloneRepo
cd aCloneRepo
git merge --no-commit --no-ff origin/source_branch
# simply overwrite any change file by the ones in ..\yourRepo
git add .
git commit -m "merge"
コミットするものが何もない場合でも、最後の " git merge
" は機能することに注意してください (変更されたすべてのファイルの内容を復元するため)。
マージは新しいコミットに記録されます。git status
それはあなたに与えるでしょう:
C:\Users\VonC\prog\git\tests\mergekeep\r4>git lg
* a6a1588 - (HEAD, master) merge (2 minutes ago) <VonC>
|\
| * 1bcd75d - (origin/b) addition (2 hours ago) <VonC>
|/
* 9d2e8fb - (origin/master, origin/HEAD) first file (2 hours ago) <VonC>
ただし、ローカルファイルは変更されていません。
ブランチをマージしようとすると、次のようになります。
C:\Users\VonC\prog\git\tests\mergekeep\r4>git merge origin/b
Already up-to-date.
ただし、その回避策は面倒で、クローンと、ある作業ツリーから別の作業ツリーへの手動コピーまたは再同期が必要です。
さまざまな git reset コマンドやgit update-indexなどの配管コマンドを試してみましたが、あまり成功しませんでした。