2013-02-20 1 views
3

프로젝트 업그레이드를 진행 중입니다. 변경하기 전에 새 지점을 만드는 것을 잊었습니다.커밋을 되 돌리고 작업을 기억하는 방법?

내가 최선을 다하고 있었다 여러 번 :

원본 -> 커밋 -> 커밋 -> 커밋 -> 지금

이제 거기에 긴급 버그가 원본에 대해 고정 될 필요가있다, 그래서 내가 원하는 원래의 것을 수정하십시오. 나는 변화를 되 돌리면 모든 일이 없어 질 것이라고 생각합니다. 변화를 아직도 기억 하는가?

+0

: 그 후, 당신은 다시 업그레이드 작업을 병합 할 수 있습니다. 나중에 더 나으십시오. – pmr

답변

1

다음 작업을 수행 할 수 있습니다. 첫째, 현재 작업을 가리키는 새로운 지점을합니다

git branch project_upgrade 

(당신이 커밋되지 않은 변경이있는 경우, 당신은 그렇게 전에 그들에게 을 커밋합니다.)

그런 반면, 여전히 master 분기에 , 가서 다시 재설정에 변경 전 : 이것은 당신의 master 분기를 재설정합니다

git reset --hard <SHA of original commit> 

하지만 원작을 가리키는 project_upgrade 지점을 둡니다. (이는 모든 파일을 재설정 할 것이므로 브랜치 전에 커밋되지 않은 변경 사항이 없도록해야합니다. 따라서 모든 업그레이드 작업은 해당 지사가 지정한 커밋에 저장됩니다.)

그런 다음 버그를 수정하십시오. 다음 주인을 리베이스, 원래 커밋 시작이 커밋을 체리 - 선택 지점의 지점을 만들기

git merge project_upgrade 
4

master은 이제 now을 가리키고 masteroriginal으로 되돌아 가고 싶다고 가정하면 다음을 수행합니다.

// Make sure you are on master, thus looking at 'now' 
git checkout master 

// Make a new branch pointing at 'now' 
git branch new_feature 

// Reset 'master' back 4 commits to 'original'. 
git reset --hard HEAD~4 

그러면 마스터를 원하는 위치로 되돌릴 수 있으며 수정 사항을 적용하여 새로운 커밋을 만들 수 있습니다. 그런 다음 git checkout new_feature을 수행하여 새 기능을 계속 사용할 수 있습니다. 그런 다음 기능이 준비되었는지 확인하고 다시 마스터에 병합 할 수 있습니다.

일반적으로 정확한 이유로 마스터에 새로운 기능을 개발하고 싶지는 않으므로 새로운 기능을 마스터에 즉시 병합 할 수 있지만 git checkout new_feature 대신 작업을 완료 할 때까지 작업을 계속하십시오. 병합하기 전에

관련 문제