![`git diff`는 `diff`와 관련이 있나요?](https://rvso.com/image/109224/%60git%20diff%60%EB%8A%94%20%60diff%60%EC%99%80%20%EA%B4%80%EB%A0%A8%EC%9D%B4%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
git diff
와 연관되어 있는 diff
?
git diff
을 기반으로 구현 됩니까diff
?~이다명령줄 구문
git diff
비슷하다그것의diff
? 하나를 배우는 것이 다른 하나를 사용하는 데 도움이 됩니까?출력 파일이 동일한 형식을 따르고 있습니까?
git patch
및 에서 둘 다 사용할 수 있습니까patch
? (있나요git patch
? 와 어떤 관련이 있나요patch
?)
감사해요.
답변1
파일 형식은 상호 운용 가능합니다. Git은 가장 좋은 형식인 diff -u
. 또한 추가 유형의 변경을 나타내기 위해 이를 확장합니다.
에 해당하는 것은 patch
입니다 git apply
. 인덱스의 변경 사항을 준비하고 이를 작업 트리에 적용합니다.
참조 문서에서는 명시적인 비교를 하지 않는 것 같지만, 나는 git apply
보다 엄격했던 것을 기억합니다. patch
활성화 또는 비활성화할 수 있는 여러 테스트/오류가 언급되어 있습니다.
참조 문서에서는 특정 옵션을 사용하는 경우 git 저장소 외부에서도 "GNU 패치 대체"로 사용할 수 있다고 제안합니다.
답변2
git-diff는 diff보다 더 많은 기능을 제공하며 diff는 다음과 같은 라인을 생성하기 때문에 출력 패치가 상호 운용 가능하다고 생각하지 않습니다(몇 가지 추가 옵션 없이).
diff -ruNa dir1/file1.txt dir2/file1.txt
git-diff는 다음과 같은 라인을 생성합니다.
diff --git a/dir1/file1.txt b/dir2/file1.txt
(소스 및 대상 접두사, 로 전환 가능 --no-prefix
및 다양한 옵션에 유의하세요)
git-diff의 몇 가지 추가 기능은 다음과 같습니다.
이동/이름이 변경된 파일을 기록할 수 있는 동시에차이점은 할 수 없습니다
재귀 모드, 통합 diff를 사용하고 기본적으로 새 파일/삭제된 파일을 처리합니다(
diff -ruN
).차이점을 찾기 위한 다양한 알고리즘 지원
바이너리 데이터를 ASCII로 인코딩하는 git 바이너리 패치 지원