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
repos 사이에 패치를 작성해야 합니까?
동일하지만 커밋 범위에 대해 어떻게합니까?
해킹 으로 GitTips 페이지 에서 서로 다른 두 저장소의 커밋을 비교하기 위해 레시피를 수정 해 볼 수 있습니다 .
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects \
git cherry-pick $(git --git-dir=../repo/.git rev-parse --verify <commit>)
../repo
다른 저장소의 경로는 어디 입니까?
최신 Git을 사용하면 cherry-pick 과 함께 여러 개정 및 개정 범위를 사용할 수 있습니다 .
는 $(git --git-dir=../repo/.git rev-parse --verify <commit>)
번역 여기 <commit>
(예 HEAD
, 또는 v0.2
또는 master~2
커밋의 SHA-1 식별자로는 복사해서 제 리포지토리 값인하는). 선택하려는 변경 사항에 대한 SHA-1을 알고 있으면 필요하지 않습니다.
참고 가 다른 객체 저장소가 하나 개의 작업을 위해, 일시적 것을 알고하지 않습니다하지만 힘내, 소스 저장소에서 개체를 복사 건너 뛸 수있다. 다음을 사용하여 두 번째 저장소에서 오브젝트를 복사해야 할 수도 있습니다.
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects git repack -a -d -f
이것은 두 번째 저장소에서 빌린 객체를 원래 저장소 저장소에 넣습니다.
검증되지 않은.
그렇게 해킹 되지 않은 해결책은 knittl 답변 을 따르는 것입니다 .
- 커밋을 복사하려는 두 번째 저장소로 이동하여 원하는 커밋에서 패치를 생성하십시오.
git format-patch
- 선택적으로 패치 (0001- * 등)를 저장소에 복사하십시오.
git am --3way
패치 적용에 사용
당신은 아마 사용하려면 git format-patch
다음 git am
저장소에 그 패치를 적용 할 수 있습니다.
/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
당신은 할 수 cherry-pick
있습니다 (다음 첫 번째에 원격으로 두 번째의 repo를 추가하는 경우 fetch
).
repo diff https://github.com/raghakh/android-dev-scripts/commit/a57dcba727d271bf2116f981392b0dcbb22734d0 의 diff 출력을 적용하기위한 작은 스크립트를 작성했습니다.
'Programming' 카테고리의 다른 글
Android Studio에서 실행 버튼이 비활성화 됨 (0) | 2020.08.06 |
---|---|
TextinputLayout의 레이블 색상을 변경하고 android 텍스트 밑줄을 편집하는 방법 (0) | 2020.08.06 |
부트 스트랩 : 컨테이너의 너비를 어떻게 변경합니까? (0) | 2020.08.06 |
스레드 안전 사전을 구현하는 가장 좋은 방법은 무엇입니까? (0) | 2020.08.06 |
경계 상자에 맞게 이미지 크기 조정 (0) | 2020.08.06 |