질문 : 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
'개발관련 > Git' 카테고리의 다른 글
Git 태그의 이름을 바꾸는 방법 (0) | 2021.06.02 |
---|---|
Git detached Head를 수정하는 방법 (0) | 2021.06.02 |
원격 Git 브랜치를 확인하는 방법 (0) | 2021.06.01 |
로컬 저장소 브랜치를 원격 저장소 HEAD와 같이 재설정 (0) | 2021.06.01 |
Git 저장소에 빈 디렉터리를 추가하는 방법 (0) | 2021.06.01 |