2012-09-30 2 views
39

나는 약간의 수정을 가한 GitHub에서 분기 된 저장소를 가지고 있습니다. 그러나 특정 커밋에서 일부 파일이 변경되어 다른 수정 된 파일을 요청에서 제외하고 끌어 오기 요청을 제출하려고합니다.특정 파일/커밋 만 풀 요청

끌어 오기 요청 병합 모두 커밋을 수행합니까, 아니면이 커밋을 분리하기 위해 특별한 작업을 수행해야합니까?

+1

관련이있을 수 있습니다 : [특정 파일의 변경 만하는 방법?] (http://stackoverflow.com/q/5717026) – jww

+2

@jww 년 후 'git cherry-pick'이되었습니다. 절대적으로 귀중한. 내가 한 것보다 훨씬 빨리 그것을 집어 들었어야 했어. – Qix

답변

28

풀 요청은 전체 커밋으로 이루어 지므로이 커밋을 끌어 오기 요청에 넣을 변경 내용과 다른 변경 내용을 포함하는 두 개의 별도 커밋으로 분할해야합니다. 이 작업을 수행하려면 git rebase -i이 필요합니다 (예 : How can I split up a Git commit buried in history?).

커밋을 분할했으면 포함하려는 항목을 주제 분기로 이동하십시오 (예 : How to move certain commits to another branch in git? 참조).하지만 풀 요청을하는 커밋이 순차적인지 여부에 따라 다릅니다.

마지막으로 Github으로 이동하여 주제 분기에서 끌어 오기 요청을 만들 수 있습니다.

+3

'git cherry-pick'은 기록을 위해 매우 귀중한 도구입니다. – Qix

+3

나는 이것이 받아 들여진 대답이라는 것을 알았다. 하지만 정확하게 수행 할 단계는 어디서 여러 파일을 수정하는 끌어 오기 요청에서 하나의 파일을 변경할 수 있습니까? – jww

+0

요청을 병합하는 사람이 요청을하지 않으면 어떻게됩니까? 이 도구는 매우 절름발이입니다 ... – jww

11

풀 요구가 분기를 병합합니다. 따라서 끌어 오기 요청을 위해 몇 가지를 격리하려는 경우 이러한 변경 사항을 별도의 분기에 저장하는 것이 가장 좋습니다.

장점 새로운 변경 사항을 해당 분기로 푸시 (밀어 넣은 커밋을 변경해야하는 경우 push -f조차도)하여 끌어 오기 요청을 변경할 수 있다는 이점이 있습니다.