Git 취소&스크롤 백 동작(git reset 와 get revert)

git 작업 흐름
작업 영역:현재 지점 에서 수정 한 코드 입 니 다.git add xx 이전!git add xx 와 git commt xxx 이후 의 것 은 포함 되 지 않 습 니 다.
임시 저장 영역:git add xxx 가 들 어 갔 고 git commt xxx 가 없습니다.
로 컬 분기:git commt-m xxx 가 로 컬 분기 에 제출 되 었 습 니 다.

코드 스크롤 백
원 격 창고 에 코드 를 업로드 할 때 문제 가 발생 할 수 있 습 니 다.모든 과정 에서 코드 를 되 돌 릴 수 있 습 니 다.
1.작업 공간 에서 의 코드

git checkout -- a.txt #       ,  
git checkout -- .  #     
메모:git checkout C.모든 것 을 버 립 니 다.새로 추 가 된 파일 은 삭제 되 고 삭 제 된 파일 은 복구 되 며 수 정 된 파일 은 돌아 갑 니 다.이 몇 가지 전 제 는 모두 임시 저장 구역 이전의 모습 으로 돌아 가 는 것 을 말한다.이전에 임시 저장 소 에 저 장 된 코드 에는 아무런 영향 이 없다.commt 가 로 컬 지점 에 제출 한 코드 에 더 영향 을 주지 않 습 니 다.물론,만약 당신 이 이전에 임시 저장 이나 commt 가 전혀 없 었 다 면,그것 은 바로 당신 이 지난번 에 풀 어 낸 모습 으로 돌아 간 것 입 니 다.
2.코드 git 를 캐 시 에 추가 하고 commt 를 제출 하지 않 았 습 니 다.

git reset HEAD .   
git reset HEAD a.txt

이 명령 은 임시 저장 영역 만 바 꾸 고 작업 영역 을 바 꾸 지 않 습 니 다.이 는 다른 작업 이 없 는 상태 에서 작업 영역 에 있 는 실제 파일 이 이 명령 이 실행 되 기 전에 아무런 변화 가 없다 는 것 을 의미 합 니 다.
3.git commt 는 로 컬 분기 로 가지 만 git push 는 원 격 으로 가지 않 습 니 다.

git log #             commit id
git reset --hard <commit_id> #            
  
git reset --hard HEAD^ #          
  
git reset HEAD^ #       ,   git add   

4.git push 는 수정 사항 을 원 격 창고 에 제출 합 니 다.
1)git reset 를 통 해 지정 한 commt 를 직접 삭제 합 니 다.

git log #             commit id
git reset --hard <commit_id>
git push origin HEAD --force #       ,               

2)git revert 를 통 해 새로운 commt 로 이전 commt 를 되 돌 립 니 다.

git log #             commit id
git revert <commit_id> #        ,              

3)git revert 와 git reset 의 차이
-git revert 는 새로운 commt 로 굴 러 가기 전의 commt 를 되 돌려 줍 니 다.이번에 제출 하기 전의 commt 는 모두 보류 합 니 다.
-git reset 는 한 번 의 제출 로 돌아 가 제출 및 이전 commt 는 보류 되 지만 이 commt id 이후 의 수정 은 삭 제 됩 니 다.
개발 과정 에서 당신 은 반드시 이런 장면 을 만 날 것 입 니 다.
필드 1:
큰일 났 네.내 가 방금 원 하지 않 는 코드 를 로 컬 창고 에 넣 었 는데 push 작업 을 하지 않 았 어!
장면 2:
완전히 끝 났 습 니 다.방금 온라인 으로 업 데 이 트 된 코드 에 문제 가 생 겼 습 니 다.이번에 제출 한 코드 를 복원 해 야 합 니 다!
필드 3:
방금 전에 어떤 제출 이 너무 어 리 석 었 다 는 것 을 알 았 습 니 다.지금 은 그것 을 해치 우려 고 합 니 다!
취소 하 다.
상기 장면 1.진행 되 지 않 은git push전의 모든 조작 은'로 컬 창고'에서 실 행 된 것 이다.우 리 는 잠시"로 컬 창고"의 코드 복원 작업 을"취소"라 고 합 니 다!
상황 1:파일 이 수정 되 었 으 나 실행 되 지 않 았 습 니 다git add작업(working tree 에서 취소)

