ホームページ 開発ツール Git 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 コマンドが役に立ちます。

reset と revert はどちらも元に戻す、ロールバックするという意味がありますが、それぞれにメリットがあり、その違いは依然として非常に大きいです ので、どのコマンドを使用するかは、この記事は、この 2 つの違いを理解して、正しいコマンドを正確かつ迅速に使用して実践的な問題を解決しましょう!

下面的例子中,我有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 replace --hard commit、コミットは送信後に生成された SHA1 です。このコマンドを実行すると、コードはこの送信の状態、作業ステージング領域、および作業ステージング領域に完全にロールバックされます。以降の提出は、提出記録も含めて完全に消去されます。

例:

元のプロジェクトには Readme.txt ファイルが含まれています:
git のリセットとリバートの違いは何ですか
ファイルの内容:
git のリセットとリバートの違いは何ですか
この時点で、ファイルの内容を次のように変更します。

新しいブランチの作成は簡単です 1.

を最初にします提出
git のリセットとリバートの違いは何ですか
提出レコード:
git のリセットとリバートの違いは何ですか
提出されたリモート ウェアハウス ディレクトリとファイルの内容:

git のリセットとリバートの違いは何ですかgit のリセットとリバートの違いは何ですか
いいえ問題がある場合は、ファイルの内容の変更を続けます: 新しいブランチの作成は簡単です 1 2. 2 番目の送信:
git のリセットとリバートの違いは何ですか
ここで、新しいテスト ファイルを追加し、 3 番目の送信を行います :
git のリセットとリバートの違いは何ですか
git のリセットとリバートの違いは何ですかgit のリセットとリバートの違いは何ですか

さて、製品要件は次のようになります。変更されました 新しい機能 (Readme の 2 回目の修正と新しいテスト ファイル) はもう必要ありません。最初の送信 "t1" に戻る必要があります。リセットを使用することを選択した場合:

位置最初に t1 へのコミットをリモート ウェアハウスのコミット履歴からコピーするか、コマンド git log を使用して表示できます:

git のリセットとリバートの違いは何ですか
(ヒント、最後の ":" が 1 行にある場合は、wq と入力して終了し、コマンド ラインに戻ります!)

コミットをコピーして、コマンド

git reset --hard 8cbf16c0821d20fe42c361f4e3d75a0493dc5fc2
ログイン後にコピー

git のリセットとリバートの違いは何ですか を実行します。

プロンプト、HEAD は t1 を指していますが、背景を更新すると変化がないことがわかります。これはまだプッシュを実行する必要があるためですが、ここで注意する必要があるのは、ローカル コードは古いバージョンに戻りましたが、リモート ウェアハウスは新しいバージョンです。ローカル コードと矛盾しているため、git Push を使用するとエラーが発生します。ここでは、強制コミット、git Push を使用する必要があります。 -fgit status を使用して現在のステータスを確認することもできます:

git のリセットとリバートの違いは何ですか

意思是告诉你,远程仓库代码较新,需要你执行 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的提交不受影响!

但如果你說,想要和reset一樣,把t2t3的提交也要刪除掉,那你就先revert t3,再revert t2,可以達到同樣的效果,但這樣一來,為何不直接用reset ?如果你說既想達到reset的效果,又想有紀錄防止反悔,那這。 。 。是一個值得思考的問題!

git reset和revert區別的總結:

  • #reset是徹底回退到指定的commit版本,該commit後的所有commit都將被清除,包括提交歷史記錄;
  • revert僅僅是撤銷指定commit的修改,並不影響後續的commit,但所撤銷的commit被後續的commit修改了同一地方則會產生衝突;
  • reset執行後不會產生記錄,revert執行後會產生記錄;
  • reset執行後無法再次恢復,revert執行後因為不會清除記錄,並且會產生新紀錄,所以檔案不會遺失,你可以多次執行revert恢復到某次改變之前的狀態;
  • reset執行後HEAD會後移,而revert的HEAD則一直是向前的;

理清了reset和revert的基本原理,你就明白了在什麼時間該使用哪個指令更為合適了!

小提示:在IDEA開發工具中,選取一個文件,在右鍵git選項中會發現有一個Rollback

git のリセットとリバートの違いは何ですか
這裡要跟reset和revert區分一下,rollback並不屬於git指令,它的作用是,在檔案或程式碼修改後,但還未commit,想恢復到與遠端倉庫程式碼一致的狀態,便可以執行rollback操作!

推薦學習:《Git教學

