전통적인 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.