git checkout fileName
git checkout .
상황 2:여러 파일 에 대해 동시에git add작업 을 실 행 했 지만 이번 에는 그 중의 일부 파일 만 제출 하고 싶 습 니 다.

$ git add *
$ git status
#     
$ git reset HEAD <filename>
상황 3:파일 이git add작업 을 실 행 했 지만 변경 사항 을 취소 하려 고 합 니 다(index 내 스크롤 백)

#     
git reset HEAD fileName
#     
git checkout fileName
상황 4:수 정 된 파일 이 이미git commit되 었 지만,다시 수정 하려 면 새로운 Commit 가 발생 하지 않 습 니 다.

#          
$ git add sample.txt
$ git commit --amend -m"  "
상황 5:이미 현지에서 여러 차례git commit작업 을 진행 하 였 으 며,지금 은 그 중의 한 Commit 로 취소 하려 고 합 니 다.

git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]
구체 적 인 매개 변수 와 사용 설명 을 보십시오.Git Pro 의 깊이 있 는 리 셋 폭로 부분
스크롤 백
상기 장면 2.이미 진행git push,즉'원 격 창고'로 보 냈 다."원 격 창고"에 제출 된 코드 복원 작업 을"스크롤 백"이 라 고 합 니 다!주의:원 격 창고 에 스크롤 백 작업 을 하 는 것 은 위험 합 니 다.백업 을 미리 하고 다른 팀 구성원 에 게 알려 야 합 니 다!
만약 당신 이 매번 온라인 을 업데이트 할 때마다tag전 화 를 합 니 다.축하합니다.당신 은 상술 한 장면 2 의 상황 을 신속하게 처리 할 수 있 습 니 다.

git checkout <tag>
하면,만약,만약...

git checkout <branch_name>
상황 1:지정 한 파일 을 지정 한 버 전 으로 취소 합 니 다.

#            
git log <filename>
#      commitID
git checkout <commitID> <filename>
상황 2:마지막 원 격 제출 삭제
방식 1:revert 사용

git revert HEAD
git push origin master
방식 2:reset 사용

git reset --hard HEAD^
git push origin master -f
양자 차이:
  • revert 는 지정 한 제출 의 수정 을 포기 하지만 새로운 제출 이 생 성 되 므 로 제출 주석 을 작성 해 야 합 니 다.이전의 역사 기록 이 모두 있 습 니 다.
  • reset 은 HEAD 포인 터 를 지 정 된 제출 까지 가리 키 며,과거 기록 에 포기 한 제출 기록 이 나타 나 지 않 는 다 는 뜻 이다.
  • 상황 3:스크롤 백 제출
    
    #       commitID
    git log
    git revert commitID
    다음 제출 삭제
    
    git log --oneline -n5
    
    git rebase -i "commit id"^
    메모:마지막^번 호 를 주의해 야 합 니 다.commt id 의 이전 제출 이라는 뜻 입 니 다.
    
    git rebase -i "5b3ba7a"^

    편집 상자 에서 관련 commt 를 삭제 합 니 다.예 를 들 어pick 5b3ba7a test2,종료 저장(충돌 이 발생 하면 충돌 을 먼저 해결 해 야 합 니 다)!
    
    git push origin master -f
    이 를 통 해 과거 기록 여러 commit 를 처리 하거나 선택 할 수 있 습 니 다git rebase -i.해당 하 는 기록 만 삭제 하면 됩 니 다.rebase 는 commt 메 시 지 를 편집 하고 여러 commt 를 통합 할 수 있 습 니 다.
    Git 취소&스크롤 백 작업(git reset 와 get revert)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Git 취소&스크롤 백 작업 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기