2012-11-19 1 views
17

이전 변경 사항을 먼저 확인하지 않고 2008 년부터 2010 년까지 Visual Studio 프로젝트를 업그레이드 한 실수를 저 지르 았습니다. 이 때문에 거대한 시스템 생성 된 파일 (10k + 줄)마다 4 번째 줄 바뀌 었습니다.git diff에서 다음 수정 된 파일로 건너 뛰시겠습니까?

저는 자주 물건을 자주 체크인하는 것이 좋기 때문에 일반적으로 내 키를 사용하여 변경 사항을 스크롤합니다. 이 경우 시스템 생성 파일의 변경 내용을 스크롤하는 데는 여러 수명이 소요됩니다.

git diff을 수행 한 후 다음 수정 된 파일을 건너 뛰고 모든 파일의 모든 변경 사항을 스크롤하지 않아도되는 방법이 있습니까?

+0

당신은'자식 사랑하는 fileName'를 사용할 수 있습니다. – zbrunson

+0

수정 된 모든 파일을보고 싶습니다. 단지 거대한 파일을 건너 뛰십시오. –

답변

31

기본적으로 git diffless을 통해 출력을 파이프합니다. 따라서 less 명령을 사용하여 다음 헤더를 검색 할 수 있습니다. /^diff을 입력하고 을 입력하십시오.을 입력하여 다음 파일로 건너 뜁니다.

+1

먼저 현재 diff를 종료해야합니까? 현재 diff 내에서 시도했는데 '패턴을 찾을 수 없음'이라고 표시했습니다. –

+1

'/'명령은 현재보고있는 위치에서 검색합니다. 그래서 당신이 그 메시지를 얻으면 출력에서'diff'로 시작하는 더 이상의 행은 없습니다. –

+0

사실, 당신이 정말로하고 싶은 것은 커밋되지 않은 변경 사항을 두 개의 별도 커밋으로 분리하는 것입니다. 'git add large.file.name'을하고 나서'git commit'을하면 남은 모든 변경 사항은 큰 파일이 아닌 다른 파일이됩니다. –

0

다른 옵션은 update-index 명령을 호출하고 하나의 거대한 파일이 변경되지 않은 것처럼 가장합니다. 보다 완전한 예제 here이 있습니다.

1

tig을 사용하는 것이 좋습니다. 그것은 git에 대한 저주 (curses) 인터페이스이고, 아주 좋은 인터페이스입니다.

tig status으로 인덱스 상태를 볼 수 있으며 을 눌러 파일 중 하나에을 입력하면 diff라는 것을 알 수 있습니다. h은 도움말 메뉴를 보여 주지만 vi 바로 가기 기반 인터페이스입니다.

나는 어떤 데비안 기반 배포판에서도 단지 apt-get install 일 수 있다고 생각하거나 링크 된 사이트에서 만들 수 있습니다.

+2

기본적으로'tig'는 파일 사이를 빠르게 이동할 수 없지만 다음 바인딩으로 할 수 있습니다 :'bind diff F :/^ \ + \ + \ +' – VitalyB

+1

@VitalyB 고마워요 - 놀랍게도 거기에는 기본 바인딩이 없습니다. 미래 SOers의 경우 위의 'shift + f'를 사용하여 다음 파일을 검색합니다. 검색이 아니므로 'n'이 다음 파일로 이동하고 'shift + n'이 이전 파일로 이동합니다. – Samaursa

+0

은 "검색 결과이므로" 도 'bind diff'가 작동하지 않습니다.왜 그런지는 모르겠지만, 이것은 작동합니다 :'bind stage F :/^ \ + \ + \'' – Samaursa

3

다른 유용한 명령은 h (에있는 동안 less에있는 동안)을 입력하십시오. 특히

: 당신은 작은 변화가 설정되어있는 경우

      JUMPING 

    g < ESC-<  * Go to first line in file (or line N). 
    G > ESC->  * Go to last line in file (or line N). 
    p %    * Go to beginning of file (or N percent into file). 
    t     * Go to the (N-th) next tag. 
    T     * Go to the (N-th) previous tag. 
    { ( [   * Find close bracket }) ]. 
    } ) ]   * Find open bracket { ([. 
    ESC-^F <c1> <c2> * Find close bracket <c2>. 
    ESC-^B <c1> <c2> * Find open bracket <c1> 
관련 문제