변경 취소 - Git 재설정 및 Git 되돌리기

3439 단어 revertgithubresetgit
대규모 오픈 소스 프로젝트에서 작업할 때 개발자가 분기를 만들고 파일을 추가하고 준비가 되었을 때 커밋을 위해 스테이징하는 것은 매우 명백합니다.

그러나 경우에 따라 변경한 내용이 좋지 않거나 방금 추가한 기능이 적합하지 않다는 것을 깨달을 수 있습니다.
일부 파일을 수정하고 코드 베이스에서 많은 줄을 추가 및 삭제했지만 이제 돌아가서 변경 사항을 되돌리려고 합니다.

걱정하지 마세요. Git이 도와드리겠습니다!

힘내 되돌리기



공유 기록을 실행 취소하는 기본 방법은 git revert입니다.
되돌리기는 공유 기록에서 커밋을 제거하지 않기 때문에 재설정보다 안전합니다. 되돌리기는 실행 취소하려는 커밋을 유지하고 원하지 않는 커밋을 반전하는 새 커밋을 만듭니다. 이 방법은 원격 개발자가 분기를 풀하고 원하지 않는 커밋을 취소하는 새로운 되돌리기 커밋을 받을 수 있기 때문에 공유 원격 공동 작업에 더 안전합니다.

프로젝트의 다른 개발자에게 심각한 문제를 일으킬 수 있으므로 공개 리포지토리로 푸시된 커밋을 재설정해서는 안 됩니다.



대신 사용git revert
git log
#This will show the previous commits and their hashes. Copy 6 char hash of initial commit.

git revert <hash of initial commit>


실행하여 확인할 수 있습니다.

git status 
git log 


힘내 재설정



개발자가 사용할 수 있는 다목적 도구입니다.git reset는 개인 분기/로컬에서 변경 사항을 실행 취소하는 데 사용됩니다. Git의 내부 상태 관리 메커니즘의 변경 사항을 반영하려는 위치에 따라 세 가지 모드가 있습니다. Git에는 커밋 트리(HEAD), 스테이징 인덱스 및 작업 디렉터리의 세 가지 상태 관리가 있습니다.

--부드러운



이것은 가장 안전한 재설정 모드입니다.
--soft는 모든 모드와 마찬가지로 헤드를 로 재설정합니다.
인덱스 파일이나 작업 트리를 전혀 건드리지 않고 변경된 모든 파일을 "커밋할 변경 사항"으로 남겨둡니다.
Staging Index와 Working Directory는 변경되지 않은 상태로 유지되므로 두 곳 모두에서 변경 사항이 손실되지 않습니다. 커밋 트리만 변경됩니다.

git log
#This will show the previous commits and their hashes. Copy 6 char hash of initial commit.

git reset --soft <hash of initial commit>


실행하여 확인할 수 있습니다.

git status 
git log 


--혼합



이것이 기본 작동 모드입니다.
--mixed는 다음과 같은 영향을 미칩니다.
  • 참조 포인터가 업데이트되었습니다.
  • 스테이징 인덱스가 지정된 커밋의 상태로 재설정됩니다.
    스테이징 인덱스에서 실행 취소된 모든 변경 사항은 작업 디렉토리로 이동됩니다(git add file-1까지 복구 가능)

  • git log
    #This will show the previous commits and their hashes. Copy 6 char hash of initial commit.
    
    git reset <hash of initial commit>
    

    실행하여 확인할 수 있습니다.

    git status 
    git log 
    


    --딱딱한



    이것은 가장 위험한 옵션입니다. 작업을 삭제하려는 경우에만 사용하십시오.
    --hard는 다음과 같은 영향을 미칩니다.
  • 커밋 기록 참조 포인터가 지정된 커밋으로 업데이트됩니다.
  • 스테이징 인덱스 및 작업 디렉토리가 지정된 커밋과 일치하도록 재설정됩니다.
    모든 변경 사항은 손실되고 지정된 커밋의 상태와 일치합니다.

  • git log
    #This will show the previous commits and their hashes. Copy 6 char hash of initial commit.
    
    git reset --hard <hash of initial commit>
    

    실행하여 확인할 수 있습니다.

    git status 
    git log 
    


    다음은 변경 사항을 렌더링하는 세 가지 모드를 요약한 것입니다.

    좋은 웹페이지 즐겨찾기