git에서 재설정과 되돌리기의 차이점은 무엇입니까
차이점: 1. 재설정은 지정된 커밋 버전으로의 완전한 롤백이며 커밋 이후의 모든 커밋은 지워지는 반면, 되돌리기는 지정된 커밋의 수정 사항만 취소하고 후속 커밋에는 영향을 주지 않습니다. 2. 재설정을 실행한 후에는 기록이 생성되지 않지만, 되돌리기를 실행한 후에는 기록이 생성됩니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Git 버전 2.30.0, Dell G3 컴퓨터.
Git은 우리가 일반적으로 사용하는 버전 관리 도구입니다. 우리 팀이 개발 프로젝트를 공동 작업할 때 코드 및 파일의 수정 및 제출로 인해 다양한 충돌이 자주 발생하며, 이로 인해 제품 요구 사항이 자주 변경됩니다. 버전을 롤백하고 커밋 결정을 철회하면 이때 재설정 및 되돌리기 명령이 유용합니다!
Reset과 revert는 둘 다 실행 취소와 롤백의 의미를 가지고 있지만 각각의 장점이 있고 여전히 차이가 매우 큽니다 따라서 어떤 명령을 사용할지는 실제 상황에 따라 결정해야 합니다. 둘 사이의 차이점을 이해하고 올바른 명령을 정확하고 빠르게 사용하여 실제 문제를 해결할 수 있습니다!
下面的例子中,我有3次提交: 初始状态,只有readme一个文件,内容为Creating a new branch is quick. t1提交后状态:只有readme一个文件,内容修改为Creating a new branch is quick 1. t2提交后状态:只有readme一个文件,内容修改为Creating a new branch is quick 1 2. t3提交后状态:新增了test文件.
이 글에서는 git bash를 예로 들어보겠습니다.
먼저 재설정에 대해 이야기해 보겠습니다.
reset, 사용 방법: git Reset --hard commit
, 커밋은 제출 후 생성된 SHA1, 이 명령을 실행하면 코드가 제출 당시의 상태로 완전히 롤백되고 제출 기록을 포함하여 제출 후 작업 준비 영역과 제출 내용이 완전히 지워집니다! git reset --hard commit
,commit是提交后产生的SHA1,执行该命令后,代码会完全回退到本次提交时的状态,工作暂存区以及本次提交后面的提交内容将会被完全清除,包括提交记录!
举例:
原项目,包含一个Readme.txt文件:
文件内容:
此时我将修改文件内容为:
Creating a new branch is quick 1.
进行第一次提交:
提交记录:
提交后的远程仓库目录及文件内容:
没有问题,继续修改文件内容:Creating a new branch is quick 1 2. ,进行第二次提交:
现在我将新增一个test文件,进行第三次提交:
好了,现在产品需求变更了,新增的功能(readme的第二次修改和新增的test文件)不需要了,要求回退到第一次提交“t1”,如果我们选择使用reset:
首先定位到t1的commit,可以从远程仓库提交历史记录中复制,也可以用命令git log
查看:
(小提示,如果最后一行出现“:”,则输入wq退出回到命令行即可!)
复制commit,执行命令:
git reset --hard 8cbf16c0821d20fe42c361f4e3d75a0493dc5fc2
提示,HEAD已经指向了t1,但你刷新后台时,发现并没有什么变化,这是因为我们还需要执行一下push,但这里需要注意的是,因为本地代码回到了旧版本,但远程仓库是新版本和本地不一致,所以你在用git push时会报错,这里我们需要使用强制提交,git push -f
,我们也可以使用git status
예:










git log
명령으로 볼 수 있는 t1의 커밋을 찾습니다. 🎜🎜
git revert 8cbf16c0821d20fe42c361f4e3d75a0493dc5fc2

