Git 취소&스크롤 백 동작(git reset 와 get revert)
작업 영역:현재 지점 에서 수정 한 코드 입 니 다.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
양자 차이:
# 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 취소&스크롤 백 작업 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
브랜치 병합(Visual studio 2017 사용)의 계속입니다. 기능 추가를 위한 브랜치를 작성하고, 기능 추가한 후, 그 내용을 develop 브랜치에 병합해 봅니다. 1. 새롭게 「add1」라고 하는 브랜치를 작성 2. 브랜치 "add1"을 선택한 상태에서 M...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.