Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

후레임의 프로그래밍

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

스택오버플로우(Stack Overflow)

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

후레임 2020. 11. 11. 12:55
질문

마스터로 커밋 한 마지막 몇 가지 커밋을 새 브랜치로 이동하고 해당 커밋이 이루어지기 전에 마스터를 다시 가져오고 싶습니다.

 

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 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 마스터 브랜치의 커밋을 잃을 것입니다. 하지만 걱정하지 마십시오. 그 커밋들과 똑같은 새 브랜치들이 생겼을겁니다.

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

출처 : https://stackoverflow.com/questions/1628563