Git と仲良くなりたい(希望) ファイル変更・操作編

実際のファイルの変更等に使うコマンドをまとめてみました。

add インデックスに変更を追加
mv ファイル名の変更・移動
rm ファイル削除
commit インデックスの中身をリポジトリに登録
reset コミットの取り消し
revert 過去のバージョンに上書きコミット


add

add は インデックスに追加するためのコマンドのようです。

コマンド 内容
git add [path] 指定 path を add
git add [path1] [path2] 複数 path のとき
git add -u 既に git で管理しているファイルを全部add
git add -A 既に git で管理しているファイル
+新規(無視リスト以外)を全部 add
git add -p 対話型 add

一度 commit したファイルでも、変更を加えてcommit したい場合は
再度 add する必要があるとの事。
Subversion の 「svn add」とはちょっと意味合いが違うようです。



mv

ファイル名を変更、または移動します。

コマンド 内容
git mv before.txt after.txt ファイル before.txt の名前を after.txt に変更。
さらに変更情報をインデックスに登録
git mv before.txt [dir path] before.txt を指定したディレクトリに移動。
さらに変更情報をインデックスに登録


rm

ファイルを削除します。

コマンド 内容
git rm [file path] 指定されたファイルをワークツリーから除去
さらにインデックスに削除情報を登録
git rm -r [dir path] ディレクトリを消す場合は -r オプションを追加
git rm --cached [path] ワークツリーにファイルを残し、インデックスからのみ除去。
図で言う「①」を行わず、「②」のみを行います。



commit

commit で インデックスの中身をリポジトリ登録です。

コマンド 内容
git commit エディタが立ち上がるタイプ
git commit -m "message" エディタなし一発
git commit -a [git add -u] + [git commit]
git commit [path] path 指定して commit

エディタをvimに変えたいときはこう。

$ git config --global core.editor 'vim -c "set fenc=utf-8"'



reset

コミットを取り消す。

コマンド 内容
git reset [path] 指定したpathをHEADの最新の状態に戻す
git reset HEAD^
git reset --soft HEAD^
リポジトリとインデックスをHEAD最新の1つ前の状態に戻す。
git reset --hard HEAD^ ワークツリーもろともHEAD最新の1つ前の状態にする

HEAD^で1つ前、HEAD^^で2つ前。
HEAD~3で3つ前。
「--soft」または「指定なし」とすることで、リポジトリとインデックスに反映。
「--hard」とすることで、リポジトリとインデックスとワークツリー全部に反映。



revert

ある時点のコミットを、
1)ワークツリーに反映し、2)さらにコミットまでする。
resetと違って、コミットを消すわけではなく上書きコミットするようなイメージ。

コマンド 内容
git revert [コミットID] ワークツリーをコミットID時点のものに上書きしコミット
git revert HEAD^ HEAD最新の1つ前の状態に revert

<オマケ>
ワークツリー・インデックスに変更がある場合に revert を
実行するとどうなるのかな?と思って実験してみました。
ワークツリー変更状態(インデックスには add していない状態)で revert するとエラー。

error: Your local changes to the following files would be overwritten by merge:
hoge.txt
Please, commit your changes or stash them before you can merge.
Aborting

インデックスに add している状態で revert してもエラー。

fatal: Your local changes would be overwritten by revert.
Please, commit your changes or stash them to proceed.

そうですかダメですか…。



目次へ