リポジトリの作成して最初のコミットをする

Gitでプロジェクトを管理する際は、リポジトリを作成し、ファイルをリポジトリの追跡対象に含め、コミットする必要があります。ここでは、その流れを見ていきます。

VSCodeのSourceControlやSourceTreeといった、GUIで操作できる環境があればそれで操作しても問題ありません。現実的にコマンドで操作することはかなり少なく、GUIでの操作で十分なためです。

最初の大まかな流れ

プロジェクトでGitを用いて管理したい場合、最初にするべきことは

  1. リポジトリを作成
  2. ファイルを追跡対象に追加
  3. ファイルをコミット

の3つです。一度追跡対象に含めてコミットしたファイルは、以後は簡単にコミットできます。

リポジトリを作成

Gitではリポジトリという概念があり、これを利用することで管理できるようになります。

Gitをプロジェクトで利用する際は、まずはそのプロジェクトをGitで管理できるようにする必要があります。

リポジトリとは

リポジトリはファイルなどの状態や履歴を保管する、ほかから分離された仮想的な場所として機能します。要は、各リポジトリの対象箇所だけ、履歴が記録され、様々な操作ができるということです。

リポジトリのイメージ

画像のように、.gitという隠しフォルダが入っているフォルダがそのままリポジトリになります。履歴などはこの.gitフォルダに入っていますが、直接開くことはほぼありません。

作成

早速リポジトリを作成しましょう。まずはターミナルを開いて、リポジトリで管理したいフォルダまで移動します。フォルダは空でも大丈夫です。

$ cd "フォルダのパス"

Windows Terminalをインストールしていれば、フォルダ内で右クリックしたところにある起動ボタンから起動すると楽です。開いた時の場所が作業ディレクトリの状態で開きます。

windowsでterminal起動は右クリックが楽

移動したら、git initと入力してください。initは、リポジトリを作成するコマンドです。

$ git init
Initialized empty Git repository in C:/XXXXX/git_sample/.git/

このような表示が出てきたら作成完了です。

Windowsの場合は隠しフォルダを表示すれば、.gitフォルダがあることが確認できます。

.gitフォルダの例

ファイルを追跡対象に追加する準備をする

リポジトリを作成したらリポジトリ内にファイルやフォルダを適当に追加し、git add 場所を入力しましょう。

$ git add .

勘違いしがちですが、git addは新規ファイルを管理対象に追加するのではなく、どの更新を適用するかの対象に追加する、というものです。

つまり、既存ファイルでもgit addしなければコミット対象になりません。

コマンドを実行しても何も表示されませんが、これでひとまず追跡対象に追加する準備ができました。

フォルダ指定やワイルドカードを利用する場合は、次のような挙動になります。

  • .
    • カレントディレクトリ以下のすべてのファイル
  • * (ワイルドカード)
    • * すべて
    • *.txt 全ての.txtファイル
    • foo/* foo以下の全て。foo/も同じ結果
    • foo/*.txt foo以下の全ての.txtファイル
    • foo/*/hoge.txt foo以下にあるhoge.txt

場所は、複数並べることができます。

# imagesフォルダとscriptsフォルダ全体が追跡対象に追加される
git add images/ scripts/

追加されているか確認する際は、git statusと入力します。

> git status
On branch master

No commits yet

Changes to be committed:
    (use "git rm --cached <file>..." to unstage)
        new file:   readme.md

Untracked files:
    (use "git add <file>..." to include in what will be committed)
        foo/
        hoge/

この例では、readme.mdのみ追跡対象とした場合です。new fileとして記録されていますね。

逆に、追跡対象にしなかった (addしなかった) ものは、Untracked filesに含まれています。

コミット

ファイルの更新、追加、削除などを行ったとき、コミットするまではまだ履歴に登録されていません。コミットをすることで現在の状態が履歴に追加されます。

コミットする

直前でgit addして追跡対象に追加したと思います。次は、その状態を履歴に追加する必要があります。

git commit -m "コメント"と入力し、コミットしましょう。

$ git commit -m "initial commit"
[master (root-commit) ffb70a8] initial commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 readme.md

コミットが完了しました。変更が適用されています!

-mでコメント付与は必ず行いましょう。なくてもコミットはできますが、チーム開発をするにあたって重要です。進捗の見える化、レビューのしやすさ、過去の状態に戻すときの場所の探しやすさ、そもそもどんな変更をしたかなど、多くの利点があります。必ずコメントをつける癖をつけておきましょう。

コミットをすることで履歴に追加されました。gitは過去のバージョンと比較したり、戻したりできることが強みの1つで、バージョン=コミット履歴です。そのため、”コミット前に戻す”、”このコミットと現在を比較する”、という風な言い回しをしばしばします。

別のファイルをコミットしてみる

次は、別のファイルをgit addで追加し、もう一度コミットしてみましょう。

$ git add .
$ git commit -m "secondary commit"
[master 8e4f678] secondary commit
 3 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 foo/bar/hoge.txt
 create mode 100644 hoge/fuga.txt
 create mode 100644 hoge/hige.md

コミットが追加されました。コミットの情報には、コメント、コミット者などが記録されています。

addとcommitを一気に行う

変更したファイルすべてをコミットしたい場合、つまり、git add -a git commitとしたい場合、git commit -aの1行に省略できます。

新規作成したファイルはgit commit -aでも対象になりません。git addする必要があります。

コマンドでgitを利用する場合はよく使います。

コミットを取り消す

コミット直後にミスに気がつくなど、ちょくちょくコミットを取り消したい場合があります。その場合は、次のようなコマンドを叩くと取り消せます。

  • git reset --soft HEAD^
    • 手元の変更は残しておいて、コミットしたという事実だけを取り消す場合
  • git reset --hard HEAD^
    • 手元の変更もなかったことにする場合。危険なのであまり使いません。

これは取り消すときのテンプレのようなものです。git resetは、特定のコミット前に戻すコマンドです。softはローカルの状態はそのままにコミットの位置だけ変更し、hardはファイルの状態全てもそのコミット前に戻すというものです。

HEAD^は、直前のコミットを指します。git reset 種類 コミット位置と指定して戻しているわけです。つまり、HEAD^をそれ以外のコミットIDを指定すれば、もっと過去のコミットに戻ることもできます。

コミットIDは、git logを実行すると見れます。

まとめ

ファイルをコミット履歴に追加するには、まずgit add "ファイルやフォルダ"として、コミット対象に含めます。その後、git commit -m "コメント"として、コミットします。

この後はGitHubにリポジトリを作成して活用していきましょう。

git repository thumb

役に立ったらシェアしよう!