次にファイルの削除方法を学びます。
単にワーキングツリーからあるファイルを削除しても良いのですが、コミットしない限りインデックスには残り続けるので、何かのタイミングで消したはずのファイルが復活して問題を起こします。
そこで次の git rm コマンドを使ってワーキングツリーとインデックスから同時に消しておいた方が無難です。
では演習をしてみましょう。
現在は次の状態(状態 13)となっています。
状態 13 (再掲)
ワーキングツリー
インデックス
ローカルリポジトリ「gitlocal」
HEAD
"piyo.txtを更新(S9)"
|
← |
HEAD~
"hoge.txtを更新(S8)"
|
← |
HEAD~2
"piyo.txtを追加(S5)"
|
← |
HEAD~3
"hoge.txtを追加(S4)"
|
では piyo.txt を削除してみましょう。
するとワーキングツリーとインデックスから piyo.txt が消えて次の状態 14 となります。
ただしまだコミットしていないので HEAD には piyo.txt は残っています。
状態 14
ワーキングツリー
インデックス
ローカルリポジトリ「gitlocal」
HEAD
"piyo.txtを更新(S9)"
|
← |
HEAD~
"hoge.txtを更新(S8)"
|
← |
HEAD~2
"piyo.txtを追加(S5)"
|
← |
HEAD~3
"hoge.txtを追加(S4)"
|
さて消したファイルを復元したい場合は、ファイル内容の復元で学んだ restore コマンドを使って復元できます。
ただしインデックスからも対象のファイルは消えてますので以下のように一旦アンステージしてからファイルを復元する必要があります。
git restore --staged <ファイル名>
git restore <消したファイル名>
では試しに piyo.txt を HEAD から復元して状態 15 にしてみましょう。
当然ですがこれは元の状態 13 と同じ状態です。
状態 15 ( = 状態13 )
ワーキングツリー
インデックス
ローカルリポジトリ「gitlocal」
HEAD
"piyo.txtを更新(S9)"
|
← |
HEAD~
"hoge.txtを更新(S8)"
|
← |
HEAD~2
"piyo.txtを追加(S5)"
|
← |
HEAD~3
"hoge.txtを追加(S4)"
|
演習を続けます。
再び git rm で piyo.txt を消してから "piyo.txt を削除(S16)" というコメントでコミットして下さい。
すると次の状態 16 に変わります。
状態 16
ワーキングツリー
インデックス
ローカルリポジトリ「gitlocal」
HEAD
"piyo.txtを削除(S16)"
|
← |
HEAD~
"piyo.txtを更新(S9)"
|
← |
HEAD~2
"hoge.txtを更新(S8)"
|
← |
HEAD~3
"piyo.txtを追加(S5)"
|
← |
HEAD~4
"hoge.txtを追加(S4)"
|