以上がgit のリセットとリバートの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Grayscale Encryption Trust Fundsとは何ですか? Grayscale Encryption Trust Fundsとは何ですか? Mar 05, 2025 pm 12:33 PM

グレイスケール投資:機関投資家が機関や投資家にデジタル通貨投資サービスを提供するための機関投資家が入国します。同社はいくつかの暗号信託を立ち上げました。これは広範な市場の注目を集めていますが、これらの資金のトークン価格に対する影響は大きく異なります。この記事では、Grayscaleの主要なCrypto Trust Fundsの一部を詳細に紹介します。 Grayscale Major Crypto Trust Fundsは、Grayscale Investment(2013年にDigitalCurrencyGroupによって設立された)で利用可能なさまざまなCrypto Asset Trust Fundsを管理し、機関投資家と順応の高い個人を提供する投資チャネルを提供します。その主な資金には、ZCASH(ZEC)、SOL、

ビットワイズ:企業はビットコインを無視された大きな傾向を購入します ビットワイズ:企業はビットコインを無視された大きな傾向を購入します Mar 05, 2025 pm 02:42 PM

毎週の観察:ビットコインを蓄えている企業 - 醸造の変化毎週のメモの見落とされがちな市場動向をよく指摘します。 MicroStrategyの動きは厳しい例です。多くの人は、「マイクロストラテジーとマイケルセイリャーはすでによく知られていますが、これは真実ですが、多くの投資家はそれを特別なケースと見なし、その背後にあるより深い市場の力を無視しています。このビューは片側です。ここ数ヶ月の予備資産としてのビットコインの採用に関する詳細な研究は、これが孤立したケースではなく、出現している主要な傾向であることを示しています。今後12〜18か月で、何百もの企業が訴訟を起こし、大量のビットコインを購入すると予測しています

SFTを大幅に超えて、O1/DeepSeek-R1の背後にある秘密は、マルチモーダルの大規模モデルでも使用できます SFTを大幅に超えて、O1/DeepSeek-R1の背後にある秘密は、マルチモーダルの大規模モデルでも使用できます Mar 12, 2025 pm 01:03 PM

上海ジョトン大学、上海アイラブ、および香港中国大学の研究者は、Visual Language Big Model(LVLM)のパフォーマンスを大幅に改善するために少量のデータのみを必要とする視覚RFT(視覚エンハンスメントファインチューニング)オープンソースプロジェクトを開始しました。 Visual-RFTは、DeepSeek-R1のルールベースの強化学習アプローチとOpenAIの強化微調整(RFT)パラダイムを巧みに組み合わせて、このアプローチをテキストフィールドから視野に拡張しました。視覚的サブカテゴリ化やオブジェクト検出などのタスクの対応するルール報酬を設計することにより、Visual-RFTは、テキスト、数学的推論、その他のフィールドに限定されているDeepSeek-R1メソッドの制限を克服し、LVLMトレーニングの新しい方法を提供します。 Vis

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? Apr 02, 2025 pm 04:12 PM

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Binance LaunchPoolとは何ですか? Binance LaunchPoolに参加する方法は? Binance LaunchPoolとは何ですか? Binance LaunchPoolに参加する方法は? Mar 05, 2025 pm 03:06 PM

Binance LaunchPool詳細分析:高利回りの採掘ガイドとバイオプロジェクトの詳細な説明は、Binance LaunchPoolの詳細な議論を行い、その利回りを分析し、参加方法を詳細に説明し、最新のプロジェクトBio Coin(BIOL)の導入に焦点を当てます。世界最大の暗号通貨交換として、BinanceはLaunchPoolで高品質のプロジェクトを選択し、投資家に新しい鉱業と新しいトークンを取得する機会を提供しました。 Binance LaunchPoolとは何ですか? Binance LaunchPoolは、指定された通貨を誓約することで、新しいトークンを無料で獲得するプラットフォームです。これは、株式市場の新しい株式サブスクリプションに似ていますが、参加者は少なくなり、競争が少なくなり、少額の投資も高い収益を得ることができます。

海外バージョンの配送地域データを取得する方法は?利用可能な既製のリソースは何ですか? 海外バージョンの配送地域データを取得する方法は?利用可能な既製のリソースは何ですか? Apr 01, 2025 am 08:15 AM

質問の説明:海外バージョンの配送地域データを取得する方法は?既製のリソースはありますか?国境を越えた電子商取引またはグローバル化ビジネスで正確に入手してください...

Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Apr 04, 2025 pm 11:54 PM

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

See all articles