두 개의 텍스트 파일을 "병합"하려면 어떻게합니까?


13

최근 Ubuntu 12.04에서 12.10으로 업그레이드했으며 어느 시점에서에서 Apache 구성 파일 충돌이 발생했습니다 apache2.conf. 그 시점에서 병합 옵션을 제공하지 않았으므로 새 파일을 거부하고 설치 프로그램이 새 파일을로 저장했습니다 apache2.conf.dpkg-dist.

나는 두 파일을 비교하여 diff apache2.conf apache2.conf.dpkg-dist다른 줄을 얻을 수 있습니다. 그러나 SVN 또는 git에서 병합 충돌을 해결하는 방법과 같은 두 가지 종류를 수동으로 병합하고 싶습니다. 어떻게해야합니까?


적절한 파서가 없으면 수동으로 만 병합 할 수 있습니다
daisy

답변:



2

버전 제어는 충돌을 해결할 때 더 많은 정보를 사용할 수 있습니다. 버전과 다른 사람의 버전뿐만 아니라 공통 조상도 있으므로 3 방향 병합을 수행 할 수 있습니다 . 여기에서 공통 조상은 배포판의 구성 파일의 원래 버전이거나 변경 사항과 마지막으로 병합 한 공식 버전입니다.

불행히도 우분투 나 내가 아는 다른 주요 배포판은 구성 파일이 업데이트 될 때 3 자 병합을 완벽하게 수행하지 않습니다. 그러나 etckeeper를 사용 하면 가까이 갈 수 있습니다 . Etckeeper/etc버전 관리 시스템 (Bazaar, Darcs, Git, Mercurial)에서 관리하는 데비안 및 파생 제품에서 사용하는 패키지 관리 도구 인 APT의 애드온입니다 . Fedora의 Yum을 포함한 다른 시스템으로 포팅되었습니다. etckeeper를 사용하는 것이 좋습니다. 또한 변경 사항을 추적 할 수있는 좋은 방법이기도합니다 /etc.

일부 프로그램은 ucf를 사용하여 구성 파일을 관리 하지만 사용자가 제어 할 수있는 것은 아닙니다.

보다 일반적으로 상위 버전과 두 가지 버전이있는 경우 RCS 와 함께 merge제공 되는 유틸리티 또는 diffutils 에서 3 방향 병합을 수행 할 수 있습니다 .diff3 -m

또한 대화 형 diff 및 merge 프로그램도 많이 있습니다. 대부분의 diff 뷰어 와 마찬가지로 Emacs와 Vim은이를위한 인터페이스를 가지고 있습니다 .


1

내가 가장 좋아하는 것은 kdiff3-우분투 버전이 있는지 모르겠습니다. 홈페이지 에 따르면 qt 만 사용 합니다 .

이 도구를 사용하면 두 개 또는 세 개의 파일을 새 파일로 병합 할 수 있습니다. 각 차이의 측면을 선택하거나 수동으로 충돌을 해결하십시오.


현재 (15.04) 우분투 kdiff3kdiff3-qt
mchid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.