はじめに
こんにちは!ITスクールRareTECHにてCS(Customer Support)を担当している池村です。今回の記事はGitの基本コマンドについてです。Gitは初心者にとって難しいと感じる領域ですが、コマンド一つ一つをしっかり理解していけば問題はありません。
今回の記事では、クローンしてきたリポジトリに変更を加え、それをリモートに反映させるまでをみていきます。
前回の記事からの続きですので、まずは以下の記事を一読お願いいたします。
クローンしてきたローカルリポジトリについて
まずはクローンしてきたリポジトリの中に何があるのかを確認していきましょう。
前回の記事では、README.md
だけ準備したリポジトリをクローンしてきました。
ご自身のPCにあるリポジトリのことをローカルリポジトリと呼びます。
ls -a
上記のコマンドを叩くと、以下のようなファイル・ディレクトリがあると思います。
. .. .git README.md
ここで大事になるのは.git
ディレクトリです。
この.git
ディレクトリが置いてあるディレクトリは、Gitの管理下にあるという証明になります。
以下の記事でも紹介しましたが、これがホームディレクトリにあると、様々な問題が発生しますので、ご注意ください。
さて、この.git
の中身ですが、初心者は覚える必要がないものです。
ただ、一応表として残しておきます。Gitの理解を深めたい時に参照してください。
ディレクトリ / ファイル | 役割 |
---|---|
HEAD | 現在のブランチの最新コミットを指す |
config | リポジトリの設定情報 |
hooks/ | コミット時のスクリプト |
index | ステージングエリアの状態を保持 |
logs/ | HEAD やブランチの移動履歴 |
objects/ | すべての Git データ(コミット・ファイルのバージョン) |
refs/ | ブランチやタグの参照情報を管理 |
ファイルを追加してみる
では何かしらのファイルを追加してみましょう。
touch test.txt
上記のコマンドを叩くと、test.txtというファイルが追加され、ワーキングツリーに変更が加えられた状態になります。
ワーキングツリーとは、実際に作業しているファイルやディレクトリの状態を指す用語です。
status
コマンドで、変更がされたかどうか確認をする
git status
ここで赤く表示されているのが、変更が加えられたファイルです。
この英語で書かれている部分を日本語にすると以下になります。
現在のブランチ: main
このブランチは 'origin/main' と同期しています。
未追跡のファイル:
(`git add <ファイル名>` を実行すると、コミット対象に追加できます)
test.txt
コミットに追加されたファイルはありませんが、未追跡のファイルが存在します(`git add` を実行すると追跡できます)。
git addをしろ〜と言われているようですね。
ローカルでの基本的な操作の流れについて
ローカルリポジトリでの作業の流れをかいつまんで解説します。
- ファイルの中身を変更する or ファイルを追加する
- その変更をステージングエリアに乗せる(
git add
) - ローカルでの変更を確定させる(
git commit
) - ローカルの変更をリモートへ反映させる(
git push
)
git status
コマンドは、変更を加えられたファイルが、現在どの領域にあるのかを確認できるコマンドです。
add
をしてみる
ではファイルに変更を加えたところで、そのファイルをステージングエリアに乗せる作業を行います。ここで出てくるのがgit add
コマンドです。
git add test.txt
上記コマンドを叩いたあと、再度status
を確認していきましょう。
git status
画像のように、赤文字から黄色の文字に変わりました。
書かれている文章にも変化が現れましたね。
現在のブランチ: main
このブランチは 'origin/main' と同期しています。
コミット予定の変更:
(`git restore --staged <ファイル名>` を使うとステージングを解除できます)
新規ファイル: test.txt
ステージングエリアに乗ったファイルを解除する方法は置いておいて、ステージングエリアに乗ったことは確定したので、今度はコミットをしてローカルリポジトリの変更を確定させましょう。
commit
をしてみる
ではステージングエリアに乗ったファイルをコミットしていきます。
git commit -m "test.txtの追加"
この""
の中身はなんでも良いのですが、何を変更したのかわかりやすいメッセージを書きましょう。
コミットを完了させると、status
を見ても、何も表示されなくなります。
コミットが行われたかどうかは、git log
で確認ができます。
git log
についての詳細は、今後の記事で紹介いたします。
push
をしてみる
さて、ここまできたら、最後はリモートリポジトリに反映させるだけになります。
リモートリポジトリの状態を今一度確認しましょう。
まだGithub上にはREADME.mdしかありませんね。
ローカルで作成したtest.txtは存在しません。ではgit push
コマンドでリモートに変更を反映させていきます。
git push origin main
画像のような結果になりましたら、成功しています。
GitHubの方も確認してみましょう。
追加されていますね。ローカル→リモートの流れはこれにて終了です。
add
やcommit
のオプションについて
add
の使い方の応用
先ほどまではadd
コマンドでファイルを指定しましたが、まとめてステージングエリアに乗せることができます。
git add .
.
を使うと、今いるディレクトリ以下にある、変更されたファイル類をまとめてステージングエリアに乗せることができます。
ファイルを複数指定して乗せることもできます。
git add test2.txt test3.txt
commit
の使い方の応用
commit
の使い方に関しても色々な応用があります。
まずは、すでにcommit
されているファイルに変更が加えられた場合に、add
とcommit
を一緒に行う方法です。
touch test4.txt
git add test4.txt
git commit -m "test4.txtの追加"
echo "Hello World!!" >> test4.txt
git commit -a -m "test4.txtにHello World!!を追記"
多用することはないかな?と思っています
次にコミットメッセージを修正したい時に便利なオプションです。
git commit --amend -m "正しいコミットメッセージ"
直前のコミットで、コミットメッセージをミスったら、これを使ってください。
少々取り扱い注意ですが、--amend
オプションでは、新規で追加した変更ファイルを、直前のコミットに追加することもできます。
git add newfile.txt
git commit --amend --no-edit
上記コマンドを利用すると、直前のコミットに対してnewfile.txtの変更も加えられます。
--no-edit
のオプションは、コミットメッセージは変更しない時に使われるオプションになります。
すでにpushされたコミットに対して、変更を加えるとややこしいことになるのでお勧めしません。
おわりに
読了ありがとうございました。
これらのコマンドはGitのコマンドの中でも基本中の基本ですが、かなり大事なところですね。初心者がGitコマンドで一番怖いと感じるのは、おそらくコンフリクトだと思います。現在の記事内容まででは、まだ発生はしませんので安心してコマンドを実行してみてください。
では次の記事ではブランチについてと、pull
やmerge
などについて解説していきます。