개발 도구 자식 git에서 재설정과 되돌리기의 차이점은 무엇입니까

git에서 재설정과 되돌리기의 차이점은 무엇입니까

Nov 30, 2021 pm 02:57 PM
git reset

차이점: 1. 재설정은 지정된 커밋 버전으로의 완전한 롤백이며 커밋 이후의 모든 커밋은 지워지는 반면, 되돌리기는 지정된 커밋의 수정 사항만 취소하고 후속 커밋에는 영향을 주지 않습니다. 2. 재설정을 실행한 후에는 기록이 생성되지 않지만, 되돌리기를 실행한 후에는 기록이 생성됩니다.

git에서 재설정과 되돌리기의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: 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를 예로 들어보겠습니다.

git에서 재설정과 되돌리기의 차이점은 무엇입니까
먼저 재설정에 대해 이야기해 보겠습니다.

reset, 사용 방법: git Reset --hard commit, 커밋은 제출 후 생성된 SHA1, 이 명령을 실행하면 코드가 제출 당시의 상태로 완전히 롤백되고 제출 기록을 포함하여 제출 후 작업 준비 영역과 제출 내용이 완전히 지워집니다! git reset --hard commit ,commit是提交后产生的SHA1,执行该命令后,代码会完全回退到本次提交时的状态,工作暂存区以及本次提交后面的提交内容将会被完全清除,包括提交记录!

举例:

原项目,包含一个Readme.txt文件:
git에서 재설정과 되돌리기의 차이점은 무엇입니까
文件内容:
git에서 재설정과 되돌리기의 차이점은 무엇입니까
此时我将修改文件内容为:

Creating a new branch is quick 1.

进行第一次提交
git에서 재설정과 되돌리기의 차이점은 무엇입니까
提交记录:
git에서 재설정과 되돌리기의 차이점은 무엇입니까
提交后的远程仓库目录及文件内容:

git에서 재설정과 되돌리기의 차이점은 무엇입니까git에서 재설정과 되돌리기의 차이점은 무엇입니까
没有问题,继续修改文件内容:Creating a new branch is quick 1 2. ,进行第二次提交
git에서 재설정과 되돌리기의 차이점은 무엇입니까
现在我将新增一个test文件,进行第三次提交
git에서 재설정과 되돌리기의 차이점은 무엇입니까
git에서 재설정과 되돌리기의 차이점은 무엇입니까git에서 재설정과 되돌리기의 차이점은 무엇입니까

好了,现在产品需求变更了,新增的功能(readme的第二次修改和新增的test文件)不需要了,要求回退到第一次提交“t1”,如果我们选择使用reset:

首先定位到t1的commit,可以从远程仓库提交历史记录中复制,也可以用命令git log查看:

git에서 재설정과 되돌리기의 차이점은 무엇입니까
(小提示,如果最后一行出现“:”,则输入wq退出回到命令行即可!)

复制commit,执行命令:

git reset --hard 8cbf16c0821d20fe42c361f4e3d75a0493dc5fc2
로그인 후 복사

git에서 재설정과 되돌리기의 차이점은 무엇입니까

提示,HEAD已经指向了t1,但你刷新后台时,发现并没有什么变化,这是因为我们还需要执行一下push,但这里需要注意的是,因为本地代码回到了旧版本,但远程仓库是新版本和本地不一致,所以你在用git push时会报错,这里我们需要使用强制提交,git push -f,我们也可以使用git status

예: git에서 재설정과 되돌리기의 차이점은 무엇입니까

🎜Readme.txt 파일을 포함한 원본 프로젝트: 🎜여기에 이미지 설명 삽입🎜 파일 내용: 🎜 삽입 image Description here🎜 이제 파일 내용을 다음과 같이 수정하겠습니다: 🎜🎜🎜새 브랜치를 만드는 것이 빠릅니다 1.🎜🎜🎜 🎜 첫 번째 제출🎜 만들기: 🎜여기에 이미지 설명 삽입🎜 제출 기록: 🎜여기에 이미지 설명 삽입🎜 제출 후 원격 웨어하우스 디렉터리 및 파일 콘텐츠: 🎜🎜 여기에 이미지 설명 삽입여기에 이미지 설명 삽입🎜 문제 없습니다. 파일 내용을 계속 수정하세요.🎜새 브랜치를 만드는 것이 빠릅니다 1 2.🎜, 🎜두 번째 커밋🎜 만들기: 🎜삽입 이미지 설명은 여기에🎜 이제 테스트 파일을 추가하고 🎜세 번째 제출🎜을 작성하겠습니다. 🎜여기에 이미지 설명 삽입🎜삽입 여기에 이미지 설명 삽입git에서 재설정과 되돌리기의 차이점은 무엇입니까🎜🎜 좋습니다. 이제 제품 요구 사항이 변경되어 새로운 기능(readme의 두 번째 수정 및 새 테스트 파일)이 더 이상 필요하지 않으며 원하는 경우 첫 번째 제출로 돌아가야 합니다. 재설정 사용: 🎜🎜먼저 원격 웨어하우스 커밋 기록에서 복사하거나 git log 명령으로 볼 수 있는 t1의 커밋을 찾습니다. 🎜🎜여기에 이미지 설명 삽입🎜(팁, 마지막 줄에 ":"가 나타나면 wq를 입력하세요. 종료하고 명령줄로 돌아가려면! )🎜🎜커밋을 복사하고 다음 명령을 실행하세요: 🎜
git revert 8cbf16c0821d20fe42c361f4e3d75a0493dc5fc2
로그인 후 복사
로그인 후 복사
🎜 여기에 그림 설명 삽입 🎜🎜 Tip. HEAD가 t1을 가리키고 있는데 배경을 새로고침해 보면 변화가 없다는 걸 알 수 있는데, 아직 push를 해야 하기 때문인데 주의할 점이 있습니다. 로컬 코드 때문에 이전 버전으로 돌아갔지만 새 버전의 원격 웨어하우스가 로컬 버전과 일치하지 않아 git push를 사용할 때 오류가 발생합니다. 여기서는 강제 제출을 사용해야 합니다. git push -f, git status를 사용할 수도 있습니다. 현재 상태 보기: 🎜🎜🎜🎜

