첫 번째 아무것도 모르는 다른 git 리포지토리에서 커밋이 필요한 git 리포지토리로 작업하고 있습니다.
일반적으로 HEAD@{x}
reflog에서를 사용하여 cherry-pick을 선택 하지만 .git
이 reflog 항목 (다른 물리적 디렉토리)을 알지 못하기 때문에 어떻게 이것을 체리 피킹 할 수 있습니까?
을 사용하고 git-svn
있습니다. 내 첫 분기 사용 git-svn
의 trunk
서브 버전의 repo의, 다음 분기 사용되는 git-svn
서브 버전 분기에.
답변
다른 저장소를 원격으로 추가 한 다음 변경 사항을 가져와야합니다. 거기에서 커밋을보고 체리 픽을 선택할 수 있습니다.
그렇게 :
git remote add other https://example.link/repository.git
git fetch other
이제해야 할 모든 정보가 git cherry-pick
있습니다.
리모컨 작업에 대한 자세한 정보는 https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
답변
주어진 대답은 format-patch를 사용하는 것이지만 질문은 다른 폴더에서 체리를 선택하는 방법 이었기 때문에 다음과 같은 작업을 수행하는 코드가 있습니다.
$ git --git-dir=../<some_other_repo>/.git \
format-patch -k -1 --stdout <commit SHA> | \
git am -3 -k
( @cong ma의 설명 )
이
git format-patch
명령은some_other_repo
SHA로 지정된의 커밋 (-1
한 번의 커밋 만) 에서 패치를 만듭니다 . 이 패치는git am
로 패치되어 로컬로 패치를 적용합니다 (-3
패치가 제대로 적용되지 않으면 3 방향 병합 시도). 그것이 희망입니다.
답변
다음은 remote-fetch-merge의 예입니다.
cd /home/you/projectA
git remote add projectB /home/you/projectB
git fetch projectB
그럼 당신은 할 수 있습니다 :
git cherry-pick <first_commit>..<last_commit>
또는 전체 지점을 병합 할 수도 있습니다
git merge projectB/master
답변
할 수 있지만 두 단계가 필요합니다. 방법은 다음과 같습니다.
git fetch <remote-git-url> <branch> && git cherry-pick FETCH_HEAD
대체 <remote-git-url>
당신이에서 체리 – 선택하고자하는 저장소의 URL 또는 경로.
대체 <branch>
당신이 원하는 지점 또는 태그 이름으로 원격 저장소에서 벚꽃 선택하십시오.
FETCH_HEAD
지점에서 git SHA로 바꿀 수 있습니다 .
업데이트 : @pkalinow의 피드백에 따라 수정되었습니다.
답변
다음은 원격을 추가하고 분기를 가져오고 커밋을 선택하는 단계입니다.
# Cloning our fork
$ git clone git@github.com:ifad/rest-client.git
# Adding (as "endel") the repo from we want to cherry-pick
$ git remote add endel git://github.com/endel/rest-client.git
# Fetch their branches
$ git fetch endel
# List their commits
$ git log endel/master
# Cherry-pick the commit we need
$ git cherry-pick 97fedac
답변
Git으로 패치를 작성하고 적용하는 방법을 참조하십시오 . (질문의 말에서,이 다른 저장소는 완전히 다른 코드베이스를위한 것이라고 가정했습니다. 동일한 코드베이스의 저장소라면 @CharlesB가 제안한 것처럼 원격으로 추가해야합니다. 코드베이스, 여전히 원격으로 추가 할 수는 있지만 전체 분기를 저장소로 가져 가고 싶지 않을 수도 있습니다 …)
답변
다음과 같이 한 줄로 할 수 있습니다. 체리 선택 변경이 필요한 자식 저장소에 있고 분기를 수정했는지 확인하십시오.
git fetch ssh://git@stash.mycompany.com:7999/repo_to_get_it_from.git branchToPickFrom && git cherry-pick 02a197e9533
#
git fetch [브랜치 URL] [브랜치에서 체리 픽으로 선택] && git cherry-pick [커밋 ID]