Gitにはリポジトリに登録する前の領域としてステージング領域というものが存在する。 ここに登録されているファイルは、リポジトリに登録される候補生のようなもので、Gitの追跡対象となる。 ファイルがこの領域にないとGitが扱い対象外とみなし、その後コミットしてもリポジトリには登録されない。 従ってコミットせずにファイルを保持しておきたい場合はステージング領域に追加しなければよい。(個人的には特に便利とは思っていない領域)
流れとしては、まず作業領域でファイルを作成・修正し、リポジトリに登録したいファイルをステージング領域に登録する。
そのあとコミットすることによりステージング領域に登録されているファイルがローカルリポジトリに格納される。
最後にGitHubなどのリモートリポジトリへ登録する。
作業領域はワーキングツリー/ワークツリー、ステージング領域はインデックスと呼ばれることもある。
ステージング領域へ追加するコマンド(git add)
git add {ファイル名} <--ファイル名指定
git add {ファイル名} {ファイル名} ... <--複数ファイル名指定
git add *.txt <--ワイルドカードも可
git add sample/sample1.txt <--ディレクトリ付きファイル指定
git add . <--カレントディレクトリ配下(サブディレクトリ含む)のファイル全て対象
git add -A <--全てのファイルを対象(親ディレクトリなどカレントディレクトリ配下外も対象)
git add -u <--Gitで管理されいてるファイルのみ追加(一度もコミットされていないものは対象外)
nオプションを使うとドライランとなり、実際には実施されないが挙動を確認することができる。
git add -n .
ローカルリポジトリへコミットするコマンド(git commit)
git commit <--viが起動され複数行のコミットコメントが付与可能
git commit -m "{コミットコメント}" <--1行コメントでコミット
git commit {ファイル名} <--特定のファイルのみコミット
git commit -a <--ステージングに追加されているファイル+ステージング外だが変更のあるGit管理中のファイル
ステージング領域で既に分別してるので、3つ目のファイル指定はあまり使わない。4つ目のコマンドは新規ファイルでなければステージング追加作業を省略できる。
リモートリポジトリへ反映するコマンド(git push)
git push origin {ブランチ名}
originはリモートリポジトリを表す。cloneをした際にデフォルトでoriginという名前が付く。どこのリポジトリに紐づいているかは「git remote -v」コマンドで確認可能。 最後の引数は反映させたファイルが存在するブランチ名を指定する(基本的にはカレントブランチを指定することになる)。 例えばdevlopブランチの内容をリモートリポジトリへ反映させたい場合は、下記のようになる。
git push origin develop
下記は「git remote -v」を実行した例(originの所在が確認できる)
$ git remote -v
origin git@github.com:xxxxxx/sandbox.git (fetch)
origin git@github.com:xxxxxx/sandbox.git (push)