私の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