git을 사용하여 특정 파일의 변경 사항을 확인하십시오


472

git diff명령을 사용하여 변경 사항을 확인할 수 있지만 이해하는 한 디렉토리 기반입니다. 이는 현재 디렉토리에있는 모든 파일의 모든 변경 사항을 제공함을 의미합니다.

하나의 특정 파일에서 변경 사항 만 확인하려면 어떻게합니까? 예를 들어 파일 file_1.rb, file_2.rb..., 을 변경 file_N.rb했지만 파일의 변경에만 관심이 있습니다 file_2.rb. 커밋하기 전에 이러한 변경 사항을 어떻게 확인합니까?



4
내 주요 질문은 모든 변경 사항을 커밋하기 전에 특정 파일의 차이점을 확인하는 방법입니다. 힘내 로그는 내가 저지른 변경 사항에 대한 것입니다.
Mellon

1
내 경험상 GitKraken
Giovanni

답변:


642

다음과 같은 명령을 사용하십시오.

git diff file_2.rb

차이점을 얻을 수있는 종류에 대한 자세한 내용은 git diff설명서 를 참조하십시오 .

일반적으로 현재 디렉토리 만이 아니라 git diff전체 저장소 의 모든 변경 사항이 표시됩니다 .


100
이미 "git add"한 파일의 변경 사항을 보려면 "git diff --cached"입니다.
Ana Betts

8
이전 커밋에 대해 파일을 확인하려면 $ git diff [commit hash] file_2.rb
Alex Angelico

2
diff view에서 나가는 방법?
Garry

1
또는 SourceTree를 사용하십시오.
GeneCode

4
@GurpreetsinghDhanju는 Q 눌러보십시오

110

다른 방법 ( 이 SO answer 에서 언급 됨 )은 터미널에 기록을 유지하고 파일 자체에 대한 매우 깊은 기록을 제공합니다.

git log --follow -p -- file

파일의 전체 히스토리가 표시됩니다 (이름 변경 이후의 히스토리 및 각 변경마다 차이가있는 히스토리 포함).

즉, bar라는 파일 이름이 foo로 이름 지정된 경우 git log -p bar (-follow 옵션없이)는 파일 이름이 바뀐 지점까지만 파일 기록을 표시합니다. foo로 알려진 파일의 기록. git log --follow -p bar를 사용하면 파일이 foo라고 알려진 파일의 변경 사항을 포함하여 파일의 전체 기록을 표시합니다.


3
--stat와 잘 작동하여 추가 / 삭제 된 행의 개요를 갖습니다.
Tom Hale

2
예,이 답변은 최소한 순위가 높아야하며 현재 diff뿐만 아니라 기록을 추적하거나 모든 커밋 해시를 추적하지 않아도됩니다. 아주 간단한 사용법이지만 매우 강력한 변경 사항
Ilhicas

87

gitk [filename]변경 로그를 보는 데 사용할 수 있습니다


2
이것은 파일에 대한 커밋 히스토리를 보여 주며 때로는 필요할 수도 있습니다.
r1k0

26

아래 명령을 사용하여 파일에서 누가 무엇을 변경했는지 확인할 수 있습니다.

git blame <filename>


4
이것은 누가 어떤 변경을했는지, 언제 어떤 변경을 커밋했는지를 알려주는 가장 좋은 대답입니다. 특정 변경 사항을 필터링하려면 짧은 값이있는 git blame <filename> | grep <searchfor>위치를 수행하십시오 <searchfor>. 예를 들어, 변경 누구인지 찾기 위해 foobardist/index.php, 당신은 사용합니다git blame dist/index.php | grep bar
Kraang 국무

15

당신은 실행할 수 있습니다

git status -s

수정 된 파일 이름이 표시되고 관심있는 파일 경로를 복사하여 다음을 사용하여 변경 사항을 볼 수 있습니다. git diff

git diff <filepath + filename>

8

특정 파일 변경에 대한 세부 정보 만 커밋하려면

git log --follow file_1.rb

동일한 파일에 대한 다양한 커밋 간의 차이점을 나열합니다.

git log -p file_1.rb

커밋과 메시지 만 나열하기 위해

git log --follow --oneline file_1.rb

5

당신은 또한 시도 할 수 있습니다

git show <filename>

커밋의 경우, git show 는 로그 메시지와 텍스트 차이 (파일과 커밋 된 버전 사이의 파일)를 표시합니다.

자세한 내용은 git show Documentation 을 확인할 수 있습니다 .



0

@Greg Hewgill에 전적으로 동의

경로에 공백이 있으면 아포스트로피 '또는`

자식 diff '내 프로젝트 / 내 폴더 / 내 하위 폴더 /file_2.rb'

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