【超初心者向け】VS Code×Git「ステージされている変更がなく、コミットできません。」について
VS Codeで
「①ソース管理」→「②コミット」を実行すると、
ステージされている変更がなく、コミットできません。
すべての変更をステージして、直接コミットしますか?
と表示されることがあると思います。
VS Codeのソース管理「超初心者」の私にとっては
怪文書にしか見えなかったので学習したことをまとめました。
この記事は、
- VS Codeのソース管理
- Gitのソース管理
- Githubのソース管理
の
超初心者向けの記事となっていますのでご注意ください。
「ステージされている変更がなく、コミットできません。」とは?
これは、
変更したファイルがステージングエリアに追加されていない状態
を示しています。
ということなのですが、
なんのこっちゃサッパリですよね。
そこで、まずは図で理解を深めたいと思います。
- Windows
- VS Code
- Git
- GitHub
の大まかな概念図は下記のような形になります。
で、前半部分の
「ステージされている変更がなく」
は
- VS Codeで「変更したファイル」が「作業ディレクトリ」にあるけど
- それが「ステージングエリア」にないよ
ということになります。
図にすると、こんなイメージです。
そして、後半部分の
「コミットできません。」
ですが、これを理解するためには
「コミット」について理解する必要がありますが、
コミットとは、ファイルやコードの変更内容を「保存」するための単位です。
ただし、通常のファイル保存とは少し異なるため、
具体例などを見ながら理解していきましょう。
コミットとは?
~具体例~
- 通常のファイル保存の場合
例:レポート.docx
月曜日:第1章を書いて保存
火曜日:第2章を書いて保存
→ 火曜日の保存で月曜日の状態は上書きされる
- Gitのコミットの場合
例:レポート.docx
月曜日:第1章を書いてコミット「第1章完了」
火曜日:第2章を書いてコミット「第2章完了」
→ 両方の状態が履歴として残る
コミットの特徴
- 変更内容のスナップショット(その時点での写真のようなもの)を保存
- いつ・誰が・何の変更をしたのかが記録される
- コミットメッセージで変更の理由や内容を説明できる
- 過去のコミットに戻ることができる
- 複数のファイルの変更をまとめて1つのコミットにできる
実際の開発でのコミット例
コミット1:「ログイン機能の追加」
- login.htmlの新規作成
- main.jsにログイン処理追加
- style.cssにログインフォームのスタイル追加
コミット2:「バグ修正:ログインエラーメッセージの表示位置修正」
- style.cssの一部修正
このように、コミットは「プロジェクトの変更履歴」を
管理する仕組みだと考えることができます。
まるでセーブポイントのような働きをして、
必要な時に過去の状態に戻ることができるのです。
ここまで、
「ステージングエリア」や
「コミット」の意味について
大まかに理解できたかと思うのですが、
次のルールを理解することで、
「ステージされている変更がなく、コミットできません。」
を理解することができると思います。
Gitの基本的なルール
Gitの基本的なルールとして、
コミットできるのは「ステージングエリア」にあるファイルだけ
というのがあります。
そのため、先ほどの概念図でも示したように
- VS Codeで「変更したファイル」が「作業ディレクトリ」にあるけど
- それが「ステージングエリア」にないよ
という状態のため、
「ステージされている変更がなく、コミットできません。」
というメッセージが表示されている、
という風に理解することができます。
「すべての変更をステージして、直接コミットしますか?」とは?
これまでの説明を踏まえますと、
「すべての変更をステージして、直接コミットしますか?」の意味は
- 「変更したファイル」が「作業ディレクトリ」にあるけど「ステージングエリア」にないよ
- なので、「変更したファイル」を「全て」「ステージングエリア」に入れて
- 入れると同時に「コミット(バージョン管理)」するけどいい?
ということになります。
1~3が完了した図は以下のような形になります。
「はい」「常時」「行わない」「キャンセル」選ぶとどうなる?
ようやく最初のダイアログに戻ることができるまで
一通り説明をしてきました。
以下のダイアログの選択肢のそれぞれの意味は
「はい」:すべての変更をステージングしてコミットを行います
「常時」:今後も同様の操作を自動的に行います
「行わない」:コミットをキャンセルします
「キャンセル」:操作を中止します
ということになります。
まとめ
今回はVS Codeで表示される、
ステージされている変更がなく、コミットできません。
すべての変更をステージして、直接コミットしますか?
についてまとめました。
私自身、バージョン管理をするほど
個人開発のソースができているわけではないのですが、
いざGitを使ってみようと思ったら
しょっぱなから意味が分からなかったのでまとめてみました。
この記事が誰かの参考になれば幸いです、それでは!
Discussion