あなたが記述した動作は発生しません。ブランチにファイルを追加して再マージするのは正しい手順です。
Gitは、あなたが「再導入」のコードだということを知っているか気にしません。 gitファイルを追加すると、それ自体が変更になります。だから、同じ名前と内容のファイルが以前に削除されたか、ブランチ上で別の方法で修正されていないか、それ以外のことは関係ありません。実際には存在しないコンセプトをたくさん紹介し、gitの動作を複雑にしています。あなたは
O --- x --- x --- x <--(master)
\
A --- B --- C --- D <--(branch)
、多分A
を持っていた
はfoo/*
を削除しました。あなたは
O --- x -- x --- x -- M <--(master)
\ /
A --- B --- C --- D <--(branch)
を合併し、今
foo/*
の削除は
M
に実施しました。あなたは
branch
O --- x -- x --- x -- M <--(master)
\ /
A --- B --- C --- D --- E <--(branch)
とE
にコミットを追加し、この問題を解決するには、foo/*
でファイルを作成します。あなたはmaster
にこれをマージした場合:
O --- x -- x --- x -- M --- M2 <--(master)
\ / /
A --- B --- C --- D --- E <--(branch)
マージベースがD
です。 D
,E
およびM
のみを調べてM2
を生成する。 E
がfoo/*
でファイルを作成しながらM
は、foo/*
で何もしないので、M2
は、ファイルを取得します。 D
より前の履歴は関係ありません。
これは数え切れないほどのユーザーのために多数のテストで使用されている動作が文書化されているため、作業内容を再確認し、説明どおりに再追加してマージすることをお勧めします。