2013-06-03 3 views
8

을 사용하여 두 파일을 병합 다음과 같이 임시 파일에 두 파일은 diff 및 수동 수동 DIFF

  • 내가 원하는 라인을 선택

    1. 출력 복사/저장.

    여기서 문제는 diff -u이 전체 파일을 통합 된 형식으로 출력하고 싶을 때만 파일 줄을 제공한다는 것입니다.

    diff가 수행 할 수있는 방법이 있습니까?

  • +0

    난에 정력을 사용하여 같은 사람들이 많이 알고 diff 모드를 사용하고 있으며 세 개의 버퍼 (old, merge, 'new')를 더 잘 작동시키는 몇 가지 플러그인이 있습니다. – demure

    +0

    무엇이 문제입니까? 가지고 싶지 않은 패치 부분을 삭제 한 다음 파일을 패치하십시오. [git cherry picking] (https://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html)에 대해서도 유의하십시오. 이것은 정확히 당신이하고 싶은 일입니다. – hek2mgl

    답변

    6

    "전체 파일을 통일 된 형식으로 출력하고 싶습니다. diff에서 수행 할 수있는 방법이 있습니까?"

    예.

    diff -U 9999999 file1.txt file2.txt > diff.txt 
    

    파일 크기가 1 천만 라인 미만인 경우에만 작동합니다. 당신을 위해 법안을 맞는 수도

    10

    하나 개의 옵션,

    sdiff : 파일의 나란히 DIFF. 일단 거기

    sdiff -o merged.file left.file right.file

    , 당신이 어떤 파일에서 유지하기 원하는 라인하라는 메시지를 표시합니다. 약간의 도움을 받으려면 ?을 누르고 나서 enter을 누르십시오. 자세한 상품과 함께 man sdiff.

    이 (내 배포판에서 이들은 "Diffutils의"패키지로 제공 [페도라, CentOS는])

    당신이 프로세스를 자동화해야하는 경우에 충돌을 표시합니다 UTIL merge을 시도 할 수도 있습니다 파일들. 그러나 그것은 사각형 하나에 다시 넣을 수 있습니다.

    0

    쉬운 대답은 파일을 병합하고 차이를 C 스타일 #ifdef 문으로 둘러싸 기 위해 -D 플래그를 사용하는 것입니다. 문서에서

    :

    $ diff -D NEWSTUFF file1 file2 > merged_file 
    

    나는 보통 다음 그냥 편집기에서 병합 된 파일을 열고 손으로 병합 충돌을 해결 다음과 같이

    -D NAME --ifdef=NAME 
          Output merged file to show `#ifdef NAME' diffs. 
    

    당신은 그것을 사용할 수 있습니다. 또한 출력 발기 부전 스크립트 옵션을 사용할 수 있습니다

    0
    당신은 병합 할 수 있습니다

    /사용 DIFF와 함께 두 개의 파일을 결합 -

    diff --line-format %L file1 file2