programing

git format-patch로 생성된 패치를 적용하는 방법은 무엇입니까?

padding 2023. 5. 28. 20:23
반응형

git format-patch로 생성된 패치를 적용하는 방법은 무엇입니까?

두 개의 로컬 Git 저장소가 있으며, 둘 다 동일한 원격 저장소를 가리킵니다.

하나의 git 저장소에서, 만약 내가 한다면.git format-patch 1다른 리포지토리에 패치를 적용하려면 어떻게 해야 합니까?

참고: 먼저 패치가 수행할 작업을 미리 볼 수 있습니다.

먼저 통계:

git apply --stat a_file.patch

그런 다음 오류를 감지하기 위한 모의 실행:

git apply --check a_file.patch

마지막으로 를 사용하여 패치를 커밋으로 적용할 수 있습니다.이를 통해 적용된 패치를 로그오프할 수도 있습니다.
이것은 나중에 참조할 때 유용할 수 있습니다.

git am --keep-cr --signoff < a_file.patch 

논평에서 바람이 지적한 바와 같이:

당신이 가지고 있는 것을 잊지 마세요.autocrlf=falseWindows(윈도우) 전용 개발의 경우 다음으로 전달해야 합니다.am그 CRLF들을 보관하기 위해.

이 기사의 예를 참조하십시오.

Git 로그에는 커밋 메시지에 "Signed-off-by" 태그가 포함되어 있습니다.이 태그는 Github과 다른 사람들이 커밋이 어떻게 코드에 도달했는지에 대한 유용한 정보를 제공하기 위해 읽을 것입니다.

예

git apply name-of-file.patch

아니면, 만약 당신이 오래된 학교를 차버린다면:

cd /path/to/other/repository
patch -p1 < 0001-whatever.patch

먼저, 당신은 다음의 차이점에 대해 기록해야 합니다.git am그리고.git apply

사용할 때git am당신은 보통 많은 패치를 적용하기를 원합니다.따라서 다음을 사용해야 합니다.

git am *.patch

아니면 그냥:

git am

Git는 패치를 자동으로 찾아 순서대로 적용합니다 ;-)

업데이
여기에서 이러한 패치를 생성하는 방법을 찾을 수 있습니다.

커밋으로 적용하려면 gitam을 사용합니다.

JetBrain IDE(IntelliJ IDEA, Android Studio, PyCharm 등)를 사용하는 경우 패치 파일을 끌어 IDE 내부에 놓을 수 있으며 패치 내용을 보여주는 대화 상자가 나타납니다.이제 "패치 적용"을 클릭하기만 하면 커밋이 생성됩니다.

다른 방법은 로컬 리포지토리 중 하나를 다른 리포지토리에 원격으로 추가하는 것입니다.

$ cd repo1
$ git remote add repo2 file:///path/to/repo2/.git

따라서 한 로컬 저장소에서 다른 로컬 저장소로 분기를 가져오거나, 로컬 지점을 재배치하거나, 커밋을 선택할 수 있습니다.

$ git remote update repo2
$ git fetch repo2 branch:branch-from-repo2
$ git log branch-from-repo2

언급URL : https://stackoverflow.com/questions/2249852/how-to-apply-a-patch-generated-with-git-format-patch

반응형