意思是告诉你,远程仓库代码较新,需要你执行 git pull操作以同步代码,但这并不是我们的需求,所以我们不用理会,执行,git push -f

![git에서 재설정과 되돌리기의 차이점은 무엇입니까](https://img-blog.csdnimg.cn/94c3e93f6efe40b6a4d12d02eb05cd4d.png

再看仓库:

git에서 재설정과 되돌리기의 차이점은 무엇입니까

历史记录只剩下了t1:

git에서 재설정과 되돌리기의 차이점은 무엇입니까

readme内容也得到了恢复:

git에서 재설정과 되돌리기의 차이점은 무엇입니까

可见,reset是彻彻底底的回退,该commit之后的所有修改将完全消失,包括提交记录。

优点

  • 彻底回退到指定版本,干净清爽;
  • 提交时间线清晰,没有冗杂;

缺点

  • 记录彻底清除,无法再次恢复;

再说revert

revert执行后会产生新的commit记录,是通过一次新的commit来恢复到之前旧的commit,但revert会保留恢复的该次提交后面的其它提交内容,假如后面的提交与要恢复的提交更改了同一地方,此时用revert就会产生冲突!

我们继续以上面的例子为例,我重新执行了t2和t3提交,恢复到reset之前的状态:

git에서 재설정과 되돌리기의 차이점은 무엇입니까
git에서 재설정과 되돌리기의 차이점은 무엇입니까
此时,我们按reset的思路,使用revert恢复到t1,执行命令:

git revert 8cbf16c0821d20fe42c361f4e3d75a0493dc5fc2
로그인 후 복사
로그인 후 복사

报错:

git에서 재설정과 되돌리기의 차이점은 무엇입니까
提示冲突了?让我们解决掉冲突后提交…

<<<<<<< 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
로그인 후 복사

执行后会自动进入编辑界面:

git에서 재설정과 되돌리기의 차이점은 무엇입니까

这里需要我们修改或输入提交日志,按 “i”,进入输入状态,写完后按ESC退出输入状态,再按“:wq”退出!

成功后,执行 git push:

git에서 재설정과 되돌리기의 차이점은 무엇입니까

查看仓库后台:

git에서 재설정과 되돌리기의 차이점은 무엇입니까

项目目录:

git에서 재설정과 되돌리기의 차이점은 무엇입니까

readme内容:

git에서 재설정과 되돌리기의 차이점은 무엇입니까

可见,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에서 재설정과 되돌리기의 차이점은 무엇입니까
추천 학습: "

Git Tutorial

"

위 내용은 git에서 재설정과 되돌리기의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Grayscale 암호화 신탁 기금은 무엇입니까? Grayscale 암호화 신탁 기금은 무엇입니까? Mar 05, 2025 pm 12:33 PM

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

비트 : 비즈니스는 비트 코인을 무시한 큰 추세를 구매합니다 비트 : 비즈니스는 비트 코인을 무시한 큰 추세를 구매합니다 Mar 05, 2025 pm 02:42 PM

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

SFT를 상당히 능가하는 O1/DeepSeek-R1의 비밀은 멀티 모달 대형 모델에서도 사용할 수 있습니다. SFT를 상당히 능가하는 O1/DeepSeek-R1의 비밀은 멀티 모달 대형 모델에서도 사용할 수 있습니다. Mar 12, 2025 pm 01:03 PM

상하이 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에서 플로팅 포인트 번호 작업에 어떤 라이브러리가 사용됩니까? GO에서 플로팅 포인트 번호 작업에 어떤 라이브러리가 사용됩니까? Apr 02, 2025 pm 02:06 PM

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

GO의 어떤 라이브러리가 대기업에서 개발하거나 잘 알려진 오픈 소스 프로젝트에서 제공합니까? GO의 어떤 라이브러리가 대기업에서 개발하거나 잘 알려진 오픈 소스 프로젝트에서 제공합니까? Apr 02, 2025 pm 04:12 PM

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

Binance 런치 풀 란 무엇입니까? Binance 런치 풀에 참여하는 방법은 무엇입니까? Binance 런치 풀 란 무엇입니까? Binance 런치 풀에 참여하는 방법은 무엇입니까? Mar 05, 2025 pm 03:06 PM

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

해외 버전의 배송 지역 데이터를 얻는 방법은 무엇입니까? 기성품 리소스는 무엇입니까? 해외 버전의 배송 지역 데이터를 얻는 방법은 무엇입니까? 기성품 리소스는 무엇입니까? Apr 01, 2025 am 08:15 AM

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

Gitee Pages 정적 웹 사이트 배포 실패 : 단일 파일 문제를 해결하고 해결하는 방법 404 오류? Gitee Pages 정적 웹 사이트 배포 실패 : 단일 파일 문제를 해결하고 해결하는 방법 404 오류? Apr 04, 2025 pm 11:54 PM

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

See all articles