'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"
경고 :
git clean -f
추적되지 않은 파일을 제거합니다. 즉, 저장소에 저장되지 않아서 갑자기 사라졌습니다. 추적되지 않은 모든 파일을 수행하기 전에 추적하는지 확인하십시오.
참조 시도하고 참조하십시오 git clean -f
.
git reset --hard
추적되지 않은 파일 git-clean
은 제거하지, 추적 된 루트 디렉터리에서 Git 추적에 있지 않은 모든 파일을 제거합니다.
또는 @Paul Betts가 말했듯 이이 작업을 수행 할 수 있습니다 (하지만 무시 된 파일도 모두 제거됨).
git clean -df
git clean -xdf
주의! 무시 된 파일도 삭제됩니다.
'ProgramingTip' 카테고리의 다른 글
JavaScript에서 배열을 비교하는 방법은 무엇입니까? (0) | 2020.09.28 |
---|---|
믹스 인이란 무엇이며 왜 유용합니까? (0) | 2020.09.28 |
명령 줄에서 모든 환경 변수 (0) | 2020.09.28 |
Scala 2.8 컬렉션 라이브러리는 "역사상 가장 긴 자살 기록"의 사례입니까? (0) | 2020.09.28 |
RSA 키 지문 계산 (0) | 2020.09.28 |