ファイルの移動を記録しよう
今回は、ファイルの移動を記録するやり方について見ていきます。
ファイルの移動もファイルの削除と同じように「git add」とは別のコマンドが用意されています。
追加と削除のコマンドについてはこちらを参照してください。 phoeducation.work phoeducation.work
それではファイルの移動を記録するコマンドを見ていきましょう。
コマンドは「git mv」コマンドを使います。mvとはmove(移動)の略です。
$ git mv <旧ファイル名> <新ファイル名>
これでファイルの移動、つまり、ファイル名の変更を記録することができます。
これをするとファイル名が変更されて、かつ、ステージにもその変更が反映されています。
このコマンドは実は次の3つのコマンドを実施することと同じ効果を持っています。
$ mv <旧ファイル> <新ファイル> $ git rm <旧ファイル> $ git add <新ファイル>
まず、「mv」コマンドでファイルの移動をします。
「mv」コマンドはファイル名を変更するコマンドです。
ここでワークツリーのファイル名が変更されます。
その後、その変更をステージに記録していきます。
ファイルを移動すると古いファイル名が削除され、新しいファイルが作成されたのと同じ状態になります。
ですので、まず「git rm」コマンドで「古いファイルが削除された」というのをGitに伝えていきます。
その後、「git add」コマンドで「新しいファイルが追加された」というのをステージに反映させていきます。
このように「git mv」コマンドは通常のコマンドを使っても代替できるので、どちらを使っても大丈夫です。
たくさんコマンドを打つのが面倒だという場合は「git mv」コマンドを使ってください。
逆に「git mv」コマンドや新しいコマンドを覚えるのが面倒だと言う場合は、「mv」「git rm」「git add」を使えば同じことができます。
ではイメージを確認します。
ワークツリーに「index.html」というファイルがあったとして、それがステージにも反映されているとします。
この状態から「git mv」コマンドを使ってファイル名の変更をしていきます。
「git mv」コマンドを使って「index2.html」というファイル名に変更します。
するとその時点でステージの方にも「index2.html」とう状態が反映されています。
このようにファイルの移動、ファイル名の変更を記録できるのが「git mv」コマンドになります。
実際にやってみよう
では、ターミナルで確認します。
「git_tutorial」に移動します。
まずは「ls」でファイルの状態を確認します。
$ ls index.html
「index.html」があります。
「git status」も確認しておきます。
$ git status On branch master nothing to commit, working tree clean
何も変更されていません。
ではこの状態で「git mv」コマンドを使ってファイル名を変更していきます。
今回は「index.html」を「index2.html」というファイル名に変更してみます。
$ git mv index.html index2.html
では「ls」で確認してみましょう。
$ ls index2.html
ファイル名が「index2.html」に変更されています。
では変更状態はどうでしょうか。
$ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) renamed: index.html -> index2.html
「Changes to be committed」となっているので、コミットすべき変更、つまりステージに追加された変更があるとなっています。
それが「renamed」(ファイル名の変更)であり、「index.html」が「index2.html」に変更されたと表示されています。
このように「git mv」コマンドを使うことで、ワークツリーのファイル名が変更され、しかもステージにもそれが記録されています。
では元のファイル名に戻しておきましょう。
「git mv index2.html index.html」として元に戻しておきます。
$ git mv index2.html index.html
「ls」で確認しておきましょう。
$ ls index.html
「index.html」になっています。
「git status」をしてみます。
$ git status On branch master nothing to commit, working tree clean
何の変更もないと言われています。
参考図書
独学で挫折しそうになったら、オンラインプログラミングスクール