먼저 모든 커밋되지 않은 변경 사항을 버리게되므로 잠재적으로 위험한 명령임을 git reset --hard
이 항상주의해야합니다. 안전을 위해 사용하기 전에 항상 git status
의 출력이 깨끗한 지 (즉, 비 었는지) 확인해야합니다.
처음에 다음과 같은 말 :
그래서
나는 힘내 내가 내 응용 프로그램에 대한 변경 사항을 추적하는 것을 알고, 그리고 내가 변경 사항을 커밋 할 때까지 그들에 보유하고 있지만, 여기에 내가 전화를 끊었하고있어 어디 :
잘못된 가정을 밝혀내는 경우, 이것이 올바르지 않다고 말해야합니다. 힘내는 파일을 준비 할 때 (git add
) 또는 커밋을 만들 때 파일의 상태 만 기록합니다. 특정 상태의 프로젝트 파일을 가지고있는 커밋을 생성하면 매우 안전합니다.하지만 그때까지 힘내 기는 파일에 실제로 "변경 내용을 추적하지"않습니다. (예를 들어 git add
을 실행하여 새 버전의 파일을 준비한 경우에도 이전에 준비된 버전의 파일을 준비 영역에 덮어 씁니다.귀하의 질문은 다음 질문에 갈에서)
:
내가 사용하는 커밋 이전으로 되돌리려 : 자식 --hard HEAD와 자식 수익을 재설정 : HEAD가 820f417에서 지금 마이크로
어떻게 하드 드라이브의 파일을 이전 커밋으로 되돌릴 수 있습니까? 당신이 다음 git reset --hard <SOME-COMMIT>
을 할 경우
힘내됩니다
- 는
<SOME-COMMIT>
에서 (일반적으로 master
) 다시 지점으로 현재의 지점을 확인합니다.
- 그런 다음 작업 트리의 파일과 색인 ("준비 영역")을
<SOME-COMMIT>
에서 커밋 된 버전과 동일하게 만듭니다. 현재 지점 (또는 현재 커미트)에
HEAD
점, 그래서 모든 git reset --hard HEAD
할 것이라는 점을 당신이 커밋되지 않은 변경을 버려야하는 것입니다.
그래서 다시 돌아가고 싶은 커밋이 f414f31
이라고 가정합니다. (당신은 git log
또는 역사 브라우저를 통해 그것을 찾을 수 있습니다.) 그런 다음 당신이 원하는 정확히 무엇에 따라 몇 가지 다른 옵션이 있습니다
- 는 이전 대신 커밋을 가리 키도록 현재 분기를 변경합니다.
git reset --hard f414f31
을 사용하면됩니다. 그러나이 방법은 지점의 기록을 다시 쓰는 것이므로이 지점을 다른 사람과 공유 한 경우에는 피해야합니다. 또한 f414f31
이후에 수행 한 커밋은 더 이상 master
분기의 기록에 포함되지 않습니다.
프로젝트의 정확히 동일한 상태를 나타내는 새로운 커밋을 f414f31
으로 만듭니다. 그러나 기록을 잃어 버리지 않도록 기록에 추가합니다. 당신은 this answer에 제안 된 단계를 사용하여 그렇게 할 수 있습니다 - 같은 :
git reset --hard f414f31
git reset --soft [email protected]{1}
git commit -m "Reverting to the state of the project at f414f31"
당신이 커밋 다시 그 이전에 내 하드 드라이브에있는 파일을 되 돌리는 의미는 무엇입니까? 820f417이 원하는 커밋이면 파일은 커밋의 정확한 내용을 갖습니다. – kennytm
모든 변경 사항을 실행 취소하려면'git reset --hard' 후에'git checkout'을 실행해야합니다. –
jweyrich
답변이 만족스럽지 않을 때 나는 [duplicate]라는 아이디어를 얻지 못하고 새로운 질문을 던집니다. 더 많은 중복의 관점에서 재앙을위한 요리법입니다. –