programing

마지막 변경 사항에 대한 gitdiff 파일

linuxpc 2023. 5. 26. 20:47
반응형

마지막 변경 사항에 대한 gitdiff 파일

특정 파일이 현재 존재하는 것과 마지막으로 파일을 변경한 커밋 이전에 존재했던 것 사이에 차이를 생성하도록 Git을 얻는 것이 가능합니까?

즉, 우리가 알고 있는 것은 다음과 같습니다.

$ git log --oneline myfile
123abc Fix some stuff
456def Frobble the foos
789dba Initial commit

그리고나서git diff 456def myfile파일의 마지막 변경 내용을 보여 줍니다.작업자가 작성한 지식 없이도 동일한 작업을 수행할 수 있습니까?git log123도에서 무엇이 바뀌었습니까?

이것은 실제로 존재하지만, 실제로는 그것의 특징입니다.git log:

git log -p [-m] [--follow] [-1] <path>

참고:-p단일 커밋과의 인라인 차이를 표시하는 데도 사용할 수 있습니다.

git log -p -1 <commit>

사용 옵션:

  • -p(또한)-u또는--patch)는 deeeeeeppe에 숨겨져 있습니다.git-logman 페이지, 그리고 실제로는 표시 옵션입니다.git-diff와 함께 사용할 경우log 커밋에 대해 생성되는 패치를 커밋 정보와 함께 표시하고 지정된 커밋을 숨깁니다.<path>(이 동작은 다음 항목에 설명되어 있습니다.)--full-diff각 커밋의 완전한 차이가 표시됩니다.)
  • -m병합 커밋이 diff 콘텐츠를 포함하도록 합니다(이 경우 커밋 메시지만 표시됩니다.-p지정되지 않음).
  • -1에는 지정된 파일에 대한 최근 변경 내용만 표시됩니다(-n 1대신 사용할 수 있습니다.-1그렇지 않으면 해당 파일의 0이 아닌 모든 diff가 표시됩니다.
  • --follow이름을 바꾸기 전에 발생한 변경 사항을 확인하려면 이 필요합니다.

파일에 대한 마지막 변경 내용을 사용하지 않고 바로 확인할 수 있는 유일한 방법은 이 방법뿐입니다.git log(또는 유사) 개입 수정사항 수를 카운트하거나 커밋의 해시를 결정합니다.

이전 버전의 변경 사항을 보려면 로그를 스크롤하거나 로그를 시작할 커밋 또는 태그를 지정하면 됩니다. 물론 커밋 또는 태그를 지정하면 올바른 커밋 또는 태그가 무엇인지 알아내는 원래 문제로 돌아갑니다.

크레딧이 지급되어야 하는 크레딧:

  • 나는 발견했습니다.log -p이 대답 덕분에
  • 프란시스코 푸가와 에게 보여준 이 대답에 대한 크레딧.--follow선택.
  • Chris Betti가 언급한 것에 대한 공로를 인정합니다.-n 1옵션과 그것을 언급하기 위한 atko.-1변종의
  • 내가 실제로 문서를 읽고 무엇을 알아내도록 한 스위버 2112에게 공을 돌립니다.-p의미적으로 "means"입니다.
  • 오스카 숄튼이 기본적으로 지적한 것에 대한 공로를 인정합니다.-p병합 커밋에 대한 diff-commit를 표시하지 않습니다.

git diff를 사용하는 방법 중 하나는 다음과 같습니다.

git diff <commit> <path>

그리고 마지막 커밋의 하나의 커밋을 참조하는 일반적인 방법은 실제 HEAD에 대한 상대 경로입니다.이전 커밋을 HEAD^(이 예에서는 123µs가 됨) 또는 HEAD^^(이 예에서는 456def) 등으로 참조할 수 있습니다.

그래서 당신의 질문에 대한 대답은 다음과 같습니다.

git diff HEAD^^ myfile

그래픽 도구를 사용해도 문제가 없을 경우 이 작업은 매우 잘 수행됩니다.

gitk <file>

gitknow는 파일이 업데이트된 모든 커밋을 표시합니다.커밋을 표시하면 목록에서 이전 커밋과의 차이가 표시됩니다.이것은 디렉터리에도 적용되지만 선택한 커밋에 대해 diff할 파일을 선택할 수도 있습니다.매우 유용합니다!

언급URL : https://stackoverflow.com/questions/10176601/git-diff-file-against-its-last-change

반응형