Error/개발환경 / / 2023. 11. 8. 13:22

[Git] 잘못된 브랜치에 커밋 했을때 대처법

🔍 개요

프리코스를 진행하면서 실수로 branch를 만들고 체크아웃을 하지 않고 미션을 진행했다.

아무것도 안보여

이런 경우 첫 번째 커밋을 제외한 나머지는 전부 롤백시키고, 그동안 진행한 커밋들을 branch로 옮겨야 하는데..

 

1.새로운 브랜치 생성 및 체크아웃

먼저 옮길 브랜치를 생성하고 해당 브랜치로 체크아웃합니다.

git checkout -b <브랜치-이름>

 

2.커밋 해시 찾기 

git log # 첫 번째 커밋 해시를 확인하세요. (방향키로 조작 가능)
git reset --hard <첫-커밋-해시>

git log 명령어를 사용하여 main 브랜치의 첫 번째 커밋 해시를 찾습니다. (만약 다른 해시로 복구하려면 그걸 복사)

그런 다음 첫 번째 커밋 상태로 브랜치를 초기화합니다.


<첫-커밋-해시>는 실제 첫 번째 커밋의 해시로 교체해야 합니다.

3.main 브랜치에서 나머지 커밋 복사

이제 git cherry-pick 명령어를 사용하여 첫 번째 커밋을 제외한 나머지 커밋을 원하는 브랜치로 복사합니다.

git cherry-pick <첫-커밋-해시>..main

 

이 명령은 첫 번째 커밋 다음 커밋부터 main 브랜치의 최신 커밋까지 원하는 브랜치로 가져옵니다.

4.원하는 브랜치를 원격 저장소에 push

원하는 브랜치에 변경 사항을 원격 저장소에 push합니다.

git push origin <브랜치-이름>

 

5.main 브랜치 원복(주의!)

git checkout main
git reset --hard <첫-커밋-해시>
git push --force-with-lease origin main

 

--force-with-lease 옵션은 다른 사용자가 이미 새로운 커밋을 push하지 않았는지 확인하고, 그렇지 않은 경우에만 강제로 push를 수행합니다.

[주의]

git push --force 또는 git push --force-with-lease 명령은 원격 저장소의 히스토리를 변경하기 때문에, 협업하는 다른 개발자에게 영향을 줄 수 있습니다. 이러한 명령을 사용하기 전에 팀원들과 상의하는 것이 좋습니다.