開発者が知っておくべき Git コマンド12選

Image of Ishikawa Setsuna

初心者のためのGitHub入門の最新版では、Gitを使いこなせるようになるために欠かせないGitコマンドを紹介します。


GitHub for Beginners へようこそ。このシリーズでは、初心者向けにリポジトリからプルリクエストまで、あらゆるものの基本を学べるようになっています。(これらが何なのかまだわからない?大丈夫です、そのために私たちはここにいるのですから!)

前回の記事ではGitの基礎について説明しましたが、今日はさらに一歩進んで、開発者なら知っておくべき最も重要なGitコマンドについて説明します。

毎日使うことになる Git コマンドのトップ 12 を紹介しましょう。

  1. Git の設定

    マシンにGitをインストールしたら、まず最初にすべきことは、Gitがあなたが誰であるかを理解できるようにGitを設定することです。git config コマンドで Git の設定値を設定することができ、カスタマイズされた Git のワークフローを作るのに役立ちます。Eメールとユーザー名を設定するには、git config --global user.name "username" とgit config --global user.email "[email protected]" と入力します。この二つの設定によって、Gitがあなたの作業をあなたのユーザー名とEメールに関連付けることができるようになり、あなたが行った作業の信用を得ることができるようになります。

    Screenshort of a terminal with the git config command typed out.

  2. Git init

    前にも述べたように、git init コマンドは新しい Git リポジトリを初期化するために使います。Git のスイッチを入れるようなものだと考えてください。

    たとえば、ターミナルコマンドmkdir project1 で新しいフォルダーを作ったとしましょう。cd project1 を実行すればproject1 に入ることができます。現在の状態では、project1 は Git リポジトリではありません。

    このフォルダーを Git リポジトリにして、自分が行ったすべての変更を追跡できるようにしたい場合は、git init コマンドで作成したエイリアス “I” を使ってgit i と入力します。エイリアスを設定していない場合は、git init と入力することもできます。

    Screenshot of a terminal with the git init command and responses typed out.

    普通のフォルダーでgit init コマンドを実行すると、そのフォルダーが追跡可能な git リポジトリになり、Git コマンドが使えるようになります。

  3. Git ステータス

    新しい Git リポジトリでこれまでに何をしたかを確認したい場合は、git status と入力します。このコマンドを使うと、作業ディレクトリで追加・削除・変更されたファイルを確認することができます。この場合は、まだ何もファイルを追加していないので “nothing to commit” が返されるはずです。

    touch hello.md を実行して新しいファイルを作成し、git status を再度実行してみましょう。これで、”hello.md “という追跡されていないファイルがあることがわかるはずです。

    Screenshot of the terminal showing the results of git status on a newly created, untracked file.

    untrackedファイルとは、ステージングエリアに追加されていないファイルのことです。ファイルをステージングエリアに追加するには、git add コマンドを使います。

  4. Git の追加

    このコマンドを使う方法は、かなりたくさんあります。たとえば、git add . を使って作業ディレクトリからすべてのファイルをステージングエリアに追加したり、git add filename を使って特定のファイルをステージングエリアに追加したりすることができます。

    learning.py という新しいファイルとwaiting.py という別のファイルを作成しよう。git status を実行して変更内容を確認できるようにし、git add learning.py を実行してこのファイルをステージングエリアに追加します。Git status をもう一度実行すると、learning.py がステージングエリアにあり、waiting.py が作業ディレクトリにアントラックされていることがわかります。

    Using git add to track a file called learning.py

    ファイルがステージングエリアに追加されたということは、コミットする前に安全な場所に置かれたということです。Git add コマンドを使うのは、Git に「このファイルを現在の状態で追跡しておいてください」と伝えるためだと考えてください。

    トラックしたファイルにさらに変更を加える場合は、git add コマンドをもう一度使って Git に追跡させる必要があります。learning.py ファイルにコードを追加してみましょう。

    現在、learning.py とhello.md のファイルはステージングエリアで追跡されていますが、waiting.py は追跡されていません。learning.py にcode print ("I'm learning git") を追加し、ターミナルでgit status を実行すると、learning.py ファイルが変更され、追跡されていない変更があることがわかります。これらの新しい変更を追跡するには、git add learning.py を実行します。

    Using git add to add a file to the staging area.

    現実の世界では、通常、learning.py ファイルで行っている作業を完了し、その変更をステージングエリアに追加します。自分の作業に満足したら、変更をコミットします。

  5. Git のコミット

    変更を「コミット」することは、Git の履歴にプロジェクトのバージョンを保存することです。

    現在、learning.py とhello.md は追跡されており、waiting.py は追跡されていません。git commit -m "initial commit" を実行して何が起こるか見てみましょう。

    git status を実行すると、”2 files changed, 1 insertion in git” と表示されます。新しいファイルがふたつ追加され、そのうちのひとつにコードが一行追加されたからです。また、waiting.py という追跡されていないファイルがあることもわかります。このファイルはステージングエリアに追加されていないからです。

    learning.py ファイルに新しい変更を加えた場合、git add. git commit -m "add waiting file and new function" コマンドを実行することで、両方のファイルをステージングエリアに追加することができます。

    Using the git add and git commit commands together to track changes and store work.

    これが、git add とgit commit コマンドを一緒に使う方法です!変更を追跡し、新しい作業を保存することができました。

  6. Git クローン

    リモートにあるフォルダのリンクをラップトップに取り込む必要があるとしたらどうしますか?どうやってそれをしますか?リモートリポジトリをローカルマシンにコピーする必要があります。Git の世界では、これを「クローン」と呼びます。クローンを作成するコマンドは、ご存知のようにgit clone です。

    Git で共同作業をしているチームで働いていると、Git を使ってプロジェクトフォルダーのコピーを作って変更を加えるように求められることがあります。

    たとえば、GitHub にリモートリポジトリがあるとしましょう。このリポジトリを自分のマシンにコピーしたりクローンしたりするには、緑の “Code” ボタンをクリックし、HTTPS というオプションを選択します。コピーアイコンをクリックしてリポジトリへのリンクをコピーし、ターミナルを開いて「git clone 」と入力し、URLリンクをターミナルに貼り付けてエンター/リターンキーを押します。

    Using git clone to make a local copy of a remote repository that you can work in and edit.

    「完了」と表示されたら、リポジトリをあなたのマシンにクローンできました。これで、リモートリポジトリのローカルコピーを手に入れ、作業や編集ができるようになりました。

  7. Git のチェックアウト

    Git リポジトリのブランチは、ドキュメントのコピーを作るようなものです。ブランチを使うことで、同じプロジェクトに参加しているチームメイトとの共同作業をより効率的に進められるようになります。

    それでは、クローンしたリポジトリに新しいブランチを作ってみましょう。

    Typing git checkout -b update-name to create a new branch called update-name that you can make your changes on. This command will allow you to create a new branch and switch to the branch at the same time.

    git checkout -b update-name と入力すると、update-name という新しいブランチが作成され、そこに変更を加えることができます。このコマンドを使うと、新しいブランチの作成とブランチの切り替えを同時に行うことができます。

  8. Git ブランチ

    git branch main ブランチ、init という名前のブランチ、そして新しく作成した ブランチです。キーボードの q キーを押して終了します。update-name

  9. Git の切り替え

    さて、メインブランチに戻りたい場合はどうすればいいのでしょう?git switch コマンドを使います。ターミナルでgit switch main と入力すると、メインブランチに戻ることができます。これでメインブランチに戻りました。

    作成したブランチに戻って、ファイルに少し変更を加えてみましょう。

    Using the the git switch command to go back to the main branch.

    git switch update-name と入力して、コードエディタでプロジェクトを開きます。index.html ファイルに移動し、ファイルを右クリックしてopen preview を選択します。これでサイドブラウザーが開き、コードに反映された変更を見ることができます。

    このアプリのタイトルを “Git Going “に変更することになったとしましょう。HTMLファイルの名前を更新し、git status を実行してファイルが変更されたか確認します。

    先ほど学んだことを実践して、これらの変更をステージングエリアに追加し、変更をローカルリポジトリgit add . git commit -m "update app name" git status にコミットします。次に、先ほどクローンしたリモートリポジトリにローカルの変更を取り込んでアプリを更新します。

  10. Git のプッシュ

    先ほど行った変更をリモートリポジトリに取り込むには、変更をリモートリポジトリにプッシュする必要があります。

    コマンドgit push は Git に「ファイルの変更を追跡してくれてありがとう。この変更をメインプロジェクトのファイルにアップロードします。」 と伝えます。

    変更をプッシュするということは、要するに、ローカルリポジトリで行ったコミットをリモートリポジトリに反映させるということです。これを行うには、git push <remote> <branch> というコマンドを使います。”remote” はリモートリポジトリ、”branch” は作業中のブランチを表します。

    あなたの場合は、git push origin update-name と入力します。”origin” は「リモートリポジトリ」を指し、”update-name” はアップロードしたいブランチを指します。

    GitHub のリポジトリに戻ると、新しいブランチが追加されていることがわかります。これが、Git push と呼ばれる所以です!

    Screenshot of a GitHub repository showing the recent push.

    これで、GitHub でプルリクエストを発行して自分の変更をメインブランチにマージできるようになりました。プルリクエストとは、あるブランチの変更を別のブランチにマージしたいという提案のことです。あなたの場合は、更新した名前をメインブランチにマージしたいとします。

  11. Git の プル

    git pull は、ローカルリポジトリとリモートリポジトリを常に最新の状態に保つために実行する重要なコマンドです。

    リモートリポジトリのメインブランチを変更内容で更新したら、ローカルリポジトリに戻りましょう。

    ターミナルでgit switch main と入力し、エディターでファイルを開きます。index.html ファイルに移動し、アプリの名前を確認します。メインブランチを新しい名前で更新したにもかかわらず、アプリの名前は「Todo」のままです。では、何が起こったのでしょうか?リモートリポジトリのメインブランチを更新したのであって、ローカルのコピーを更新したのではないと思ったなら、そのとおりです。

    ローカルリポジトリはリモートリポジトリのコピー/クローンであり、それぞれのブランチには独自の履歴があることを覚えておいてください。ローカルブランチupdate-name で変更を行い、リモートリポジトリにプッシュしたので、ローカルでも同じことを行い、main ブランチのローカルコピーに変更をマージする必要があります。

    ローカルブランチをリモートブランチと更新するには、git pull コマンドを使用します。このコマンドは、行われたすべての変更を取得し、ローカルブランチにマージします。

    Using git pull to update your branch and return the changes that were made.

    ターミナルのメインブランチで、git pull を実行してください。これでブランチが更新され、変更点が返されます。すると、1 つのファイルが変更され、1 つの挿入と 1 つの削除が行われたことがわかります。

  12. Git ショウ

    さて、たくさんの変更を行いました。これまでに行ったすべての作業をどうやって記録するのでしょう?

    そこで、git show コマンドの出番です。Git show を使うと、今いるブランチで行った変更を見ることができます。プロジェクトの履歴を見るには最適な方法です。

    ターミナルでgit show をメインブランチで実行します。ここにはたくさんの情報があります:

    • コミット ID (sha と呼ばれます)
    • コミットメッセージの作者、時刻、日付
    • コミットメッセージそのもの
    • ファイルに加えられた実際の変更内容

      Screenshot of a terminal displaying everything that the command git show returns.