git push -f
, git status
를 사용할 수도 있습니다. 현재 상태 보기: 🎜🎜🎜🎜意思是告诉你,远程仓库代码较新,需要你执行 git pull
操作以同步代码,但这并不是我们的需求,所以我们不用理会,执行,git push -f
:
再看仓库:
历史记录只剩下了t1:
readme内容也得到了恢复:
可见,reset是彻彻底底的回退,该commit之后的所有修改将完全消失,包括提交记录。
优点:
- 彻底回退到指定版本,干净清爽;
- 提交时间线清晰,没有冗杂;
缺点:
- 记录彻底清除,无法再次恢复;
再说revert:
revert执行后会产生新的commit记录,是通过一次新的commit来恢复到之前旧的commit,但revert会保留恢复的该次提交后面的其它提交内容,假如后面的提交与要恢复的提交更改了同一地方,此时用revert就会产生冲突!
我们继续以上面的例子为例,我重新执行了t2和t3提交,恢复到reset之前的状态:
此时,我们按reset的思路,使用revert恢复到t1,执行命令:
git revert 8cbf16c0821d20fe42c361f4e3d75a0493dc5fc2
报错:
提示冲突了?让我们解决掉冲突后提交…
<<<<<<< HEAD Creating a new branch is quick 1 2. ======= Creating a new branch is quick. >>>>>>> parent of 8cbf16c (t1)
上面的冲突表示,当前的内容是:
Creating a new branch is quick 1 2.
而我们要恢复的内容是:
Creating a new branch is quick.
如果对revert命令没有深入了解的话,就可能会产生疑惑,为什么会冲突?而且我实际上是想像reset一样恢复或者说是回退到t1(这里要再次说明一下t1的状态:只有一个readme文件,且内容是Creating a new branch is quick 1),但为什么冲突提示要恢复到Creating a new branch is quick.???这不是初始状态吗?
其实,准确来说,revert是撤销/撤回/反提交的意思,我们不能按reset的思路理解,我们执行git revert t1
,这么做其实结果是要撤销t1的提交,注意,仅仅是撤销t1的提交,把t1的修改恢复到t1之前也就是初始的状态,而不会影响t2,t3的提交。但如果t2,t3中修改了t1修改的同一地方,那么就会产生冲突,因为revert意图撤销t1的修改,但发现t2和t3把t1的修改再次修改了,此时,revert意图变得不清晰,因为它无法确定到底是应用你最新的修改,还是恢复到初始状态,这将由你来决定!
所以我们想要恢复t1的状态,那我们就应该撤销t2对t1的修改git revert t2
:
git revert fc4889dcb327cff9f8078db6a0d5c601b8e91ae9
执行后会自动进入编辑界面:
这里需要我们修改或输入提交日志,按 “i”,进入输入状态,写完后按ESC退出输入状态,再按“:wq”退出!
成功后,执行 git push:
查看仓库后台:
项目目录:
readme内容:
可见,revert操作成功后,产生了新的commit记录,t2对t1的修改已经恢复,现在的readme就是t1提交后的状态,但同时test文件仍然存在,即t3的提交不受影响!
하지만 재설정처럼 t2t3의 제출물을 삭제하고 싶다면 먼저 t3를 되돌린 다음 t2를 되돌리면 동일한 효과를 얻을 수 있습니다. 하지만 이 경우 그냥 재설정을 사용하면 어떨까요? 리셋 효과도 얻고 싶고, 후회하지 않는 기록도 갖고 싶다면, 바로 이것입니다. . . 생각해 볼 만한 질문이에요!
git Reset과 revert의 차이점 요약:
- reset은 지정된 커밋 버전으로의 완전한 롤백이며 커밋 기록을 포함하여 커밋 이후의 모든 커밋이 지워집니다. a revocation 지정된 커밋의 수정은 후속 커밋에 영향을 미치지 않지만 취소된 커밋이 후속 커밋에 의해 동일한 위치에서 수정되면 충돌이 발생합니다.
- Reset은 실행 후 레코드를 생성하지 않지만 revert는 실행 후 레코드를 생성합니다.
- reset 실행 후에는 복원할 수 없습니다. 되돌리기를 실행한 후에는 기록이 지워지지 않고 새 기록이 생성되므로 파일이 손실되지 않습니다. 되돌리기를 여러 번 실행하면 이전 상태로 복원할 수 있습니다. 특정 변경 사항;
- HEAD는 재설정 이동 실행 후 재설정되지만 되돌리기의 HEAD는 항상 앞으로
- 재설정 및 되돌리기의 기본 원칙을 명확히 한 후에는 어떤 명령을 사용하는 것이 더 적합한지 이해하게 됩니다. 몇시에!
Tips: IDEA 개발 도구에서 파일을 선택하고 git 옵션을 마우스 오른쪽 버튼으로 클릭하면 Rollback이 표시됩니다.
이는 재설정 및 되돌리기와 구별되어야 합니다. 롤백은 다음에 속하지 않습니다. git 명령의 기능은 파일이나 코드가 수정되었지만 아직 커밋되지 않은 후 이를 원격 웨어하우스 코드와 일치하는 상태로 복원하려는 경우 롤백 작업을 수행할 수 있다는 것입니다. !
추천 학습: "
위 내용은 git에서 재설정과 되돌리기의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









