従来のVCSでは、ビルドを壊す可能性があるため、未解決のファイルをコミットしない理由を理解できます。ただし、DVCSで未解決のファイルをコミットしない理由を理解できません(実際には、ファイルのコミットを妨げるものもあります)。
代わりに、リポジトリをプッシュおよびプルからロックする必要がありますが、コミットしないでください。
マージプロセス中にコミットできることには、いくつかの利点があります(私が見ているように)。
- 実際のマージの変更は履歴にあります。
- マージが非常に大きい場合は、定期的なコミットを行うことができます。
- 間違えた場合、(マージ全体をやり直すことなく)ロールバックするのがはるかに簡単になります。
- ファイルは、解決済みとしてマークされるまで未解決としてフラグを立てたままにすることができます。これにより、プッシュ/プルが防止されます。
単一の変更セットではなく、変更セットのセットをマージとして機能させることもできます。これにより、などのツールを引き続き使用できますgit rerere
。
それでは、なぜ未解決のファイルで眉をひそめたり、予防したりするのですか?伝統以外の理由はありますか?
hg 1.6
マージ後、ファイルは未解決としてマークされます。 hg
うではない(必ずしもあなたが実際にそれらを解決する必要が意味するものではありませんが、私はそれはアイデアだと仮定します)解決として、あなたがそれらをマークしているまで、あなたがコミットしてみましょう。
hg
実際には「解決済み」のフラグが付いているファイルと付いていないファイルのリストを保持します(を使用hg resolve
)。U
このリストにファイルがある場合、コミットできません。
hg resolve
競合とのマージに特に使用されます。selenic.com/mercurial/hg.1.html#resolveを参照してください。Note that Mercurial will not let you commit files with unresolved merge conflicts. You must use hg resolve -m ... before you can commit after a conflicting merge.