개발관련/Git

Git을 사용하여 가장 최근 커밋을 새 브랜치로 이동

Rateye 2021. 6. 1. 21:07
728x90
반응형
질문 : Git을 사용하여 가장 최근 커밋을 새 브랜치로 이동

마스터로 커밋 한 마지막 몇 가지 커밋을 새 브랜치로 이동하고 해당 커밋이 이루어지기 전에 마스터를 다시 가져오고 싶습니다. 불행히도 내 Git-fu는 아직 충분히 강하지 않습니다.

Ie 어떻게 갈 수 있습니까?

master A - B - C - D - E

이에?

newbranch     C - D - E
             /
master A - B 
답변

커밋을 기존 브랜치 로 옮기고 싶다면 다음과 같이 보일 것입니다.

git checkout existingbranch
git merge master
git checkout master
git reset --hard HEAD~3 # Go back 3 commits. You *will* lose uncommitted work.
git checkout existingbranch

git stash 사용하여 커밋되지 않은 편집 내용을 숨김에 저장할 수 있습니다. git stash pop 사용하여 숨겨진 커밋되지 않은 편집을 검색 할 수 있습니다.

경고 : git branch newbranch 사용하여 새 브랜치를 생성하기 때문에 작동합니다. 커밋을 기존 브랜치 로 이동하려면 git reset --hard HEAD~3 실행하기 전에 변경 사항을 기존 브랜치에 병합해야합니다 ( 위의 기존 브랜치로 이동 참조). 먼저 변경 사항을 병합하지 않으면 손실됩니다.

관련된 다른 상황이없는 한 분기 및 롤백을 통해 쉽게 수행 할 수 있습니다.

# Note: Any changes not committed will be lost.
git branch newbranch      # Create a new branch, saving the desired commits
git reset --hard HEAD~3   # Move master back by 3 commits (Make sure you know how many commits you need to go back)
git checkout newbranch    # Go to the new branch that still has the desired commits

그러나 되돌아 갈 커밋 수를 확인하십시오. HEAD~3 대신 마스터 (/ 현재) 브랜치에서 "되돌리려는" 커밋 (또는 origin / master 와 같은 참조)의 해시를 제공 할 수 있습니다. 예 :

git reset --hard a1b2c3d4

* 1 마스터 브랜치의 커밋 만 "패배"되지만 걱정하지 마세요. newbranch에 커밋이있을 것입니다!

경고 : Git 버전 2.0 이상에서는 나중에 master ) 브랜치에서 새 브랜치를 git rebase 하는 경우 이월 된 커밋을 잃지 않도록 리베이스 중에 --no-fork-point 옵션이 필요할 수 있습니다. branch.autosetuprebase always 설정하면이 가능성이 높아집니다. 자세한 내용은 John Mellor의 답변 을 참조하십시오.

출처 : https://stackoverflow.com/questions/1628563/move-the-most-recent-commits-to-a-new-branch-with-git
728x90
반응형