解 説

今回はGitをMacのターミナルで使う例です。
すでにGitは導入済みでSource TreeなどでGUI環境でGitを使っている初心者向けの記事です。
入門者はまずSource Treeで使ってみることをお勧めします。Source Treeの使い方はこちらの「Git入門(2)〜SourceTreeの使い方」を参考にしてください。

Source Treeに慣れてきたら、できるだけ早くコマンドでGit操作できるようになりましょう。よく使うコマンドは限られていますし、何よりも早くて簡潔明瞭だからです。

Gitの使い方詳細はGitBookが参考になります。

環境設定

必要に応じてGitの環境設定します。

*ユーザー名登録
例ではユーザー名を「Tahara」に設定

*メールアドレス登録
[自分のメールアドレス]部分を削除して自分のメールアドレスを記述

コミットするエディッタの登録

デフォルトではVimが立ち上がります。今回の例ではSublime textを使用する場合です。
まず、sublへのシンボリックリンクを作成すること。〜/binディレクトリがあると仮定したら以下コマンド。〜/binディレクトリが無ければ作ります。

うまくいかないときは次を試しましょう。

Gitの操作の流れ

ローカルリポジトリ

ローカルリポジトリとは履歴データの保管場所のことです。
ワークツリー(現在の作業場所)で作業したデーターをローカルリポジトリに保存します。

基本的な考え方として、ローカルは3つのエリアに分かれます。

  • ワークツリー:ファイル変更する場所
  • ステージ:スナップショット記録(コミット)を変更する準備をする場所
  • リポジトリ:スナップショット記録

Gitデータ構造について

ポイントをまとめると次のようになります。

  • リポジトリに圧縮ファイル、ツリー、コミットファイルを作成することでデータを保存しています。
    Gitではこれらのファイルを「Gitオブジェクト」と呼んでいます。Gitオブジェクトは「.git/objects」ディレクトリの下に保存されます。
  • コミットが親コミットを持つことで変更履歴を辿ることができます。
  • Gitの本質はデータを圧縮して、スナップショットを保存していることです。
  • Gitコマンドは、そのデータに対して色々な操作をしていることです。

初回以降のコミットはそのコミット内容を保存すると共にその一つ前の親コミットも合わせて記録します。
そうすることで必ず一つ前の履歴に戻れる仕組みができるわけです。

リポジトリの作成と使いかた

ローカルリポジトリ作成

ローカルリポジトリを作成するコマンド

  1. まずはターミナルでプロジェクトフォルダに 「cd」で移動
  2. 「git init」で.gitディレクトリが作成されます

ここには、リポジトリ(圧縮ファイル、ツリーファイル、コミットファイル)、インデックスファイル、設定ファイルが作成されます。

すでにリモートに存在するGitリポジトリをコピー

リモートからクローンする方法
リポジトリ名のフォルダができて、その中にクローンしたデータが入ります。
初心者は2重にフォルダができる結果になりますので注意。

クローンの例

ステージに追加とコミット

全ての変更ファイルをステージに追加するコマンドは「git add」の後にピリオドをつけます。
特定のファイルをステージに追加するにはそのファイル名をつけます。

*コミット
「git commit」でコミットすることができます。

ファイルの変更を確認

「git status」コマンドは変更のあったファイル名を表示してくれます。
ステージに追加される前の変更か、ステージに変更後の変更か分けて表示されます。

具体的に変更されたファイルの変更された内容を表示するには「git diff」 コマンドを使います。
ターミナルの確認が終わったらキーボードの「Qキー」で「git diff」の表示を閉じます。

*「git add」する前の変更を確認

*「git add」した後の変更確認

変更履歴

今までの変更履歴をみる場合は「git log」を使います。

ファイル削除

ファイル削除関連のコマンドは慎重に行いましょう。
フォルダからGitを使ってファイルを削除する方法です。

ファイルを残すとき

「–cached」 オプションを付けることにより、ファイルを残したままGitの管理対象から外すことができます。
「–cached」 オプションつけないと、ファイルごと削除することになります。使用する場合は慎重に!

GitHubにプッシュする方法

まず、GitHubのページでログインしておきます。

GitHubページ

ログイン後「New repository」ボタンでリモートリポジトリを作成します。これで空のリモートリポジトリができました。

ローカルリポジトリにリモートリポジトリを新規追加

*リモートに接続する設定
リモートに接続する設定のコマンドは新規リモートリポジトリを作成したら表示されますので、それをコピーして使います。

*リモートに接続する設定のコマンド

*初回のpushは以下コマンド

*2回目以降のpushは以下コマンド

*ブランチを複数作成して作業をしている場合は次のコマンドが便利で安全です。ブランチの有無関係なしに「push」はこのコマンドとしておくのも良いかもしれません。

コマンドのエイリアス

エイリアスを作成しておくと入力が楽になります。次の例ではコミットは「cm」だから、git cmと入力すればOK

バージョン管理したく無いファイル

「.gitignore」ファイルはGit管理の対象から外す一覧のファイルです。これは重要な考え方です。
パスワードが入ったファイルやpsdファイル、キャッシュ、MACの専用ファイルなどや、フロントエンドでは「node_modulesフォルダ」などは巨大になりますので「.gitignore」ファイルに記述しておきます。
このようにGitの管理から外したい場合は、「.gitignore」ファイルを作成して記載します。

*注意:パスワードやAPIの認証コードなどを不用意にGitHubに公開することは危険な行為です。くれぐれも注意してください。AWSなどで不正利用されて多額の請求を受けたなどの笑えないミスが多く報告されています。

「.gitignore」記述方法の例

変更をもとに戻す

Gitでは基本的に変更した内容を元に戻すことはやらない方が良いです。トラブルの元になります。
どうしても必要な時は少し練習をしてしっかりと理解して行いましょう。
次の内容はこんなことができるという簡単な事例です。参考程度にみてください。
詳細はもっと複雑です。どこかでまた特集を組みたいと思います。
*Gitリセットコマンド詳説はこちら

ステージした後に変更を元に戻す

git add した後にファイルの変更内容を元の状態に戻す方法です。
ただし、これはgit addしたことをやめただけで、ワークツリー内のファイルの内容まで書き換わりません。

*全ての変更を取り消す場合

もしワークツリーの内容を変更する場合は「git checkout」コマンドを使います。

git add する前のファイルの変更内容をもとの状態に戻します。

「git checkout」の後の「–」の前と後ろには半角空白が入ります。

*全ての変更を取り消す場合

リモートとのやりとり

リモート情報の確認

リモートを表示するコマンドです。
対応するURLを表示するときは「-v」を付けます。

Fetchの仕組み

リモート情報をremotes/リモート/ブランチとして別ブランチにして保存します。

リモートから取得(Fetch)

*fetchのコマンド
リモート名は通常「origin」です。

*別ブランチにfetchで取得した情報をマージする方法。

*リモートから取得(pull)
リモートから情報を取得して、マージまで一度に実施します。

これは「git fetch origin master」と「git merge origin master」を行ったことと同じことになります。

リモート情報を詳しく知る

  • FetchとPushのURL
  • リモートブランチ
  • git pullの挙動
  • git pushの挙動

リモートを変更、削除

*リモートを変更

*リモートを削除

Gitの使い方 コマンド編(2)に続く