후레임의 프로그래밍
Git을 사용하여 가장 최근 커밋을 새 브랜치로 이동 본문
질문
마스터로 커밋 한 마지막 몇 가지 커밋을 새 브랜치로 이동하고 해당 커밋이 이루어지기 전에 마스터를 다시 가져오고 싶습니다.
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
'스택오버플로우(Stack Overflow)' 카테고리의 다른 글
텍스트 선택 강조 표시를 비활성화하는 방법 (0) | 2020.11.11 |
---|---|
다른 JavaScript 파일에 JavaScript 파일을 어떻게 포함합니까? (0) | 2020.11.11 |
양식 기반 웹 사이트 인증에 대한 확실한 가이드 (0) | 2020.11.10 |
REST의 PUT vs POST (0) | 2020.10.26 |
Linux에서 특정 텍스트가 포함 된 모든 파일을 찾으려면 어떻게합니까? (0) | 2020.10.26 |