私のGitリポジトリには、同じ内容の2つのファイルalphaとがあります。beta
マスターブランチで削除alphaし、機能ブランチで編集すると、マスターを機能にマージすると、競合について警告が表示されます。を削除してこれを解決するとしalphaます。
次に、を使用して機能ブランチをマスターにリベースするgit rebase masterと、alphaが削除されますが、機能ブランチで行った変更は!alphaに適用されます。beta競合の警告が表示されますが、確認のためにコミットがブロックされることなく、自動マージで問題なく解決されます。
興味深いことに、を実行しgit rebase -iてデフォルトを受け入れると、beta編集されず、マージ時に解決したのと同じ競合を解決できます。
次に、3つの関連する質問:
- 他のファイルがコミットによって編集されていないのに、Gitが1つのファイルに適用した変更を別のファイルに適用する必要があると考えるのはなぜですか?
- このような状況を回避するにはどうすればよいですか?
- デフォルトのオプションを選択した場合でも、インタラクティブリベースの動作が異なるのはなぜですか?
Win7のCygwinでGit1.7.9を実行しています。誰かが自分で詳細を確認したい場合は、空のディレクトリにこれを示すトランスクリプトをpastebinに配置しました(長さのため、ここには投稿しません)。git init