Grayscale Investment : Grayscale Investment Company는 기관 및 투자자에게 디지털 통화 투자 서비스를 제공합니다. 이 회사는 몇 가지 암호화 신탁을 출시했으며, 이는 시장의 광범위한 시장의 관심을 끌었지만, 이러한 자금이 토큰 가격에 미치는 영향은 크게 다릅니다. 이 기사는 Grayscale의 주요 Crypto Trust Funds 중 일부를 자세히 소개합니다. Grayscale Major Crypto Trust Fund는 Glance Grayscale Investment (2013 년 DigitalCurrencygroup이 설립 한)에서 제공되는 다양한 암호화 자산 신탁 기금을 관리하여 기관 투자자와 고격한 개인에게 준수 투자 채널을 제공합니다. 주요 자금에는 다음이 포함됩니다 : Zcash (Zec), Sol,

주간 관찰 : 비트 코인을 비축하는 비즈니스 - 양조 변화는 종종 주간 메모에서 간과 된 시장 동향을 지적합니다. Microstrategy의 움직임은 뚜렷한 예입니다. 많은 사람들이 "Microstrategy와 Michaelsaylor는 이미 잘 알려져 있습니다. 이것은 무엇에주의를 기울일 것인가?" 이보기는 일방적입니다. 최근 몇 달 동안 비트 코인을 예비 자산으로 채택한 것에 대한 심층적 인 연구에 따르면 이것은 고립 된 사례가 아니라 가장 큰 추세임을 보여줍니다. 나는 향후 12-18 개월 동안 수백 개의 회사가 소송을 따르고 대량의 비트 코인을 구매할 것이라고 예측합니다.

상하이 Jiaotong University, Shanghai Ailab 및 Chinese University of Hong Kong의 연구원들은 Visual-RFT (Visual Enhancement Fine Tuning) 오픈 소스 프로젝트를 시작했으며, 이는 LVLM (Language Big Model)의 성능을 크게 향상시키기 위해 소량의 데이터 만 필요합니다. Visual-Rft는 영리하게 DeepSeek-R1의 규칙 기반 강화 학습 접근 방식을 OpenAI의 RFT (Rencement Fine Tuning) 패러다임과 결합 하여이 접근법을 텍스트 필드에서 시야로 성공적으로 확장합니다. Visual-RFT는 시각적 하위 분류 및 객체 감지와 같은 작업에 대한 해당 규칙 보상을 설계함으로써 텍스트, 수학적 추론 및 기타 필드로 제한되는 DeepSeek-R1 메소드의 한계를 극복하여 LVLM 교육을위한 새로운 방법을 제공합니다. Vis

Go Language의 부동 소수점 번호 작동에 사용되는 라이브러리는 정확도를 보장하는 방법을 소개합니다.

GO의 어떤 라이브러리가 대기업이나 잘 알려진 오픈 소스 프로젝트에서 개발 했습니까? GO에 프로그래밍 할 때 개발자는 종종 몇 가지 일반적인 요구를 만납니다.

BINANCE LANCHPOOL 심층 분석 : 고수익 마이닝 가이드 및 바이오 프로젝트에 대한 자세한 설명은 Binance LaunchPool에 대한 심층적 인 토론을 수행하고 참여 방법을 자세히 설명하며 최신 프로젝트 Bio Coin (BIOL)을 소개하는 데 집중할 것입니다. Binance는 세계 최대의 cryptocurrency 거래소로서 LaunchPool과 함께 고품질 프로젝트를 선택하여 투자자에게 쉬운 광업과 새로운 토큰을 얻을 수있는 기회를 제공했습니다. Binance 런치 풀 란 무엇입니까? Binance Launchpool은 지정된 통화를 맹세하여 무료로 새로운 토큰을 얻는 플랫폼입니다. 이는 주식 시장의 새로운 주식 가입과 유사하지만 참가자는 적고 경쟁이 적고 소규모 투자도 높은 수익을 얻을 수 있습니다.

질문 설명 : 해외 버전의 배송 지역 데이터를 얻는 방법은 무엇입니까? 기성품 자원이 있습니까? 국경 간 전자 상거래 또는 세계화 된 비즈니스에서 정확하게 ...

GiteEpages 정적 웹 사이트 배포 실패 : 404 오류 문제 해결 및 해결시 Gitee ...
