プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

【初心者向け】git pullを取り消す方法|git resetコマンドの使い方を徹底解説

git pullコマンドは、リモートリポジトリ上のプロジェクトに対して行われた変更を取得し、ローカルマシンにダウンロードするためのコマンドです。この操作は、git resetコマンドを使うことで取り消すことができます。resetコマンドは、リポジトリを履歴上の過去の時点の状態に戻す働きを持ちます。

本記事では、git resetコマンドを使ってgit pullの操作を取り消す方法を解説します。具体的な例を通じて、このコマンドの使い方を学んでいきましょう。

git pullとは?仕組みの解説

git pullコマンドは、ローカルリポジトリをリモートリポジトリの最新状態に更新するためのコマンドです。

git pullを実行すると、まずGitはgit fetchコマンドを使って、リモートリポジトリに変更が加えられたかどうかを確認します。変更が見つかった場合、fetchコマンドはその変更に関するメタデータを取得します。

次に、git pullgit mergeを実行します。この処理により、git fetchで検出された変更がローカル環境にマージされます。つまり、git pullを実行すると、ローカルのリポジトリがリモートリポジトリと一致するように更新されるのです。

git pullを取り消す方法

git pullを明示的に取り消す専用のコマンドは存在しません。代わりに使用するのがgit resetです。このコマンドは、リポジトリを過去の特定のコミットの状態に戻すことができます。

ここでは、「ck-git」というプロジェクトを例に説明します。共同作業者がGitHub上のリモートリポジトリにコミットをプッシュしたばかりで、その変更を取得したい状況を想定しましょう。

変更を取得するために、次のようにgit pullコマンドを実行します。

git pull

このコマンドを実行すると、メタデータが取得され、リモートリポジトリからローカルマシンへ変更がダウンロードされたことを示すメッセージが表示されます。

remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/career-karma-tutorials/ck-git
   77e7fc0..a8336fa  master -> origin/master
Updating 77e7fc0..a8336fa
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

masterブランチで変更されたのはREADME.mdファイルのみです。このファイルには、前回のコミットには存在しないテキストが1行追加されています。

ここで、この操作を取り消したいとしましょう。まだこの変更をローカルリポジトリに受け入れる準備ができていない状態です。操作を取り消すには、git resetを実行する必要があります。

git resetコマンドを実行する前に、知っておくべき重要な注意点があります。このコマンドを実行すると、コミットされていない変更はすべて失われます。resetコマンドを実行する前に、保存しておきたい変更は必ずコミットしておきましょう。

それでは、git resetコマンドを使って、リポジトリを直前のコミット時点の状態に戻してみましょう。

git reset 77e7fc0 --hard

このコマンドにより、リポジトリは最後のコミット時点の状態に戻ります。

Unstaged changes after reset:
M    README.md

--hardフラグを付けると、Gitは作業ディレクトリを、指定したコミット時点のコードの内容で上書きします。

また、HEADを使って戻り先のコミットを指定することも可能です。

git reset HEAD~1 --hard

このコマンドは、リポジトリを1つ前のコミットに戻します。数字を変更すれば、さらに前のコミットまで遡ることもできます(例:HEAD~2で2つ前へ)。

これでREADME.mdファイルは、最後のコミット時点の状態に戻りました。なお、git pullを実行する前にファイルに加えた未コミットの変更があった場合、それらの変更にはアクセスできなくなります。これは、Gitがコミットされた変更のみを保存する仕組みになっているためです。

まとめ

git pullの操作を取り消すには、git resetコマンドを使用します。git resetは、リポジトリを履歴上の特定の時点の状態にリセットできるコマンドです。ただし、git pull実行前にコミットしていなかった変更は失われるため、注意が必要です。

git resetを実行する前に、必ず必要な変更をコミットしておきましょう。未コミットの変更はすべて失われてしまいます。

これで、プロのようにgit pullを取り消すための知識が身につきました!

  1. Git初心者向けガイド:バージョン管理の基本をやさしく解説

    Linuxユーザーなら、新しいプログラムをダウンロードするときや、CVSやSubversionといったバージョン管理システムを調べているときに、「Git」という名前を目にしたことがあるかもしれません。Gitは、Linuxカーネルの生みの親として知られるLinus Torvalds氏が、既存のソリューションに満足できなかったことをきっかけに開発したリビジョン管理システムです。設計における最大の重点は速度、より正確には効率性に置かれており、従来のシステムが抱えていた多くの欠点を解消しながら、はるかに短い時間で処理を実行します。この記事では、これからGitを学びたい初心者の方向けに、基本的な使い方

  2. 【解決法】「gitは内部コマンドまたは外部コマンドとして認識されていません」エラーの直し方

    WindowsのコマンドプロンプトでGitコマンドを実行しようとした際、「git は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」というエラーが表示されるという報告が多くのユーザーから寄せられています。Git for Windowsのインストール後にしばらく経ってから発生したというケースもあれば、インストールが完了した直後からいきなり発生するというケースもあります。「git」が内部コマンドとして認識されないエラーの原因この問題について、さまざまなユーザー報告をもとに調査を行いました。その結果、このエラーが発生する背景には、主に以下の2つの