Git 코드 실행 취소 롤백은 이 기사를 읽는 것만으로도 충분합니다!

1. 코드 폐지

  현재는 모두 사용하고 있습니다 git프로젝트 개발시 제출된 코드는 항상 문제가 생기기 마련이니 롤백 작업을 취소하고 싶은 경우 롤백 취소 코드에 대해 별도로 소개해드리겠습니다.
  일반 제출 코드를 원격 웨어하우스에 제출하려면 다음 3단계 명령이 있습니다.

     git add . ------------> git commit -m 说明 -------------> git push
   (添加到暂存区)              (提交到本地仓库)             (推送到远程仓库)

  에서 git코드를 해지하는 명령어는 주로 인데 , , 의 3가지 모드가 git reset있습니다 . 이 세 가지 명령어는 주로 웨어하우스 제출 후 코드 롤백을 위한 것으로, 기본적으로 모두 커밋 로그 버전 번호로 롤백됩니다. 세 가지 모드가 나타내는 다른 의미는 다음과 같습니다.git reset --softgit reset --hardgit reset --mixed

  • --soft: 이 명령은 코드가 commit임시 저장 영역으로 취소된 후 코드가 로컬에서 변경되지 않음을 나타냅니다.

  • --mixed: 이 명령은 코드가 commit임시 저장 영역으로 취소될 때까지 코드가 로컬에서 변경되지 않음을 나타냅니다.

  • --hard: 이 명령어는 코드를 특정 버전으로 롤백하라는 의미로, 로컬에서 지정된 버전으로 코드가 변경되므로 주의해야 합니다.
      아래에서 설명할 내용은 간단히 아래 그림과 같습니다.
    여기에 이미지 설명 삽입

다시 강조: --hard명령, 사용할 때 주의하십시오. 코드를 직접 롤백하고 사라집니다. 새로 작성된 로컬 항목도 지워집니다.

2. 다른 모드에서 실행 취소

  다음은 위의 제출 단계 및 철회 모드를 중심으로 철회 후 현상을 설명합니다. 실행 취소에 대해 이야기 하기 전에 두 가지 명령인 git status.   우선 이 명령어를 통해 현재 코드가 어느 브랜치 아래에 있는지, 워크스페이스에서의 코드 상황을 알 수 있다.   위 그림과 같이 코드 작업공간에 진입하면 현재 코드가 분기 아래에 있는 것을 확인할 수 있으며 현재 작업공간에는 임시 저장소 영역에 제출되지 않은 파일이 1개 있습니다. 명령어는 코드 제출 기록을 보는 것으로, 제출 정보와 버전 번호(SHA 코드)를 볼 수 있습니다. 아래 그림과 같이:   물론 이 글에서 언급한 명령 실행 위치는 프로젝트 작업 공간, 보통 프로젝트 루트 경로 아래에서 실행되어야 합니다.   코드 취소는 주로 다음과 같은 종류의 취소를 생각합니다. , , . 세부 사항은 다음과 같습니다.git log
git status
여기에 이미지 설명 삽입
git statusv1.05.txt
  git log
여기에 이미지 설명 삽입
git
提交暂存区的撤销(add撤销)提交本地仓库撤销(commit撤销)推送远程仓库撤销(git push之后的撤销)

2.1 추가 취소

  코드를 git add .임시저장소에 제출한 후 임시저장소에서 탈퇴하고자 하는 경우에는 주로 다음과 같은 방법이 있습니다.

2.1.1 git reset철회

  임시 저장 영역에 제출된 코드를 직접 철회하려면 git reset명령을 입력하는 것이 가장 편리합니다. 이 명령 또는 입력은 git reset HEAD동일한 효과를 가집니다. git add .이 단계는 아래 이미지와 같이 코드를 실행 전 상태로 되돌립니다 .
여기에 이미지 설명 삽입

2.1.2 git restore철회

  물론 git추천하는 또 다른 명령이 있지만 덜 편리하게 느껴집니다 git reset. 즉, 위 그림의 녹색 텍스트 위 줄에서 git restore --staged명령입니다.

git restore --staged .

또는:

git restore --staged 文件名

2.1.3 git reset --mixed철회

 처음에 세 가지 취소 모드를 언급했는데 그 중 --mixed임시 저장 영역에 방금 제출한 코드를 취소하려면 다음을 수행할 수도 있습니다.

git reset --mixed

  그러나 이 세 가지 모드는 --soft주로 --mixed커밋 된 코드 버전 번호를--hard 기반으로 코드를 롤백하는 데 사용되며 여기서는 약간 과잉입니다. 또한 버전 번호를 쓰지 않고 실행취소 작업만 완료할 수 있으며 나머지 두 개는 버전 번호를 쓰지 않으면 아무런 효과가 없습니다(HEAD^ 제외). 질문하기: 롤백되기 전에 코드를 사용할 수 있습니까 ? 사용량을 롤백할 수 있습니까? 또한 롤백은 어떻게 됩니까?--mixed
  --softgit add .--hard

