Programing

git cherry-pick이 작동하지 않습니다.

lottogame 2020. 8. 25. 19:19
반응형

git cherry-pick이 작동하지 않습니다.


마스터에서 커밋을 선택하여 현재 프로덕션 브랜치로 가져 오려고합니다. 그러나 실행 git cherry-pick <SHA-hash>하면 다음 메시지가 나타납니다.

# On branch prod_20110801
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#   site/test-result/
 nothing added to commit but untracked files present (use "git add" to track)
 The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

    git commit --allow-empty

Otherwise, please use 'git reset'

참고 : 재설정 및 재설정 --hard HEAD ^를 시도했지만 아무것도 변경하지 않은 것 같습니다.

왜 이것이 나를 위해 작동하지 않는지 혼란 스럽습니다.

이 문제를 해결하는 방법에 대한 통찰력, 조언 또는 아이디어가 도움이 될 것입니다 ~!


Git은 체리 픽을 no-op으로 해결하고 있습니다. 커밋에 의해 도입 된 모든 변경 사항은 현재 브랜치의 일부 커밋에 의해 도입되었습니다. (또는 어쨌든 Git이 생각하는 것입니다.) 체리 피킹중인 커밋이 적절한 병합, 리베이스 / 체리-픽 또는 단편적인 패치와 같이 어떤 식 으로든 이미 병합되지 않았는지 확인합니다. ( git show <commit-id>차이를 보려면 사용 하십시오.)


제 경우에는 제가 체리를 고르고 싶은 특정 커밋이 제 현재 브랜치에 병합 되지 않았 분명했기 때문에 이것이 저를 미치게 만들었습니다.

누군가 이미 체리가 일주일 전에 커밋을 고른 것으로 밝혀졌습니다 . 변화 가 아니라 특정의 SHA 내 현재 지점에 이미 있었고, 나는 그들을 발견하지 않았다.

체리 픽을 시도중인 파일을 확인하십시오. 이미 변경 사항이있는 경우 커밋 버전이 이미 선택되었거나 다른 방식으로 추가되었습니다. 따라서 체리를 다시 선택할 필요가 없습니다.


또한 빈 파일 (예 :) .gitkeep을 트리에 추가하는 것은 cherry-pick에서 빈 커밋으로 간주됩니다.


여기에 이것이 발생할 수있는 또 다른 혼란스러운 상황이 있습니다.

자식 로그 스크린 샷

나는 분명히 아무것도 아닌 9a7b12e를 체리로 선택하려고 노력하고 있었는데, 심지어 4497428이 내가 정말로 원하는 것이라고 git 로그 출력의 해당 줄에 알려 주려고 시도했습니다. (내가 한 일은 커밋 메시지를 찾아서 내가 본 첫 번째 해시를 잡는 것입니다). 어쨌든, 그냥 체리를 선택하지 않도록 속일 수있는 또 다른 방법이 있다는 것을 사람들에게 알리고 싶었습니다.

참고 URL : https://stackoverflow.com/questions/7072013/git-cherry-pick-not-working

반응형