LotosLabo

プログラミング技術とか気になった情報を載せていきます

Gitについて3

リポジトリにファイルを追加する


git add file.txt

add というコマンドを使います。


今回はファイルを指定して追加しましたが、

git add .

という風に作成したファイル全てを追加する事もできます。
こちらのほうが楽ですのでこっちを使うことが多いと思います。



ちょっとどうなってるかわかりにくいと思いますので、addする前とした後で比べてみます。

まずは gitの状態を調べるコマンドとして

git status

というのがあります。

addする前はこのようになっています。


f:id:lo25131:20140222202137j:plain


addして commitもしてくださいね  と書いてあります。
ちょっと見えづらいですが、赤字でファイル名が表示されています。


次にfile.txt を addすると

f:id:lo25131:20140222202148j:plain


このように変わります。
そしてここに書いてあるように、unstageという、ステージする前の状態、
作業ディレクトリ(ワークツリー)の状態に戻すには、

git rm -cached file.txt


と入力すると戻す、というか削除します。
ファイル自体は消えません。

f:id:lo25131:20140222202430j:plain


そうするとステータスもさっきの赤字に戻っています。

更新してみる


先ほどのvimでファイルを開いた時のように、また同じファイルを開き
編集して保存すると更新されている状態になります。

今の状態はこのような中身になっています。

f:id:lo25131:20140222210820j:plain


これをvimで編集して文字を追加します。

このようになりました


f:id:lo25131:20140222210801j:plain


しかしいざ保存したけど気に食わないな、さっきの状態に戻せないかなぁ
という時に便利なコマンドがあります。

それが

checkoutコマンドです。



git checkout file.txt

と指定することで先ほどの更新する前の状態に戻すことが出来ます。

これもadd と同じように、

git checkout .

でいいと思います。


f:id:lo25131:20140222210742j:plain


※ただしaddした後には使用できません。




次にcommitしてみたいと思います。

commitとは更新内容をリポジトリに登録し、ステージエリアからgitディレクトリに反映させるものです。ここでコミットIDというものが作成されます。

Gitディレクトリに反映


Gitディレクトリに反映させるためには commitを使います。


git commit -m 'メッセージ内容'

という風に入力します。

これは通常 add した後に commitをすることになりますので連続して入力していきます。



f:id:lo25131:20140222203338j:plain


commitした後にコミットしたことを確認するコマンドとして

git log  

というのがあります。

f:id:lo25131:20140222203325j:plain

コミットID、ユーザー名、Eメール、コミットメッセージを確認することが出来ます。



このgit log というのにはいくつかのオプションがあります。


git log --stat

どのファイルが何箇所変更されたか確認することが出来ます。

f:id:lo25131:20140222203926j:plain


git log --oneline

一行で情報が表示されます。
コミットIDは基本7文字目まで分かれば使えます。

f:id:lo25131:20140222203936j:plain


git log --p

全部の詳細を確認できます。

f:id:lo25131:20140222203940j:plain



git --statが必要な情報のみわかるので一番使いやすいと思います。



ファイルの削除


git rm file.txt


rmにより作業ディレクトリとステージングエリアからファイルを削除することが出来ます。これはgit rm --cachedのステージングエリアから削除するのとは異なり、
ファイル自体を削除してしまいますのでご注意を。



commitを変更する


先ほどcommitした内容を編集するには、

git commit --amend

というのを使います。

やってみましょう。


今のコミット状態はこのようになっています。

f:id:lo25131:20140222214624j:plain


これを編集してみたいと思います。

git add .

git commit -amend と入力していきます。

f:id:lo25131:20140222214524j:plain



するとこのような画面が出てきますので、扱い方はvimと同じです。

ここで先ほどcommitしたメッセージを変えることが出来ます。


f:id:lo25131:20140222214424j:plain



このように変わりました。

f:id:lo25131:20140222214721j:plain



commitを取り消す


commitした内容を取り消したいと思います。
最初のcommitのlogの取り消し方はよくわかりませんのでもし出来るのであれば今後掲載していきます。


まず、file.txtの内容を編集してもう一つcommitを追加したいと思います。



f:id:lo25131:20140222215137j:plain



f:id:lo25131:20140222215142j:plain


二回目というcommitメッセージで追加してみました。



しかし、このcommitいらないなぁと思った時にこのコマンドが使えます。

git reset

というのが使えます。


git resetには

git reset --softgit reset --hardの2種類があります。

・git reset --soft
→ ワークディレクトリの内容はそのままでコミットだけを取り消す。

・git reset --hard
→ コミット取り消した上でワークディレクトリの内容も書き換える。



今回はgit reset --hardを使っていきます。

git reset --hard HEAD^

と入力すると

HEAD^はひとつ前のコミットの意味になるので、ここでは直前のコミットである
「二回目」を取り消すことが出来ます。
HEADというのは今作業中の場所を表します。

f:id:lo25131:20140222220002j:plain


そうすると

logの情報が一つ消えます。


f:id:lo25131:20140222220054j:plain


取り消したcommitを元に戻す


なぜまた元に戻すのか!

とお思いですが、元に戻せるコマンドがあります。
先ほど消した二回目というコミットを元に戻せます。

git reset --hard ORIG_HEAD

というコマンドを使います。


そうするとこのように戻ります。


f:id:lo25131:20140222220454j:plain