2.2 커밋 취소

  코드가 git commit -m 备注说明로컬 웨어하우스에 제출된 후 코드를 롤백하려는 경우 여러 상태에서 코드를 롤백하는 여러 가지 방법이 있습니다. 주요 사용법 --soft, --mixed모드. 나중에 버전 번호를 추가하는 방법은 --soft아래 모드에서만 도입됩니다.

2.2.1 임시 보관 장소로 철수

  코드가 임시 저장 영역으로 취소된 후에만 로컬 창고에 추가되지 않은 경우 --soft모드만 사용할 수 있습니다. 이 모드를 사용하려면 버전 번호를 추가해야 하며 주로 다음과 같은 작성 방법이 있습니다.

2.2.1.1 git reset --soft HEAD^쓰기

  HEAD^이전 버전 번호에 대한 취소를 나타내며 그 중 하나는 ^마지막 시간을 의미 ^^하고 마지막 시간을 의미하는 식입니다. windows또한, 시스템 하에서 정상적인 입력 없이 git reset --soft HEAD^코드가 git add .후속 상태(임시 저장 영역 상태) 로 취소될 수 있음을 유의해야 한다. 하지만 windows시스템에 입력해야 합니다 git reset --soft HEAD^^.

  이것은 windows시스템 아래 cmd 콘솔의 기본 줄 바꿈이 아니기 ^때문에 \입력이 적으면 더 많은 메시지가 표시됩니까? , 이는 다음 줄을 입력해야 하는지 여부를 묻는 의미이며 ^기호는 개행 문자로 간주되어 git 명령에서 무시됩니다.

  따라서 windows아래와 같이 commit4번을 입력해야 합니다 ^.

解释:当每次commit之后,都会有提交的记录版本号(通过输入git log命令查看),通过HEAD^只能撤销一次,
拼接多个就会撤销多个。

2.2.1.2 git reset --soft HEAD~쓰기

  git reset --soft HEAD~11이전 제출인 경우 마지막 제출을 실행 취소하는 것을 의미하는 명령입니다 ~2. 이 명령은 시스템 문제와 비시스템 문제를
   구분하지 않으며 이 명령을 먼저 사용할 수 있습니다.windowswindows

2.2.1.3 git reset --soft 版本号쓰기

   철회하고자 하는 버전이 오래되어 ^숫자 또는 여러 개의 숫자로 잠글 수 없는 경우, 이 경우 를 git log사용하여 이전 제출 기록을 확인한 후 버전 번호에 따라 철회 할 수 있습니다 git reset --soft 版本号.

또한 다른 코드 모드로 폴백하려면 --mixed, (신중하게)   를 사용해야 합니다 .   아래 그림과 같이 조회된 로그 상황입니다.--hard

D:\workspaces\testproject>git log
commit 15047ee4229c4c0255a62816290c2a41068e8327 (HEAD -> master)
Author: lingsf <944916889@qq.com>
Date:   Tue Jan 3 20:16:53 2023 +0800

    提交9文件

commit 09f0fd5e00d863ccab839824c0ac11f2c82dabf2
Author: lingsf <944916889@qq.com>
Date:   Tue Jan 3 20:04:43 2023 +0800

    提交8文件

commit 9e10843e96f7cd5a138f405231f06c61e83c4429
Author: lingsf <944916889@qq.com>
Date:   Tue Jan 3 19:48:54 2023 +0800

    提交7文件

commit 05fd4925cf0e4341a404d5c5596470d6053d7319
Author: lingsf <944916889@qq.com>
Date:   Tue Jan 3 16:40:48 2023 +0800

   이 버전 으로 대체 提交7文件:


D:\workspaces\testproject>git reset --soft 9e10843e96f7cd5a138f405231f06c61e83c4429

D:\workspaces\testproject>git log
commit 9e10843e96f7cd5a138f405231f06c61e83c4429 (HEAD -> master)
Author: lingsf <944916889@qq.com>
Date:   Tue Jan 3 19:48:54 2023 +0800

    提交7文件

2.2.2 임시 보관 장소로 철수하기 전에 -git reset --mixed

  임시 저장 영역(즉, git add .이전) 으로 실행 취소하려면 --soft로 수정하면 됩니다 --mixed. 기타 사용법은 위와 동일합니다.

2.3 커밋 후 주석 수정

  사실 주석이 잘 작성되지 않아 다시 수정하고 싶어서 코드를 취소하는 경우가 많습니다. commit다음 주석 만 수정하려면 명령을 사용하여 commit원격 분기를 푸시하기 전에 vim 편집 공간에 들어가고, 입력을 입력하여 편집 모드로 들어가고, 상단 주석 텍스트를 수정하고, 수정 후 키를 클릭하고, 그런 다음 입력하여 저장하고 종료합니다. 아래 그림과 같이:git commit --amendiesc:wq
