Git 저장소를 특정 커밋으로 롤백 (재설정)하는 방법은 무엇입니까? [복제]
이 질문에 이미 답변이 있습니다.
Git 저장소를 복제 한 다음 개발 프로세스 초기에 특정 커밋으로 롤백하려고했습니다. 그 시점 이후에 저장소에 추가 된 모든 것은 나에게 중요하지 않으므로 로컬 소스 코드에서 모든 후속 변경 사항을 생략하고 싶습니다.
그러나 GUI 도구에서 롤백하려고하면 로컬 파일 시스템이 업데이트되지 않습니다. 항상 프로젝트의 최신 소스 코드로 끝납니다.
프로젝트 기록의 특정 커밋으로 저장소의 소스를 가져오고 이후의 모든 업데이트를 생략하는 올바른 방법은 무엇입니까?
git reset --hard <tag/branch/commit id>
메모:
git reset
--hard
옵션이 없으면 커밋 기록이 재설정되지만 파일은 재설정되지 않습니다.--hard
옵션을 사용하면 작업 트리의 파일도 재설정됩니다. ( 크레딧 사용자 )원격 저장소가 롤백 된 커밋을 가리 키도록 해당 상태를 커밋하려면 다음을 수행하십시오.
git push <reponame> -f
( credited user )
최신 정보:
추적 분기를 만들고 푸시하는 방법이 변경 되었기 때문에 더 이상 분기 이름을 바꾸지 않는 것이 좋습니다. 이것이 제가 지금 추천하는 것입니다.
현재 상태에서 분기의 복사본을 만듭니다.
git branch crazyexperiment
(이 git branch <name>
명령을 실행하면 현재 브랜치가 체크 아웃 된 상태로 남습니다.)
다음을 사용하여 현재 분기를 원하는 커밋으로 재설정하십시오 git reset
.
git reset --hard c2e7af2b51
( c2e7af2b51
돌아갈 커밋으로 바꿉니다 .)
미친 실험 브랜치에 유용한 항목이 없다고 판단되면 다음을 사용하여 삭제할 수 있습니다.
git branch -D crazyexperiment
실행하기 전에 백업 브랜치를 생성하기 위해 히스토리 수정 git 명령 (재설정, 리베이스)으로 시작할 때 항상 좋습니다. 결국 편안 해지면 필요하지 않을 것입니다. 원하지 않는 방식으로 기록을 수정하고 백업 브랜치를 생성하지 않은 경우 git reflog
. Git은 그들을 가리키는 브랜치 나 태그가 없더라도 꽤 오랫동안 커밋을 유지합니다.
원래 답변 :
이 방법보다 약간 덜 무서운 방법 git reset --hard
은 새 분기를 만드는 것입니다. 여러분이 master
브랜치에 있고 다시 돌아가고 싶은 커밋이 c2e7af2b51
.
현재 마스터 브랜치의 이름을 변경합니다.
git branch -m crazyexperiment
좋은 커밋을 확인하십시오.
git checkout c2e7af2b51
여기에서 새 마스터 브랜치를 만듭니다.
git checkout -b master
이제 나중에 살펴보고 싶다면 여전히 미친 실험이 있지만 마스터 브랜치는 마지막으로 알려진 좋은 지점으로 돌아와 추가 할 준비가되었습니다. 실험을 정말로 버리고 싶다면 다음을 사용할 수 있습니다.
git branch -D crazyexperiment
git gui 구부러진 경우 gitk를 사용할 수도 있습니다.
돌아 가려는 커밋을 마우스 오른쪽 버튼으로 클릭하고 "여기로 마스터 분기 재설정"을 선택합니다. 그런 다음 다음 메뉴에서 열심히 선택하십시오.
'GUI 도구'라고 말하면 Windows 용 Git을 사용하고 있다고 가정합니다.
중요합니다. 아직하지 않은 경우이를 수행 할 새 분기를 만드는 것이 좋습니다. 이렇게하면 변경 사항을 테스트하는 동안 마스터가 동일하게 유지 될 수 있습니다.
GUI를 사용하면보기 오른쪽에있는 히스토리와 같이 '이 커밋을 롤백'해야합니다. 그러면 왼쪽에 커밋 할 변경 사항으로 원하지 않는 모든 파일이 있음을 알 수 있습니다. 이제 커밋되지 않은 모든 파일 위에있는 회색 제목을 마우스 오른쪽 버튼으로 클릭하고 '변경 사항 무시'를 선택해야합니다. 이렇게하면 파일이이 버전의 상태로 돌아갑니다.
'program story' 카테고리의 다른 글
파이썬에서 16 진수 문자열을 int로 변환 (0) | 2020.09.30 |
---|---|
jQuery를 사용하여 키보드에서 Enter 키를 감지하는 방법은 무엇입니까? (0) | 2020.09.30 |
"캐시 친화적"코드 란 무엇입니까? (0) | 2020.09.30 |
항상 소수점 이하 2 자리를 표시하도록 숫자 형식 지정 (0) | 2020.09.30 |
컨테이너 하단에 div를 배치하려면 어떻게해야합니까? (0) | 2020.09.30 |