git: 한 레포에서 커밋에 의해 도입된 변경 사항을 다른 레포에 적용합니다.
나는 있습니다repo1
그리고.repo2
로컬 기계에서.그들은 매우 비슷하지만, 후자는 다른 종류의 가지입니다.repo1
더 이상 유지 관리되지 않음).
/path/to/repo1 $ git log HEAD~5..HEAD~4
<some_sha> Add: Introduce feature X
커밋에 의해 변경된 내용을 적용하는 방법<some_sha>
에repo1
로.repo2
?
패치를 준비해야 합니까, 아니면 가능합니까?cherry-pick
저장소 사이에?
커밋 범위를 제외하고 동일하게 하는 것은 어떻습니까?
를 사용하여 해당 패치를 리포지토리에 적용할 수 있습니다.
/path/to/1 $ git format-patch sha1^..sha1
/path/to/1 $ cd /path/to/2
/path/to/2 $ git am -3 /path/to/1/0001-…-….patch
또는 한 줄로:
/path/to/2 $ git --git-dir=/path/to/1/.git format-patch --stdout sha1^..sha1 | git am -3
두 번째 레포를 첫 번째 레포에 원격으로 추가하면 할 수 있습니다.fetch
).
Hack은 GitTips 페이지에서 두 개의 서로 다른 저장소에 있는 커밋을 비교하기 위한 레시피를 수정할 수 있습니다. 예를 들어, 다음과 같습니다.
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects \
git cherry-pick $(git --git-dir=../repo/.git rev-parse --verify <commit>)
어디에../repo
다른 리포지토리의 경로입니다.
최신 Git에서는 체리 픽과 함께 여러 개의 수정 및 수정 범위를 사용할 수 있습니다.
그$(git --git-dir=../repo/.git rev-parse --verify <commit>)
번역하러 왔습니다.<commit>
(예:HEAD
또는v0.2
또는master~2
SHA-1 커밋 식별자로 복사하는 두 번째 저장소의 값입니다.선택하고자 하는 변경사항의 SHA-1을 알고 있는 경우에는 필요하지 않습니다.
그러나 Git는 대체 개체 저장소가 한 번의 작업에 대해 일시적이라는 것을 알지 못하기 때문에 소스 저장소에서 개체를 복사하는 작업을 건너뛸 수 있습니다.다음을 사용하여 두 번째 저장소에서 개체를 복사해야 할 수 있습니다.
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects git repack -a -d -f
그러면 두 번째 리포지토리에서 빌린 개체가 원래 리포지토리 스토리지에 저장됩니다.
테스트되지 않았습니다.
그렇게 촌스럽지 않은 해결책은 간결한 답변을 따르는 것입니다.
- 커밋을 복사할 두 번째 저장소로 이동하고 원하는 커밋에서 패치를 생성합니다.
git format-patch
- 필요한 경우 패치(0001-* 등)를 저장소에 복사합니다.
- 사용하다
git am --3way
패치를 적용하다
repo diff https://github.com/raghakh/android-dev-scripts/commit/a57dcba727d271bf2116f981392b0dcbb22734d0 의 diff 출력을 적용하기 위한 작은 스크립트를 작성했습니다.
언급URL : https://stackoverflow.com/questions/3816040/git-apply-changes-introduced-by-commit-in-one-repo-to-another-repo
'source' 카테고리의 다른 글
독트린 부울 형식을 false로 설정할 수 없습니다. (0) | 2023.09.03 |
---|---|
제목 없이 DialogFragment를 만드는 방법은 무엇입니까? (0) | 2023.09.03 |
Azure 파이프라인:치명적입니다. 'https://github.com '에 대한 사용자 이름을 읽을 수 없습니다. 터미널 프롬프트가 비활성화되었습니다. (0) | 2023.09.03 |
MySQL 및 MariaDB - 선행 0이 많은 10진수 값을 나타내는 문자열을 숫자 값으로 캐스팅하면 예기치 않은 결과를 얻을 수 있습니다. (0) | 2023.09.03 |
S3를 통해 Amazon CloudFront에서 gziped CSS 및 JavaScript 제공 (0) | 2023.09.03 |