
gcc
공식 릴리스와 비교하여 특정 브랜치에서 패치를 만들고 싶습니다 . 따라서 안정 릴리스에서 타르볼의 압축을 풀 때 패치를 적용하고 해당 특정 브랜치에 있던 것과 동등한 것을 얻을 수 있습니다.
패치를 생성해야 하는 것은 이번이 처음이므로 이 작업을 수행하는 것도 처음이며, 가장 중요한 것은 소프트웨어의 매우 중요한 부분에 대해 이야기하고 있기 때문에 옵션과 올바른 구문 분석을 얻는 것입니다.
diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch
이것으로 충분하고 최선의 방법입니까?
답변1
예, 이는 패치를 만드는 좋은 방법입니다.
간단히 말해서:
단일 파일에 대한 패치를 생성하려면 명령은 다음과 같습니다.
diff -Naru file_original file_updated > file.patch
어디
-N
: 없는 파일을 빈 파일로 처리-a
: 모든 파일을 텍스트로 처리-r
: 발견된 하위 디렉터리를 재귀적으로 비교합니다.-u
: 통합 컨텍스트의 NUM(기본값 3)줄을 출력합니다.
전체 디렉토리에 대한 패치를 생성하려면:
diff -crB dir_original dir_updated > dfile.patch
어디
-c
: 복사된 컨텍스트의 NUM(기본값 3)줄을 출력합니다.-r
: 모든 하위 디렉터리를 재귀적으로 비교합니다.-B
: 줄이 모두 비어 있는 변경 사항을 무시합니다.
결국 이 패치를 적용하려면 실행할 수 있습니다.
patch -p1 --dry-run < dfile.patch
여기서 스위치는 p
패치에 경로 접두어를 제거하여 파일이 올바르게 식별되도록 지시합니다. 대부분의 경우 이어야 합니다 1
.
--dry-run
화면에 인쇄된 결과가 만족스러우면 제거하세요 .
답변2
최신 git 체크인을 일부 안정적인 버전과 비교하려면 git diff the-stable-version
저장소로 이동하세요(어떤 태그가 이를 설명하는지, 아마도 정확한 버전 번호 또는 일부 변형인지 파악해야 함). git
프로젝트의 전체 기록을 유지합니다(일반적으로 일부만 가져오는 방법이 있습니다). 다른 개발 브랜치에 있는지 여부는 중요하지 않습니다 the-stable-version
(예: 개발이 분기되어 안정 브랜치에 최종 수정 사항이 적용됨).