VSCode の gitステータス

たま(Kohki_Takatama)
·
公開:2024/5/20

VSCodeでは、ソース管理という機能で`R`や`A`といったGitステータスを確認することができます。

この1文字は何を表すのでしょうか?

`git status`コマンドとも比較しながら見ていきたいと思います。


M: Modified(変更された)

最も見るのがこの`M`です。すでにgitによって追跡されているファイルが、HEADコミットから変更されていることを示します。


U: Untracked(追跡されていない)

まだgitに追跡されていないファイルであることを示します。

この`U`、`git status`コマンドだと"updated but unmerged"を指すとされています。VSCodeとgitで意味が変わるわけですね。


A: Added(追加された)

Untracked file がステージングされていることを示します。


D: Deleted(削除された)

ファイルが削除されたことを示します。


R: Renamed(名前が変更された)

`git mv old_name new_name`で変更した時のみ、この`R`表示になります。通常の方法でファイル名を変更したときは、元のファイル名が`D`、新しいファイル名が`U`の扱いになります。

なお、ファイル名の変更は`git mv`を使用するのが良いようです。たしかに、コミット履歴が消えてしまいますもんね。


C: Conflict(コンフリクトの発生)/ Copied(コピーされた)

謎のステータスです。

こちらの記事では、コンフリクトの発生時`C`が表示されていることがわかります。

ただし、この記事の手順に沿ってコンフリクトを発生させても、`!`が表示されます。変更されたようです。

また、`git status`では"copied"を示すようです。ただし、その発生のさせ方がわからない。`git cp`コマンドは無いし・・・

gitのconfig変更が必要なのかな?


T: (file) Type Changed(ファイルタイプが変更された)

ファイルタイプというのは、「拡張子」という意味ではありません。シンボリックリンク・通常のファイル・サブモジュール(git)の変更を指すようです。

VSCodeに実装されているかはわかりません。


なぜだか、`git status`コマンドと違う点があったり、変更らしきものがあるにも関わらず、VSCode公式の説明というのがないんですよね。

公式動画内で明言されていることは、以下の2つだけです。

  • `U`は "untracked file" を指す(1:25)

  • `A`は "new file has been added" を指す(1:45)

まあ大したことではないんですが・・・公式で記述がない仕様というのは珍しい気がします。

以上、VSCodeのgitステータスでした。

@kohki_takatama
RUNTEQ 53期 Twitterなどは→potofu.me/ja/my/links