로컬에서만 commit을 진행하고 push는 하지 않은 상태에서 merge가 되어 버렸습니다🤣🤣
2단계 미션을 진행하기 위해서는 woowa-course 나만의 유튜브 강의실
을 upstream으로 지정하고 merge되었던 저의 브랜치를 rebase
해야합니다.
그치만 rebase하면 제 로컬에서 commit된 이력을 반영할 수 없었어요.
그 때 든 생각!
커밋 이력이 몇 개 안 되니, 그냥 하나씩 다시 코딩할까?
git cherry-pick
은 특정 브랜치에서 원하는 커밋을 가져올 때 사용합니다.
(A는 커밋 해시입니다.)
git cherry-pick A
커밋 해쉬는 어떻게 확인하냐구요?
git log --oneline
명령어를 통해 원하는 커밋 해쉬를 가져올 수 있습니다.
(A와 B는 커밋 해시입니다.)
git cherry-pick A^..B
A를 무시하고, A 다음부터 B까지 cherry-pick
git cherry-pick A..B
PR merge 되었는데 로컬에 commit 이력이 남아 있는 경우
1. git push (woowacourse는 반영 안되고 fork한 저장소에만 적용된 상태)
2. git checkout main
3. git remote add upstream [우아코스 주소]
4. git fetch upstream [내 브랜치]
5. git rebase upstream/[내 브랜치] 인데 이렇게 하니깐 충돌이 안나네요)
6. git checkout [step1]
7. git log —oneline
- 로그를 확인하고 어디서 부터 어디까지 적용할지 커밋id를 가져와요.
8. git checkout -b [step2]
9. git cherry-pick 커밋해쉬..커밋해쉬
우테코에서 첫 미션인 자동차 경주를 할 때 였어요.
그 당시에는 rebase 존재 자체를 모르고 2단계를 시작했었어요.
당연히 step1 merge가 일어나면서 제가 fork 받은 브랜치랑 upstream 브랜치의 싱크가 깨지게 되었죠.
이 부분을 공부해도 이해가 안 되어서 리뷰어님께 여쭤봤었는데
upstream 브랜치 기반으로 branch를 새로 만들고
git cherry-pick
을 통해 step2 commit을 전부 다시 한다.
라는 방법을 알려주셨었습니다.