@TaikiTkwkbysh (WAKA Engineer)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Git(Gitコマンド)は操作はマストでしっかり使えるようになっておくべきでしょうか。

解決したいこと

こんにちは。
現在SES企業で働いているエンジニア歴半年ほどの者です。

現在現場でGitに触れることが多いのですが、そこでふと感じてしまったことがあり
この度投稿致しました。
※使いこなせるレベルでは到底ございませんが、Gitによる基本操作の勉強は一通り実施済みです。

現在自分がローカルで作業を行おうとする際、

・ブランチをきる
・ブランチの切り替え(チェックアウト等)
・プル、プッシュ、コミット
・コンフリクトの修正

といった基本的な操作はほとんどGitコマンドではなく
vsCodeやTortoiseGitを使用してGUI的に操作することが多く、コマンドを使用することがあまりございません。
※お恥ずかしい話、機会がないというよりは、コマンドよりGUIで操作する方が分かりやすく簡単でそっちに逃げているような感じです....

確認したいこと

そこで感じたのですが、モダンな自社開発企業、もしくはモダンな技術を使用して開発を行う現場等でも、バージョン管理にはGitコマンドによるCUI操作でバージョン管理をおこなっているのでしょうか。

現在GUI的操作で簡単に処理を進めているので特に仕事として困ってはいませんが、本当にこれで良いのか(自分のスキルアップのためにもこれらの処理をコマンド操作で行い、スキルアップを図るべきではないか)と少し不安になりました。
しかし、わざわざ分かりづらいCUIの操作を身に付けるより、Gitのバージョン管理の仕組みや流れといった全体像を理解して、分かりやすくミスも少ないものをしっかり操作できる方が効率的で良いのではないかとも感じてしまいます...

それでもGitコマンドによるCUIでの操作も覚えるべきということであれば、是非ご教示いただきたいです。
質問の意図が不明、そもそも前提知識や認識が間違っている等の指摘でも結構でございます。

何卒、ご教示のほど宜しくお願いいたします。

0 likes

3Answer

回答

しかし、わざわざ分かりづらいCUIの操作を身に付けるより、Gitのバージョン管理の仕組みや流れといった全体像を理解して、分かりやすくミスも少ないものをしっかり操作できる方が効率的で良いのではないかとも感じてしまいます...

激しく同意です。ミスが少なく、自分が分かっているやり方が一番です。

質問者さんがリストした物と

  • 特定のコミットまで戻る (git revert)
  • 特定のコミットのファイルと今のインスタンスのファイルを比べる (git diff)
  • ログを表示する (git log)
  • クローンする (git clone)
  • リモートブランチの場所を確認する (git remote -v)
  • SSHの設定 (リモートブランチへのアクセスにsshが必要な場合)

がGUIでサポートされているのなら全然問題ないと思います。

第一に、もしgitで質問者さんがリスト+上にリストした物以上の操作が必要になった場合、それはgitの理解の問題ではなく質問者さんのソースコードに対する理解や開発グループ、ソフトの設計の問題です(急な仕様変更や、初期から放置されていた致命的なバグ、マージのルールの曖昧さ、不安定なリモートサーバーなど)。

蛇足

私はGUIを使わないのですが、その唯一の理由が"キーボードから手を離してマウスを使うのがめんどくさい"からです。で、GUIの使い方がわからんので、後輩に教えられないという事がたまにあります。まぁうちがモダンか?といえば曖昧ですが、gitを使わないのは論外ですが、gitをつかっていればGUIであろうがCUIであろうが、しっかりバージョン管理がなされている事が重要なのだと考えます。

ただし、CUIのみにしか対応していない状況がままあります。その時はgitのコマンドを学ぶ(覚えるとはあえて書かない)必要がありますが、下記のチートシートみたいなのをみながらやれば、やってるうちに覚えますのでその時まで特に学ぶ必要もないでしょう。

3Like

