programing

'git reset --hard HEAD'를 사용하여 이전 커밋으로 되돌리려면 어떻게 해야 합니까?

showcode 2023. 4. 10. 22:28
반응형

'git reset --hard HEAD'를 사용하여 이전 커밋으로 되돌리려면 어떻게 해야 합니까?

저는 Git이 제 어플리케이션의 변경을 추적하고, 변경을 커밋할 때까지 그것을 유지한다는 것을 알고 있습니다.

이전 커밋으로 되돌리려면 다음을 사용했습니다.

$ git reset --hard HEAD

HEAD is now at 820f417 micro

하드 드라이브의 파일을 이전의 커밋으로 되돌리려면 어떻게 해야 합니까?

다음 단계는 다음과 같습니다.

git add .
git commit -m "revert"

하지만 하드 드라이브의 파일은 하나도 변경되지 않았습니다.

가 있어요, 첫, 상, 항, 항, 항, 항, 항, 습, 습, first, first, first, first, first, first.git reset --hard커밋되지 않은 변경은 모두 폐기되므로 잠재적으로 위험한 명령어입니다. '을 하세요'git status사용하기 전에 깨끗한 상태(즉, 비어 있음)입니다.

처음에 다음과 같이 말합니다.

Git 트랙은 내가 응용 프로그램에 대해 변경한 내용을 그대로 유지한다는 것을 알고 있으며, 변경 내용을 커밋할 때까지 유지되지만, 여기에 문제가 있습니다.

틀렸습니다.Git은 파일을 스테이징할 때만 파일 상태를 기록합니다.git add또는 커밋을 작성할 때 사용합니다. 그 Git은 실제로를 들어, 을 해도그러나 그 전까지는 Git은 실제로 파일 변경을 추적하지 않습니다.(예를 들어, 그렇다고 해도).git add새로운 버전의 파일을 스테이징 합니다.이것에 의해, 이전에 스테이징 에리어에서 그 파일의 스테이징 된 버전이 덧쓰기됩니다).

질문에서 다음 질문을 계속합니다.

이전 커밋으로 되돌리고 싶은 경우: git reset --hard HEAD and git returns: HEAD는 현재 820f417 마이크로입니다.

하드 드라이브의 파일을 이전의 커밋으로 되돌리려면 어떻게 해야 합니까?

하면.git reset --hard <SOME-COMMIT>깃을 들다

  • 의 브랜치(일반적으로 브랜치)를.master으로 되돌아가다<SOME-COMMIT>.
  • 다음 작업 및 영역를 "있다"에서 .<SOME-COMMIT>.

HEAD의 브랜치의 커밋)를 에, 그 모든 이 「」( 「커밋」)으로 되어 있습니다.git reset --hard HEADwill do는 커밋되지 않은 변경 사항을 모두 버리는 것입니다.

되돌아가고 이 '있다'라고 해 봅시다.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 추적 하에 있지 않은 파일을 추적 루트 디렉토리에서 삭제합니다.

또는 다음 작업을 수행할 수 있습니다(단, 무시된 모든 파일도 삭제되므로 주의하십시오).

  • git clean -df
  • git clean -xdf 주의! 이렇게 하면 무시된 파일도 삭제됩니다.

플래그 설명:

-d의 모든 합니다.

-f

Git 설정 변수 clean.requireForce가 false로 설정되어 있지 않은 경우 git clean은 -f 또는 -i를 지정하지 않는 한 파일 또는 디렉토리의 삭제를 거부합니다.Git은 두 번째 -f가 주어지지 않는 한 추적되지 않은 중첩된 Git 저장소(.git 하위 디렉토리가 있는 디렉토리)의 수정을 거부합니다.

-x표준 무시 규칙을 사용하지 않고 지정된 규칙을 사용합니다.-e하여 신규빌드를 할 수 이를 사용하여 클린 빌드를 시작할 수 있습니다.

출처: Man 페이지

언급URL : https://stackoverflow.com/questions/9529078/how-do-i-use-git-reset-hard-head-to-revert-to-a-previous-commit

반응형