이 글은 Git 롤백 코드에 대한 관련 지식을 제공합니다. Git은 소규모 프로젝트부터 대규모 프로젝트까지 효율적이고 빠르게 버전 관리를 처리할 수 있는 오픈 소스 분산 버전 관리 시스템입니다. 도움이 되는.
일상적인 코딩 과정에서 브랜치 간 병합, 롤백, 제출, 태그 지정 및 기타 작업은 불가피합니다. 여전히 git 도구를 사용하여 코드를 롤백하는 방법을 모르거나 항상 걱정됩니다. 코드를 잃는 것은 매우 위험합니다. 결국 코드를 잃는 것은 약간의 성능이나 많은 점수를 차감하게 되지만 걱정하지 마십시오. 이 글을 읽은 후에는 운이 좋게도 코드가 손실될 수 있습니다. 롤백의 일반적인 상황을 시뮬레이션하기 위해 브랜치를 단계별로 안내할 것이기 때문입니다
Git(발음) /gət/)는 소규모 프로젝트부터 초대형 프로젝트까지의 버전 관리를 효과적이고 신속하게 처리할 수 있는 오픈소스 분산 버전 관리 시스템입니다.
일일 코드 롤백에는 일반적으로 사용되는 두 가지 방법이 있습니다: git revert
및 롤백을 위한 git Reset
이 두 가지 방법은 서로 다릅니다. 최선을 다하겠습니다. 이 두 명령이 수행할 수 있는 작업을 간단하고 명확하게 소개합니다. 다음으로 개인 창고에서 0부터 시작하는 새 분기를 가져와 메인 분기인 master
와 개발 분기를 빌드하겠습니다. 시뮬레이션용 개발
git revert
和git reset
来进行回滚,这两种分别对应的不同的情况我尽量简单明了的介绍这两个命令都能做些什么,接下来我会从个人仓库新拉个分支从0开始,建两个分支,分别是主分支master
和开发分支develop
来进行模拟
1、reset
的作用是当你希望提交的commit
从历史记录中完全消失就可以用
2、比如你在master
分支提交了A-->B-->C
提交了三个记录,这个时候如果C记录有问题你想回滚到B就可以用git reset
进行
3、这个命令大概率的情况都是用在我们主分支的,因为我们上线的分支一般是master
分支然后从develop
进行功能开发
4、开发完成之后将分支合并到master
,如果在上线之前发现合并的分支用问题可以将develop
合并过来的分支进行回滚
5、说白了就是取消develop
的本次合并
6、但是有一种情况就是协作开发的时候大家都合并到master
之后就不能用reset
强行回滚commit
因为这样会把其他人的提交记录给冲掉,这时候就可以用revert
来进行操作我们在下面说
制造一个分支模拟环境
1.从你自己的git仓库创建一个新项目之后拉到本地
2.创建一个index.js随便写点东西,之后提交到仓库
3.我们在终端使用git log
查看commit可以看到目前只有一个刚才提交的commit
4.我们从master
分支迁出一个develop
分支git branch develop
,并且切换到该分支 git checkout develop
5.在develop
reset
기능은 commit
을 완전히 제출하려는 경우입니다. 기록에서 사라지려면 2를 사용할 수 있습니다. 예를 들어 master
분기에 세 개의 레코드를 제출한 경우 A-->B-->C
, 현재 C 레코드에 문제가 있어 B로 롤백하고 싶다면 git Reset
을 사용하여 수행할 수 있습니다
3. 이 명령은 메인에서 가장 많이 사용됩니다. 브랜치는 온라인 상태이기 때문에 일반적으로 브랜치는 마스터
브랜치이며 기능 개발은 develop
4에서 수행됩니다. 개발이 완료된 후 브랜치를 다음으로 병합합니다. master
. 온라인에 접속하기 전에 발견된 경우 병합된 브랜치에 문제가 있는 경우 develop
develop
6 병합을 취소하는 중입니다. 하지만 공동 개발 중에 모든 사람이 master
에 병합된 후에는 reset
을 사용할 수 없는 상황이 있습니다. code>를 사용하여 commit
을 강제로 롤백하면 다른 사람의 제출 기록이 Flush로 전송되므로 revert
를 사용하여 작업을 수행할 수 있습니다. 이에 대해서는 아래에서 설명하겠습니다브랜치 시뮬레이션 환경 만들기
2. index.js를 만들고 아무렇게나 작성한 다음 웨어하우스에 제출합니다1. 자신의 Git 저장소에서 새 프로젝트를 만들고 로컬로 가져옵니다.
3
git log를 사용하여 터미널에서 커밋을 보면 현재 방금 제출된 커밋이 하나만 있음을 알 수 있습니다🎜🎜<img src="https://img.php.cn/upload/article/000/000/%20067/d929b7fc1dd3f5bc16d3f8fd326c7d39-2.png" alt="git 롤백 코드를 이해하게 해주세요(자세한 예시)">🎜🎜4. <code>마스터
분기 develop
분기 git 분기 개발에서 하나를 마이그레이션했습니다.
, 그리고 이 브랜치 git checkout development
🎜🎜5로 전환하세요. develop
브랜치에 새 브랜치를 추가하세요. B의 레코드가 개발 커밋 레코드에 추가됩니다. 🎜🎜🎜6. 그런 다음 개발 브랜치에 코드 조각을 추가합니다🎜🎜🎜🎜🎜7. 브랜치 비교해 보면 dev 브랜치가 마스터 브랜치보다 두 커밋이 앞선다는 것을 알 수 있습니다🎜🎜🎜🎜🎜🎜🎜 브랜치를 병합할 때 때로는 코드가 다르지만 문제가 발생할 수 있습니다. 브랜치를 병합할 때 메시지가 표시됩니다. 현재 개발 브랜치의 커밋 기록이 병합할 대상 브랜치보다 뒤처지기 때문에 코드가 업데이트되지 않습니다. 이러한 상황의 원인은 재설정을 남용하기 때문이므로 재설정을 주의해서 사용해야 합니다. 🎜🎜🎜 리셋을 조작해 느껴보세요 잠시만요 🎜🎜1. develop
브랜치의 코드를 master
로 병합하고, master
브랜치로 전환한 후 git merge development를 실행합니다. code><code>develop
分支的代码合并到master
,切换到master
分支 执行git merge develop
2.我们在master分支使用git log
查看commit记录找到B记录,准备回滚这一条,回滚的时候不需要输入全部的commid一般是前7位就够用
3.重点来了我们使用git reset 69fde2c
进行回滚,这个时候查看log记录发现最后一条新增c
记录没有了,这里还有个问题如果直接使用git push
推送会有以下提示。
这是因为本地的记录因为我们的回滚已经落后于仓库的代码了,这个使用需要使用
git push -f
进行强制提交
4.这个时候master分支就剩下A和B的commit记录了,到这里就是一次完整的reset回滚记录,之后我们还是可以继续正常把develop分支合并到master的
1、revert的原理是,在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险
2、revert可以抵消上一个提交,那么如果想要抵消多个需要执行 git revert 倒数第一个commit id 倒数第二个commit
3、这个就常用于当你提交了一次commit之后发现提交的可能有问题就可以用到revert
4、还有一种情景是已经有很多人提交过代码,但是想改之前的某一次commit记录又不想影响后面的也可以使用revert,他会把你后面提交的记录都放到工作区只是合并的时候需要注意一点
我们来模拟一下环境
1.切到develop分支现在该分支有三个commit记录
2.我们使用rever进行回滚试一下git revert 16083ce
,如果你也用的是vs code可以看到工作区的变化,并且在控制台可以提交默认的commit
3.看一下log记录,可以看到新增了一个记录Revert 新增C
,并且原来的新增C
还是在的
1、在上线之前我们需要对当前的commit记录打一个tag方便上线的代码有问题可以及时回滚
我们来介绍一下常用的几个命令
1.git tag
列出所有的tag列表
2.创建一个tag,使用git tag [name]
,我们新增一个 git tag 测试4
,在使用git tag
查看一下
3.查看tag对应的commit信息,git show [tag名字]
,举个例子git show 测试1
git log
를 사용하여 커밋 레코드를 확인하고 B 레코드를 찾아 롤백할 때 준비합니다. 일반적으로 처음 7자리이면 충분합니다
git Reset 69fde2c
를 사용하여 롤백합니다. 이때 로그 기록을 확인하여 마지막 새 c
를 찾습니다. > 레코드가 사라졌습니다. git push
를 직접 사용하면 여기에 또 다른 문제가 있습니다. code>Push에는 다음 메시지가 표시됩니다.
4해야 합니다. B와 함께 커밋이 기록되었습니다. 이것은 완전한 재설정 및 롤백 기록입니다. 그 후에는 계속해서 개발 브랜치를 마스터에 병합할 수 있습니다.이런 이유는 롤백으로 인해 로컬 레코드가 웨어하우스 코드보다 뒤처졌습니다. 이 경우
git push -f
를 사용하여 강제 커밋
git revert를 실행해야 합니다. 마지막 커밋 ID 두 번째 커밋
🎜🎜3. 커밋을 제출하고 제출에 문제가 있을 수 있음을 발견할 때 자주 사용됩니다. revert🎜🎜4를 사용할 수도 있습니다. 많은 사람들이 이미 코드를 제출했지만, 후속 커밋에 영향을 주지 않고 특정 이전 커밋 레코드를 변경하려면 나중에 제출한 모든 레코드를 작업 공간에 저장하기만 하면 됩니다. 🎜🎜시뮬레이트하자 환경🎜🎜1. 이제 개발 브랜치로 전환하세요. 🎜🎜2. rever를 사용하여 git revert 16083을 롤백해 보겠습니다. ce
. vs 코드를 사용하면 작업 공간에서 변경 사항을 볼 수 있고 콘솔에서 기본 커밋을 제출할 수 있습니다🎜🎜 🎜🎜3. 로그 레코드를 보면 새 레코드 Revert New C
가 추가된 것을 확인할 수 있으며 원본 새로운 C는 아직 존재합니다🎜🎜🎜git tag
는 모든 태그 목록을 나열합니다🎜🎜🎜🎜2. 태그를 생성하고 git 태그 [이름]을 사용하세요. 코드> , <code>git 태그
를 사용하여 확인해보세요🎜🎜git 태그 테스트 4를 추가합니다. /article/000/000/067/870df98a2e05989467274a30bc346365-14.png" alt="4b1e4e2b5ccbc34d361435339def8a 2c.png"/>🎜🎜3. 태그에 해당하는 커밋 정보를 확인하세요. git show [태그 이름]
예를 들어 git show test 1
, 온라인 접속 후 문제가 발생하면 아래 그림의 커밋 ID를 기준으로 코드 롤백을 수행할 수 있습니다🎜🎜🎜🎜🎜End🎜🎜Git 관리 도구는 일상 생활에서 매일 사용된다고 할 수 있으므로 일반적인 문제 시나리오에 해당하는 방법을 확실하게 마스터해야 합니다. 이를 접했을 때 당황하지 않으려면🎜🎜추천 학습: "🎜Git Tutorial🎜"🎜🎜위 내용은 git 롤백 코드를 이해하게 해주세요(자세한 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!