2012-11-23 4 views
9

문제점 : 누군가 개발 한 기능을 테스트하고 싶지만, 만기가 오래된 원격 브랜치에 만 존재합니다.git-cherry-pick-HOWTO/WHYTO

체리 픽이 문제를 해결 않습니다 어떻게

Source

  1. ?
  2. git am 또는 git apply를 사용하지 않는 이유는 무엇입니까?

답변

6

문제 :이 기능 사람이 개발 한 테스트 할 수 있지만, 그것은 단지 가 최신 비참있는 원격 지점에 존재한다.

병합하거나 리버스하면 병존 가능성이있는 많은 변경 사항이 발생합니다.

체리 피킹을 사용하면 하나의 변경 세트를 가져 와서 다른 분기를 통해 새로운 커밋으로 재생할 수 있습니다.

이 명령은 내역이없는 다른 분기에 하나의 커밋 만하려는 경우 유용합니다.

-x 옵션을 사용하는 것이 유용하기 때문에 커밋 메시지에 체리를 가져온 메모가 포함됩니다.

왜 내가 git am 또는 git apply를 사용하지 않습니까?

왜냐하면 git apply는 패치 (파일)를 적용하기위한 것이기 때문에 git am은 일련의 패치를 적용하기 때문입니다. git cherry-pick은 커밋을 적용합니다 (예 : 자신의 저장소에서 커밋). 다른 저장소에서 가져온 커밋을 커밋합니다. git help cherry-pick에서

4

는 :

자식 체리 - 선택은 - 기존의 일부 에 의해 도입 된 변경 사항을 적용하는 것은

[...]

을 감안할 때 하나 이상의 커밋 기존의 적용 범 각각을 변경하십시오. 각각에 대해 새로운 커밋을 녹음하고 소개합니다. 이를 위해서는 작업중인 트리 이 깨끗해야합니다 (HEAD 커밋의 수정은 필요 없습니다). 당신 cherry-pick이 커밋 그래서

gitcherry-pick 보내고있는 새가 그 하나에 해당 커밋 만드는, 즉의 변경 내용을 커밋 (그 diff)를 받아서 현재 작업 디렉토리에 적용하려고합니다.

다른 기록 라인에서 다른 커밋의 변경 사항을 다시 수행하는 방법입니다.

변경 사항 외에도 cherry-pick은 작성자와 같은 원래 커밋 정보도 보존합니다.

마지막으로 cherry-pick은 적용 할 커밋 그룹을 수신 할 수 있습니다.이 경우에는 cherry-pick과 같이 하나씩 순서대로 (약식으로) 먼저 적용됩니다.

1

문제 :
당신은 기능 사람이 개발 한 테스트하기를 원하지만 그것은 단지 오래된 비참있는 원격 지점에 존재한다.

  • 더 이상
  • 당신이 원하지 않는 개발의 현재 상태와 관련된 커밋을 포함하여 이전 분기를 병합 할하지 않습니다 때문에

그것은 문제를 해결 이전 분기의 맨 위에 분기를 리베이스하여 해당 분기를 커밋하십시오. 체리 따기의 첫 번째 단점은 그것이 duplicate commits을 소개하는 것이 있기 때문에

  • 당신은 이전 분기
  • 마지막 포인트가 중요하다에 지점을 다시 병합 할 필요가 없습니다. 그러나 귀하의 경우에는 중요하지 않습니다.

    다른 단점은 체리 피킹중인 커밋이 이전 분기의 이전 커밋을 기준으로 functional dependencies 일 수 있습니다.
    다른 말로하면, 그 코드는 다른 오래된 커밋 (cherry picked가 아닌)의 다른 코드 때문에 만 작동합니다.
    검색이 까다로울 수 있습니다.