Gitローカルリポジトリ操作
ここではローカル環境におけるGit操作を記載しています。
例えば自分一人だけのローカルPC環境でソースコード編集を実施しており、履歴管理したい場合などにローカルリポジトリを作成すると非常に便利です。
個人作業のバックアップツールとしてもGitを用いることができます。
ローカルリポジトリの作成する。
1. リポジトリの作成
ファイルが格納されているディレクトリで「git init」コマンドを実行します。
このコマンド実行により「.git」ディレクトリが作成され、Gitリポジトリの管理ファイル等が作成されます。
$ git init
Initialized empty Git repository in /Users/Momose/C-Lang/tmp/.git/
$ ls -a
. .. .git test.c
リポジトリの設定
作成したリポジトリにそのままコミットするとエラーになります。
リポジトリにユーザを登録する必要があるためです。
以下のコマンドを実行して、Gitリポジトリの操作ユーザを作成します。
$git config --global user.email "xxxxx@xxx.com(メールアドレス)"
$git config --global user.name "ユーザ名"
ローカルリポジトリへのコミットする。
コミットを行うことで管理しているファイルへの変更点がGitに記録されます。
GitではコミットするファイルをIndexにステージングする必要があります。
ステージングとは、コミットしたいファイルを指定する作業を指します。
誤って修正途中やコミットしたくないファイルをコミットするのを防ぐこと目的としたGitの操作手順になります。
1. 状態の確認
「git status」コマンドで修正ファイルを確認できます。
$ git status
2. ステージング
コミット対象ファイルをIndexにステージングします。
$ git add <コミット対象ファイル>
ステージにカレントディレクトリ以下全てを追加する場合、下記コマンドを実行します。
$ git add .
各ファイルの差分を見て、ステージに追加するか決める場合は下記コマンドを実行します。
$ git add -p
3. コミット
Indexから修正ファイルをコミットします。
$ git commit
「commit -a」実行することで、変更されたファイルを自動的にコミット対象に加えてコミットを実行することができます。
$ git commit -a
コミットログを確認する。
コミットログの一覧は下記コマンドを実行します。
$ git log
変更対象のファイル名を表示する場合は下記オプションを指定します。
$ git log --name-status
Gitローカルリポジトリ - その他操作
コミットをキャンセルする
ステージングのキャンセル
ステージング(git add)から変更ファイルを取り消す場合は下記コマンドを実行します。
$ git rm --cached <ファイル名>
ステージング(git add)から削除するだけでなく、ファイル自体も削除する場合には下記コマンドを実行します。
$ git rm -f <ファイル名>
コミットの取り消し
直前に行ったコミットを取り消すには下記コマンドを実行します。
作業ディレクトリの内容はコミット時のままで、「コミットした」ということだけが取り消されます。
「--soft」オプションは省略できます。
$ git reset [--soft] HEAD^
作業ディレクトリに加えた変更点もコミット前に戻す場合は以下のコマンドです。
$ git reset --hard HEAD^
作業ディレクトリをローカルリポジトリの最新状態にするには下記コマンドを実行します。
indexもクリーンされます。
$ git reset --hard HEAD
コミット後の修正
前回のコミットを破棄して、現在のIndex内容で新しくコミットします。
「reset」と「commit」を実行することと同様の処理となります。
コミットメッセージの修正なども行えます。
$ git commit --amend
差分を確認する。
差分をとる対象はリポジトリ概念ごととなります。
リポジトリの概念
Gitのリポジトリ概念の時系列的要素は以下の通りです。
[HEAD^]----[HEAD]----[Index]----[WorkingDirectory]
HEAD^ = ローカルリポジトリ前回コミット時点
HEAD = ローカルリポジトリ最新コミット時点
Index = ステージング(addコマンド)
WorkingDirectory = 作業ディレクトリ
diffの取得対象
IndexとWorkingDirectoryの差分を確認します。
$ git diff
WorkingDirectoryとHEADの差分を確認します。
$ git diff HEAD
HEAD とインデックスの差分を確認します。
$ git diff --cached
HEADとHEAD^(コミット間の差分)を確認します。
ドット2つ(..)は空白でも表記できます。
$ git diff HEAD^..HEAD
$ git diff HEAD HEAD^
その他使い方
差分のあるファイル名を列挙する場合は以下のコマンドを実行します。
$ git diff --name-only
ローカルリポジトリからファイルを取得する。
復元処理
コミット済みファイルを取得する場合には下記コマンドを実行します。
$ git checkout <リポジトリのパス>
一つ前のバージョンの内容をローカルリポジトリから持ってくる
$ git checkout HEAD^ <リポジトリのパス>
作業ディレクトリを指定したコミット時点の状態にまで戻す
引数にはコミットを指定するハッシュ文字列もしくはタグ名などを指定します。
コミット名は「git log」コマンドで表示されます。
$ git revert <コミット名>