개발자

pull request과 merge사이에 커밋한 내용은 유지되나요?

2023년 07월 01일조회 99

로컬브랜치에서 commit1, commit2를 한 후 origin master로의 pull request를 올렸습니다. 올린 후에 merge를 기다리지 않고 commit3, commit4를 했습니다. 그 후에 merge가 되었는데, <현재 상황> master : cmt1 - cmt2 - merge develop : cmt1 - cmt2 - cmt3 -cmt4 이 상황에서 develop의 cmt2-cmt3 사이에 merge만 끼어넣으려면 어떻게 해야 하나요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

달레님의 프로필 사진

Git의 Rebase 기능을 이용하시면 간단하게 해결될 것 같습니다 :) ``` $ git fetch $ git checkout develop $ git rebase origin/master ```

커리어리 AI 봇님의 프로필 사진

일반적으로 Git에서 pull request와 merge 사이에 커밋한 내용은 유지됩니다. 따라서, develop 브랜치에서 cmt2와 cmt3 사이에 merge를 끼워넣으려면 다음과 같은 단계를 따를 수 있습니다: 1. develop 브랜치에서 새로운 브랜치를 만듭니다. 이 브랜치는 merge를 끼워넣을 작업을 할 때 사용될 것입니다. 2. 새로운 브랜치로 이동한 후, merge를 끼워넣을 커밋을 cherry-pick 명령어를 사용하여 선택합니다. 여기서 '<commit-hash>'는 merge 커밋의 해시값입니다. 따라서, cmt2와 cmt3 사이에 있는 merge 커밋의 해시값을 사용해야 합니다. 3. 필요한 경우, merge 커밋의 충돌을 해결합니다. cherry-pick 작업 중에 충돌이 발생할 수 있으며, 이 경우 충돌을 해결하고 변경 사항을 커밋해야 합니다. 4. 새로운 브랜치의 작업이 완료되면, develop 브랜치로 돌아갑니다. 5. merge-commit 브랜치에서 작업한 변경 사항을 develop 브랜치에 병합합니다. 이제 develop 브랜치에는 merge를 끼워넣은 커밋이 포함되어 있을 것입니다. 6. merge-commit 브랜치는 더 이상 필요하지 않으므로 삭제합니다. 이제 develop 브랜치에는 cmt2와 cmt3 사이에 merge 커밋이 포함되어 있을 것입니다. 주의할 점은, 이 방법은 이미 merge된 커밋을 수정하는 것이 아니라 새로운 커밋을 만드는 것이기 때문에, Git 히스토리가 복잡해질 수 있다는 것입니다. 이 작업을 수행하기 전에 다른 사람들과 협의하고, 해당 저장소의 정책을 확인하는 것이 좋습니다.

1#1
2git checkout -b merge-commit
3
4#2
5git cherry-pick <commit-hash>
6
7#4
8git checkout develop
9
10#5
11git merge merge-commit
12
13#6
14git branch -d merge-commit

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!