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に変えたいときはこう。
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.
そうですかダメですか…。