내 마스터를 이전 커밋으로 변경하려면 어떻게해야합니까?
이전 커밋으로 롤백 한 다음 해당 코드를 게시 한 다음 최신 커밋으로 돌아가고 싶습니다.
즉, 내 마스터가 이전 커밋 버전을 가리키고 있으므로 해당 버전을 게시 할 수 있습니다. 그런 다음 처음에 하나였던 최신 커밋으로 돌아가고 싶습니다.
어떻게 할 수 있습니까?
이렇게하고 마스터를 이전 커밋으로 되돌리려면 다음을 수행하십시오.
git checkout master~1 # Checkout previous commit on master
git checkout -b new_master # Create branch for new master
git branch -D master # Delete old master
git branch -mv new_master master # Make new_master master
또는 :
git reset --hard master~1 # Reset current branch to one commit ago on master
질문이 명확하지 않습니다. 나는 당신이 요구하는 것이 이것 이라고 생각 합니다.
git push -f origin $old_commit_id:master
이것은 무엇을할까요? $old_commit_id
커밋을 의 브랜치 origin
의 새 헤드로 푸시합니다 .origin
master
그것이 당신이 원하는 것이라면, 당신은 지역 master
지점을 전혀 만질 필요가 없습니다 .
사용하다 git reset --hard <old commit number>
HEAD를이 이전 커밋으로 재설정합니다.
또한 git push -f origin
원격 저장소를 변경하는데도 사용해야 합니다.
당신은 할 수 있습니다 git checkout <commit-id>
, 당신이 다음 할 필요가 무엇이든 git checkout master
새로운 코드로 돌아 가야.
실제로 이전 코드를 수정하여 릴리스해야하는 경우 다음을 수행해야합니다.
git checkout -b my_release <commit-id>
... prepare code for release ...
... release code ...
git checkout master
git merge my_release
또한 git flow를 충분히 추천 할 수 없습니다 . 이 모든 것을 아주 쉽게 만듭니다.
다음과 같은 커밋 그래프를 가정합니다.
| (A) ---------> (B) ----------> (C)
| ^
| (master)
먼저 체크 아웃 master
하고 master
현재 위치를 가리키는 분기를 만들고 싶습니다 .
git checkout master
git branch pointer master
이제 다음과 같이 보일 것입니다.
| (A) ---------> (B) ----------> (C)
| ^
| (HEAD, master, pointer)
이제 이미에 master
있으므로 master
분기에 한 커밋 뒤로 이동하도록 지시합니다.
git reset master~1
이제 master
한 칸 뒤로 이동해야하지만 pointer
브랜치는 여전히 가장 최근 커밋에 있습니다.
| (A) ---------> (B) ----------> (C)
| ^ ^
| (HEAD, master) (pointer)
이 시점에서 master
원격 또는 어느 곳에서나 푸시 한 다음 빨리 감기를 통해 pointer
분기에 다시 병합 할 수 있습니다. 그 pointer
지점에서 브랜치를 죽일 수 있습니다 :
git push origin master
git merge --ff-only pointer
git branch -D pointer
결승 :
| (A) ---------> (B) ----------> (C)
| ^ ^
| [ origin/master ] (HEAD, master)
강제 푸시를 피하려면 다음은 저장소를 이전 커밋으로 되돌리고 개입하는 모든 작업을 보존하는 방법입니다.
git checkout 307a5cd # check out the commit that you want to reset to
git checkout -b fixy # create a branch named fixy to do the work
git merge -s ours master # merge master's history without changing any files
git checkout master # switch back to master
git merge fixy # and merge in the fixed branch
git push # done, no need to force push!
끝난! 307a5cd를 repo에서 원하는 커밋으로 바꿉니다.
(처음 두 줄을 결합 할 수 있다는 것을 알고 있지만 이로 인해 진행 상황이 명확하지 않은 것 같습니다.)
다음은 그래픽입니다.
c1 -- c2 -- c3 -- c4 -- c2' -- c5 ...
\ /
'------------'
c3 및 c4를 효과적으로 제거하고 프로젝트를 다시 c2로 설정합니다. 그러나 c3 및 c4는 다시보고 싶은 경우 프로젝트 기록에서 계속 사용할 수 있습니다.
이전 버전으로 이동하려면 :
git checkout <version hash>
여기서 당신의 일을하고 그것을 커밋하십시오.
git commit --amend
마스터 로 돌아가려면 :
git checkout master
'Program Tip' 카테고리의 다른 글
TensorFlow에서 Xavier 초기화를 수행하는 방법 (0) | 2020.10.11 |
---|---|
복사 생성자에서 개인 변수에 액세스 할 수있는 이유는 무엇입니까? (0) | 2020.10.11 |
템플릿에서 맵을 통해 반복 (0) | 2020.10.11 |
새로 생성 된 특정 폴더를 Git의 .gitignore에 추가합니다. (0) | 2020.10.11 |
AsyncTask for ProgressDialog 내에서 Looper.prepare ()를 호출하지 않은 스레드 내부에 핸들러를 만들 수 없습니다. (0) | 2020.10.11 |