【Github初心者による備忘録】Githubにおけるステージングの存在意義とは?


初めまして.Githubを使い始めて間もないしがないプログラマです.

Githubを使えばプログラムのバージョン管理がしやすくて共同開発がやりやすいということで私も最近になってGithubを使い始めました.

しかし,どうもまだ不慣れでして,1つ1つの概念がいまいちピン来ていません.

たとえば,プッシュとかプルとかコミットとか.

まあ,なんというかなんとなくは理解できるけど,これって共同開発においてどう機能してくるの?みたいな感じで,どうも腑に落ちないところもまだあるわけです.

その中でも,特に,ステージングという概念がいまいち理解できなかったので,それに関してここに残しておこうと思います.

もしも私の考え方に間違えがある,なんかずれている,みたいなことがあればご指摘いただけると助かります.

Githubにおけるステージングの役割

Githubではローカルでプログラムを修正してリモートリポジトリに送信する.というのがまあ一連の流れなわけですが,その際に,コミットとか,ステージングとかの概念が出てくるわけです.

また,コミットは,ここを修正したよー!みたいな感じで変更をコメント付きで記録に残せて,共同開発において連携が取りやすくなるのは,私としても理解できました.

しかし,その前に行われるステージングの存在意義がどうも理解できなかったのですよね.

そこで,まあ,色々と調べてみたわけですが,最終的に自分が理解できたことは,

  • ローカルでの修正をリモートリポジトリに残しても遜色ないレベルで整理する役割
  • 粗末な修正でリモートリポジトリにプッシュすることのないように用意されたもの

みたいな感じで受け取りました.

つまり,たとえば,

適切な変数名が思いつかなくてhennsuuとかにしていたけれど変数名の付け方としてはやっぱり汚いから変更するかも...

いるかいらないかわからないファイルだけどとりあえず作っておいて...

みたいな状況で,リモートリポジトリとして残すレベルではない粗末な修正をステージングで吸収して,リモートリポジトリとして共有されるファイルは一定水準のレベルで維持する,みたいなことを目指したのがこのステージングという存在意義なのではないでしょうか?

まあ,いちいち,変数名の変更だけで何度もリモートリポジトリに送るのは面倒ですし,ステージングがあることによって,変更が生じる予感があるの時のためにステージングくらいはしておいて後で修正しようか,みたいな流れを取ることができわけですからね.

おそらくそれを狙ったものだと私はそう解釈したのですが...

もっと適切な存在意義,価値などがあるのでしたら是非コメントとかで教えていただけるとありがたいです!!!

参考

https://kray.jp/blog/expound-git-add/
https://qiita.com/takuyanin/items/8d5226fd5834e6ebc564