질문 : 'git reset --hard HEAD'를 사용하여 이전 커밋으로 되돌리려면 어떻게해야합니까?
나는 Git이 내 응용 프로그램에 대한 변경 사항을 추적하고 변경 사항을 커밋 할 때까지 유지한다는 것을 알고 있지만 여기에서 중단 된 부분입니다.
이전 커밋으로 되돌리려면 다음을 사용합니다.
git reset --hard HEAD
Git은 다음을 반환합니다.
HEAD is now at 820f417 micro
그런 다음 하드 드라이브의 파일을 이전 커밋으로 되돌리려면 어떻게합니까?
내 다음 단계는 다음과 같습니다.
git add .
git commit -m "revert"
하지만 내 하드 드라이브에서 변경된 파일이 없습니다 ...
내가 옳고 그름을 무엇입니까?
답변
git reset --hard
는 커밋되지 않은 모든 변경 사항을 버리기 때문에 잠재적으로 위험한 명령이라는 점에 항상 주목할 가치가 있습니다. git status
의 출력이 깨끗한 지 (즉, 비어 있는지) 확인해야합니다.
처음에는 다음과 같이 말합니다.
그래서 나는 Git이 내 애플리케이션에 대한 변경 사항을 추적하고 변경 사항을 커밋 할 때까지 유지한다는 것을 알고 있지만 여기에서 중단 된 부분입니다.
틀 렸습니다. Git은 파일을 준비 할 때 ( git add
) 또는 커밋을 생성 할 때만 파일의 상태를 기록합니다. 특정 상태의 프로젝트 파일을 포함하는 커밋을 생성 한 후에는 매우 안전하지만 그때까지는 Git이 파일의 변경 사항을 실제로 "추적"하지 않습니다. (예를 들어 git add
를 수행하더라도 준비 영역에서 해당 파일의 이전에 준비된 버전을 덮어 씁니다.)
귀하의 질문에서 다음 질문을 계속하십시오.
이전 커밋으로 되돌리려면 다음을 사용합니다. git reset --hard HEAD And git returns : HEAD is now at 820f417 micro
그런 다음 하드 드라이브의 파일을 이전 커밋으로 되돌리려면 어떻게합니까?
git reset --hard <SOME-COMMIT>
하면 Git은 다음을 수행합니다.
- 현재 분기 (일반적으로
master
<SOME-COMMIT>
을 가리 키도록합니다. - 그런 다음 작업 트리와 색인 ( "스테이징 영역")의 파일을
<SOME-COMMIT>
에서 커밋 된 버전과 동일하게 만드십시오.
HEAD
현재 분기 (또는 현재 커밋)를 가리 키므로 git reset --hard HEAD
가 수행하는 모든 작업은 커밋되지 않은 변경 사항을 버리는 것입니다.
따라서 돌아 가려는 좋은 커밋이 f414f31
이라고 가정합니다. git log
또는 모든 내역 브라우저를 통해 찾을 수 있습니다.) 그런 다음 정확히 수행하려는 작업에 따라 몇 가지 다른 옵션이 있습니다.
- 대신 이전 커밋을 가리 키도록 현재 분기를 변경하십시오.
git reset --hard f414f31
그렇게 할 수 있습니다. 그러나 이것은 브랜치의 히스토리를 다시 쓰는 것이므로이 브랜치를 다른 사람과 공유 한 경우에는 피해야합니다.f414f31
이후에 수행 한 커밋master
브랜치의 기록에 포함되지 않습니다. f414f31
과 정확히 동일한 프로젝트 상태를 나타내는 새 커밋을 생성하지만 기록에 추가하기 만하면 기록이 손실되지 않습니다. 이 답변 에서 제안 된 단계를 사용하여 수행 할 수 있습니다.git reset --hard f414f31 git reset --soft HEAD@{1} git commit -m "Reverting to the state of the project at f414f31"
출처 : https://stackoverflow.com/questions/9529078/how-do-i-use-git-reset-hard-head-to-revert-to-a-previous-commit
'개발관련 > Git' 카테고리의 다른 글
[git] 현재 지점에 대한 추적 정보가 없습니다. (0) | 2021.10.05 |
---|---|
Git으로 브랜치에 변경된 여러 파일 중 하나만 숨길 수있는 방법 (0) | 2021.10.01 |
Windows의 Git Bash에서 'git diff' 결과를 종료하는 방법 (0) | 2021.09.30 |
[오류] gpg failed to sign the data fatal: failed to write commit object[Git 2.10.0] (0) | 2021.09.30 |
Git이 프록시 서버에서 작동 - "Request timed out"로 실패 해결 방법 (0) | 2021.09.30 |