여기에 이미지 설명 삽입

  물론 원격 분기로 푸시된 경우 이 명령을 통해 로그 내용을 수정할 수도 있지만 수정 후 새 로그 레코드가 제출되며 원격에는 여전히 이전 주석이 남아 있습니다.
  또한 현지에서 두 번 제출 commit하고 지침을 두 번 작성하면 마지막 항목만 수정할 수 있습니다.

2.4 원격 창고 푸시 후 실행 취소

   원격 창고로 푸시하는 것과 로컬 창고로 제출하는 것에는 차이가 없으며 , --soft, --mixed실행 --hard취소 세 가지 모드를 계속 사용할 수 있습니다. 취소는 어떤 모드를 사용하든 실제로 우리의 로컬 코드이고 원격과는 아무런 관련이 없기 때문에 코드를 취소한 후 원래 분기로 다시 병합하거나 새 분기를 가져오는 경우 코드는 영향을 미치지 않습니다. 원격 지점. (주의해서) 다른 모드에 대한 폴백 코드를
  사용하십시오 .   또한 원격 브랜치로 푸시된 코드 레코드는 실행 취소할 수 없으며 로컬 변경 사항을 실행 취소하고 다시 제출할 수만 있으며 이전 제출 레코드는 실행 취소할 수 없습니다.--hard

3. 실제 작동

3.1 시나리오 1: 온라인 분기가 적용되고 새 기능이 추가됩니다.

  온라인 프로젝트에 대한 후속 임대 재고 수요를 추가하고 온라인 본점에서 직접 연구 개발을 개발했습니다. 그러나 테스트 및 기타 문제로 인해 새로 개발된 기능을 직접 실행할 수 없습니다. 나중에 몇 가지 버그가 온라인에서 제기되어 수정이 필요했습니다. 온라인 지점은 이미 후속 임대 재고의 코드를 추가했기 때문에 이 경우 온라인 지점을 롤백하려면 다음 단계를 수행할 수 있습니다.

3.1.1 새로운 임시 브랜치 끌어오기

  먼저 현재 지점을 기반으로 새로운 임시 지점을 뽑습니다(주식의 후속 임대 수요 포함).

3.1.2 커밋 레코드를 통한 롤백 위치 찾기

  제출 지침(여기서는 코드 제출 비고를 올바르게 작성하는 것의 중요성을 반영함)에 따라 코드가 후속 임대 재고를 처음 제출하는 수요 지점을 찾고 그 앞에 버전 번호를 기록합니다. 다음과 같습니다. 분석 후 온라인 분기 상태로 롤백하기 전에 이 시간
여기에 이미지 설명 삽입
  으로 롤백해야 합니다 .19f5a4a3

--hard3.1.3 폴백 코드 기반

  위 사진 우측의 버전 번호를 기준으로 19f5a4a3b87f0478a9ed061de5fa0e756a36c295복사를 클릭한 후 새로 뽑은 임시 브랜치에 입력하여 git reset --hard 19f5a4a3b87f0478a9ed061de5fa0e756a36c295이 브랜치의 코드 롤백을 완료한 후 테스트에 문제가 없으면 브랜치를 병합하거나 이름을 바꿉니다. 마스터 브랜치의 새 라인으로.

3.2 시나리오 2: 일부 함수는 로컬 코드로 작성되었지만 아직 제출되지 않았습니다.

  메인 브랜치에 로컬로 새로운 기능을 추가하는 경우는 주로 개발된 것을 많이 추가하고 아직 제출하지 않았기 때문입니다. 추가된 코드가 아직 완성되지 않았으며 이전 분기를 변경하려면 이 작업을 이 시점에서 수행해야 합니다.

3.2.1 현재 코드를 기반으로 한 새로운 분기

git checkout -b 新分支名웨어하우스에 코드를 제출하지 말고 코드가 제출되면 이전 단계(-hard를 사용할 수 없음)에 따라 롤백한 다음 먼저 분기를   꺼내는 데 사용하십시오 . 최소한 이 분기의 로컬 저장소에 코드를 커밋합니다.

3.2.2 원래 브랜치로 다시 전환

  새 분기 코드를 제출한 후 기본 분기로 다시 전환하면 이 분기는 여전히 온라인 분기이며 필요한 문제를 긴급하게 수정할 수 있습니다.

4. 요약

  코드 실행취소는 자주 사용하는 기능으로 가장 많이 사용하는 명령어는 git resetgit reset --amend주석 수정입니다. 사용 과정에서 주의를 기울이고 --hard더 많은 연습을 통해 차이점을 알게 될 것입니다.

추천

출처blog.csdn.net/wohaqiyi/article/details/129477866