GitHub フロー

これで、プロフェッショナルとして git を扱うための十分な準備が整いました。これらのコマンドを練習することで、あなたはより効果的な Git ユーザーとなるでしょう。そしてこれが、私たちが GitHub フローと呼んでいるものにつながっていきます。

GitHub フローとは、誰でも使えるブランチベースのワークフローです。つまり、リポジトリで作業するときはいつでも GitHub フローに従うということです!

リポジトリをクローンし、新しいブランチを作成し、そのブランチに変更を加え、GitHub にプッシュし、プルリクエストをオープンしました。通常この段階では、自分が行った作業についてチームメイトにフィードバックを求め、コメントに対応します。そしてプルリクエストをメインブランチにマージし、自分のブランチを削除します。

GitHub フローの最終段階として、ブランチを削除してみましょう。ブランチを削除するコマンドはgit branch -d update-name で、これはローカルでブランチを削除します。リモートでブランチを削除するには次のコマンドを実行します。git push —delete origin update-name で、リモートリポジトリのブランチを削除します。

Using git branch -d update-name to delete a branch locally and git push —delete origin update-name to delete a branch in the remote repository now that it has been merged.

これが GitHub のフローです。

まとめ

開発者として毎日使うことになる Git の必須コマンドを 12 個学びました。GitHub のフローを見ながら、学んだコマンドを練習していきましょう。何か質問やフィードバックがあれば、GitHub コミュニティーのスレッドに書き込んでください!

以下のリソースを使って、Git のスキルを練習し続けましょう:

The post Top 12 Git commands every developer must know appeared first on The GitHub Blog.