ファイルの移動
ここでは、ファイルを移動するためのコマンド git mv について学ぶ。
準備
まずは、git mv コマンドの練習用に branch を作成する。現在のブランチが try-remove の場合、git branch コマンドでブランチを作成すると、try-remove ブランチから派生したブランチになってしまう。

この場合、try-remove のコミットが混ざってしまう。

ブランチからブランチを派生させた方が好ましい場合もあるが、通常は目的別に master ブランチからブランチを派生させた方が「なぜその編集を行ったのか」が明確になる。そのため、master ブランチからブランチを作成する。
master ブランチに移動した後にブランチを作成することでもできるが、以下のように指定したブランチからブランチを作成することもできる。
$ git branch <作成したいブランチ名> <ブランチ元>
上記は以下と同義。
$ git checkout <ブランチ元>
$ git branch <作成したいブランチ名>
以下のように、ブランチ元を指定しない場合には、現在のブランチから新しいブランチが作成されるというパターンを覚えておいて欲しい。
$ git branch <作成したいブランチ名>
ミニ演習
master ブランチから try-move ブランチを作成せよ

Hint : この際にも、
git checkout -bは使用できる
以下のコマンドを入力し、出力が同様ならば成功
$ git branch
master
* try-move
try-remove
$ ls
master ブランチからブランチを作成したので、ファイルが残っている。もし、try-remove からブランチを作成していると、ここでファイルは何も表示されない。
for_commit.txt hoge.txt
--
Tips : 一つ前に居たブランチに戻るには
$ git checkout --マイナスなので、一つ前に戻るイメージを持つといい
ファイルの移動 mv コマンドを試す
以下、mv コマンドと git mv コマンドの違いを確認する。
新しいディレクトリを作成する
$ mkdir tmp
Tips :
tmpはtemporaryの略で、「一時的な」という意味がある
$ mv hoge.txt tmp/
$ ls tmp/
hoge.txt
$ git status
On branch try-move
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: hoge.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
tmp/
$ git add hoge.txt
$ git add tmp/
$ git status
On branch try-move
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: hoge.txt -> tmp/hoge.txt
renamed
path が変わることを、名前の変更とみなしている。 commit して終わり。
$ git commit -m "move hoge.txt in tmp dirctory"
git mv コマンドを試す
まず同じ手順を行うために、先ほどの変更をリセットする。
$ git log
commit 96a83129d2917a3c01235c4ec73087bd7371bd52
Author: yutakakinjyo <yutakakinjyo@gmail.com>
Date: Sun Apr 19 05:26:33 2015 +0000
move hoge.txt in tmp dirctory
commit 1d57efd3de77ed03e525c0792c98c75ca6287be4
Author: yutakakinjyo <yutakakinjyo@gmail.com>
Date: Wed Apr 15 16:04:28 2015 +0000
add for_commit.txt
commit 2d08bf631566bccb0dd9ee0395502f4eabbfcbf5
Author: yutakakinjyo <yutakakinjyo@gmail.com>
Date: Sat Apr 18 23:15:33 2015 +0000
write contents
commit 87fa83f6c8111dc2415255bae43320504f34e0d8
Author: yutakakinjyo <yutakakinjyo@gmail.com>
Date: Wed Apr 15 14:58:12 2015 +0000
my first commit
$ git reset --hard 1d57efd3de77ed03e525c0792c98c75ca6287be4
$ mkdir tmp
$ git mv hoge.txt tmp/
On branch try-move
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: hoge.txt -> tmp/hoge.txt
mv hoge.txt tmp/ と git add hoge.txt と git add tmp を同時に行っていることがわかる。
$ git commit -m "move hoge.txt in tmp dirctory"
再度コミットして終わり
まとめ
ファイルの移動をするには
mv <ファイル名> <移動先>
git add <ファイル名>delete を commit するgit add <移動先>移動先を commit するgit commit -m "コミットメッセージ"
--
以下の2つのコマンドを使って tmp/fuga.txt を tmp/hoge.txt に変更し、その変更をコミットせよ
git mvgit commit
演習3
- git reset を使い、ブランチ作成時の状態に戻せ
- 以下の3つのコマンドを使って
hoge.txtをtmp/hoge.txtに変更せよ。この時git add後にgit statusでステータスがrenamedになっていること確認せよ。
cprmgit addgit commit