Comments

  1. @TaikiTkwkbysh

    Questioner

    @RandomScientist 様
    この度は大変参考になるご意見いただき、誠にありがとうございます。

    @RandomScientist様がリストして頂いたもの全てをサポートしていたかは曖昧ですが、少しネットで調べた限りは網羅していそうです。
    自分もやはり本質はバージョン管理をしっかり行えるかだと思いますので、無理に"gitコマンドの操作をすることだけ"に学習時間を割くのはやめようと思います。

    そして"キーボードから手を離してマウスを使うのがめんどくさい"というご意見、私も激しく同意致します。確かにおっしゃる通りです....

    現在JavaやJavascriptを使用して自分でアプリケーションを作成することをしているので、そのタイミングで少しgit操作を行う程度で徐々に慣れていこうかと思います。

    この度はご教示いただき、誠にありがとうございました。
    また機会がございましたら、何卒ご教示のほど宜しくお願い致します。
  2. 深い所まで掘りさげたいのであれば、時間があれば、

    Gitの歴史やgit自体の設計思想を

    https://ja.wikipedia.org/wiki/Git

    の「設計」や「歴史」の項や、

    https://ja.wikipedia.org/wiki/UNIX%E5%93%B2%E5%AD%A6

    を読んでみてください。Gitの手続について理解/覚えるよりもよっぽど有意義ですよ。

    私はごりごりのLinuxユーザーで、偏見なのですが、Windowsで開発している限りはUnix関係から派生したツールを「理解」するのは意味がないと思いますし、時間の無駄だと思います(過激思想)。

    また、OpenSourceSoftwareの哲学を [完全に理解する](https://togetter.com/li/1268851) には、1900年代後半の開発環境や、CPU-メモリー-ストレージ-周辺機器の進化の歴史や仕組みもある程度知っていないとおそらく無理でしょう。これについてはいつか記事を書きたいと思います。

    もし興味があるのでしたら、個人学習的な意味でvirtualboxを使ってubuntuをバーチャルマシンにインストールして、シェルを使ってみるのがいいのではないでしょうか。

    完全な蛇足ですが、過激派として書かずにはいられんのですはい。すみません。
  3. @TaikiTkwkbysh

    Questioner

    @RandomScientist様

    返事が遅くなってしまい、大変申し訳ございません。
    補足説明、大変助かります。
    まだ全てに目を通すことはできておりませんが、大変奥深いという事ですね...
    以前linux学習を個人で行ったときにvirtual boxを個人PCに入れたので、実際に行ってみようと思います。

    ご教示いただき、誠にありがとうございます!

Gitのバージョン管理の仕組みや流れといった全体像を理解

そのためにはCUIのほうが適していると思います。
gitのCUIコマンドは、基本的に「どのような結果を得たいか」ではなく「どのような操作をしたいか」を指示するコマンド体系になっています。

一例をあげるとgit checkout HEAD 《file》とかでしょうかね。これは「作業コピーの《file》の変更を取り消す」という結果を得たいときに打つコマンドですが、「レポジトリのHEADコミットから《file》を取得して作業コピーを上書きする」という操作を指示しています。
GUIクライアントだと、これが分かりやすく「作業コピーの変更を取り消す」のように翻訳されていますが、そのせいでgitが具体的に何をやっているかを把握しづらくなっていることが多いと思います。
(特にステージング関係は分かりづらいと思います)

上記のような理由で、gitの概念を理解したいならCUIクライアントの操作を覚える……というより、CUIクライアントがどのような指示を出してバージョン管理を実現しているかを理解するほうがよいと思います。

3Like

Comments

  1. @TaikiTkwkbysh

    Questioner

    @culage様
    この度は大変参考になるご意見をいただき、誠にありがとうございます。

    確かにGUIでの操作の意味をしっかり理解するためにも、CUIを理解する事は重要であると認識致しました。
    現場では中々CUIでの操作を実践する機会は少ないですが、個人学習でアプリケーションを作成する学習をおこなっているため、そのバージョン管理をCUIで操作してgitの理解を深めていきます。

    この度はご教示いただき、誠にありがとうございました。
    また機会がございましたら、何卒ご教示のほど宜しくお願い致します。

先の方々の回答が非常に素晴らしく、
私がお伝えできるような情報は殆ど皆無なのです、が
「コマンド練習時に約に立つかもしれない」情報を提供します。
(質問に対する直接的な回答ではなく大変恐縮ですが…)

もし「手軽にコマンドの練習をしてみたい」や「取っ掛かりがあると良いな」
というような場合にお勧めのWebアプリケーションを紹介します。

「ブラウザ上で基本的なコマンド一通りが擬似的に実行」でき、
「コマンド実行と連動したイメージ図を確認」したり
逆に「イメージ図から操作してコマンドを確認」できるので便利です。

2Like

Comments

  1. @TaikiTkwkbysh

    Questioner

    @syutorum様

    返事が遅くなってしまい、大変申し訳ございません。
    この度は大変勉強になるサイトをご共有いただき、誠にありがとうございます。
    早速使用してみましたが、図解もあって大変分かりやすく良い振り返りとなりました!!

    以後継続的に使用していきます。
    この度はご教示いただき、誠にありがとうございました。
    また機会がございましたら、何卒ご教示のほど宜しくお願い致します。

Your answer might help someone💌