GitHub用のGUIアプリがあるのになぜgitを学ぶのですか?


84

GitHubがMacWindowsの両方にGUIアプリを提供しているとすると、コマンドラインからgitを使用することを学ぶことの利点は何ですか?

現在、Macアプリを使用してリポジトリを更新していますが、これまでのところ私のニーズを満たしているようです。何を見逃しているのでしょうか?


15
LinuxのGUIであるgitkを忘れないでください。
DeveloperDon

14
すべてのスクリプトが欠落しています。
SKロジック

3
@KChaloux、はい、GUIアプリのほとんどがまったくスクリプト化できないという非常に良い理由があります。そして、スクリプト可能なものはひどいです(COMや同様の憎悪を考えてください)。
SKロジック

2
@KChaloux、理由は品質ではありません。純粋なGUIアプリケーションをスクリプト化するのは本当に難しいです。私が知っているすべての合理的なアプローチは、基本的に、何らかの形式のコマンドラインインターフェイスの導入に基づいています-UnixスタイルのCLI、テキストベースのコマンド言語、または本質的にコマンド言語と同じものであるバイナリプロトコル、COMを参照してください。しかし、最善のアプローチは、もちろん、さまざまなCLIツールとGUIの両方からアクセスできる共通のコアを持つことです。後者は、簡単にするためにCLIで構築することもできます。
SKロジック

13
あなたはしません。同じように、DreamweaverとFrontpage(または現在のもの)が存在するため、HTML / CSSを学ぶ必要はありません。多分それはあなたのためにいくつかのことのために働くでしょうが、誰かがそれが実際にどのように機能するかをよく知っていないとき
DorkRawk

回答:


116

この質問は、「GUIの代替が存在するCLIをなぜ学ぶべきなのか」という特別なケースに過ぎないと思います。後者の質問はGUIとほぼ同じくらい古いと思うので、長年にわたって答えようとする試みが何度もあったと思います。私はこの質問に私自身の答えを通じて自分の道をバンブルしようとすることができますが、ニール・スティーヴンスンは、私は彼の驚くべきエッセイ10年以上前、「究極の答え」のように同意の関節...コマンドラインました初めに

エッセイはコンピューティングの多くの側面に触れており、スティーブンソン自身もそれの多くは時代遅れであると考えていますが、エッセイはCLIがどのように優れたGUIであるかを文字通り私の人生を変えた非常に説得力のある方法で説明します。長い読み物(〜40ページ)ですが、あなたがここで尋ねたような質問をする人にはお勧めできません。

最後に、CLIとGUIのような質問には似たような方法で答えますが、あなたが尋ねることを選んだすべてのコンピューターのことから、私の答えはあなたの特定の質問に特に当てはまると思いますgitgitおそらく、スティーブンソンのエッセイで説明されているように、ホールホーイングの隠metaに本当にふさわしい、それほど長くないコンピューターツールのリストの中の最新のツールです。git、他のいくつかのUnix的なものと同様に、CLI自体をすべて知っている理由です。時々その不規則な「磁器」にもかかわらず; 時々それのために。

はい、そうです、OSXの場合でもWebサイトだけでも、githubのGUIで間違いなく生産性を高めることができます。はい、実際には非常に洗練されており、サイトの機能を頻繁に使用しています。しかし、いいえ、あなたの右の小指がgit filter-branch1つまたは2つの非常識なコマンドの上にぶら下がっているので、あなたはその神のような気持ちを持つことは決してありません。コンピューティングの経験から1つだけを守らなければならなかった場合、精神的な課題、午前2時にdatcenterで結ばれた親密な友情、登る能力の無限のはしご、ユーザーの生活に触れる、貴重なデータのPBを支配します仕事と快適な生活- 一つだけを保つ-それはその敬Godな気持ちでしょう。


5
In the Beginningへのよりアクセスしやすいリンク...コマンドラインでした:pauillac.inria.fr/~weis/info/commandline.html
エリアスザマリア

1
Re:時代遅れ:それは「BatmobileとしてのBeOS」の部分になりますよね?
-naught101

2
ギャレット・ビルケルは、彼のコメントをニール・スティーブンソンのオリジナルのエッセイと混ぜることで、エッセイ「In the Beginning ... Was the Command Line」を更新しました。あなたはここでそれについて読むことができます
私は、14

2
...ええ、Visual Basicを使用してGUIインターフェイスを作成できる場合、CLIが必要な人です。IPアドレスの追跡などに最適です。
ヘイ

3
私は「古い方が良い」とは提案していませんでしたが、CLIは(多くのハッカーのユースケースにとって)GUIよりも優れていると提案していました。CLIは、バイナリスイッチやパッチコードよりも優れています。これが、CLIを使用する理由です。記事は「記事内」にあるため、「証明」ではなく、CLIについての私が好きなことを明確にした議論が散文になっています。古いですが、UNIXもそうです。ちなみに、私はGoogleで働いており、私の周りの圧倒的多数の開発者はCLIベースの開発環境を使用しています(ただし、もちろんGoogle全体について話すことはできません)。
ヤニウアクニン

108

すべてのニーズがカバーされていて、すごい、Gitを深く掘り下げる必要がなければ、実際に必要なものを学ぶのに時間を費やすことができます。

gitは単なるツールです。GUIアプリではできないことをする必要があるとき、それを知っているでしょう。github!= gitであることに注意してください。


1
私はあなたに同意しますが、現在気付いていないことがあるかもしれません。それらを知っていれば役に立つかもしれません。番号?
ヒステルハイム

28
@AronLindbergはい、おそらくあります。しかし、あなたは間違った質問をしているのです。調査に時間を費やすべきなのはgitのワークフローと概念であり、コマンドラインではありません。GUIアプリに欠けているすべての機能が誰かにリストされていたとしても、実際にそれが必要かどうかはどうすればわかりますか?(これは、gitのドキュメントを見るだけで簡単に自分でできることでもあります)
-yannis

//、CLIを使用すると、ワークフローと概念についてもう少し考えるようになります。これは、すべての組織、選択、フローが、ウィザードやドロップダウンメニューではなく、頭の中で行われるためです。
ネイサンバサニーズ

57

ほとんどのCLIのみの機能は、誤ってリポジトリを奇妙な状態にして、それを修正したいときにのみ機能します。一方、リポジトリを奇妙な状態にする最も一般的な方法は、理解できない高度な機能を使用することです。GUIが提供するものに固執すれば、99%の時間でニーズに対応できます。

CLIを学習したいもう1つの理由は、それがgitの共通語であるということです。つまり、多くの人がさまざまなプラットフォームでさまざまなGUIを使用していますが、StackOverflowまたは他の場所で支援を求めた場合、答えはほとんどの場合CLIコマンドの形で出てくるでしょう。CLIがわからない場合は、ヘルプを取得するためのオプションがはるかに制限されます。


ここで間違いなくベストアンサー。何とか何とか哲学ではありません。
ジョンcj

//、これが私の最初の考えであり、哲学的な答えは私には魅力的でしたが、CLIを使用する主な理由は、テキストを介した推論、標準化、およびコミュニケーションがはるかに簡単だからです。描く方法をすべて知っているわけではありませんが、タイプする方法は知っています。
ネイサンバサニーズ

9

GUIアプリケーションは、手動の対話に依存して複雑な動作を実行します。これは、プロジェクトのセットアップや新しいものの開発に最適です。

コマンドラインインターフェイス(CLI)の利点は、自動化できる事前定義されたスクリプトを作成できることです。GitHubのGUIはすべて、git CLIを呼び出す素敵なグラフィックスと派手なボタンです。

GUIアプリあなたのためにしないことは、毎日1:30 AMにサーバー上のレポのトランクを自動的に更新することですが、git CLIを呼び出すcronジョブはそれを設定する本当に簡単な方法です。

さらに、チーム内のプロジェクトで作業する場合、インストールスクリプトのセットアップ、スクリプトの構築、スクリプトの展開などが便利で、チームメイトは退屈な繰り返し作業の代わりに問題の解決に集中できます。


トランク?マスターを意味すると思います。
jpmc26

@ jpmc26、私はSVNから来たgitが初めてだったときにこれを書きました。
zzzzBov

6

CLIが望ましいもう1つの理由は、ワークフローの問題です。多くのフレームワークは、コマンドラインを介して管理されます。CLIでgitを使用すると、プロジェクトとそのプロジェクトディレクトリに集中できます。たとえば、テストを実行してから、すべて同じインターフェイスと場所から新しい変更をコミットすることにします。


+1; そして簡単に/よりアクセスは、それが使用することです、私はそれを使用しています可能性が高いときに、適切な時期に(タップタップタップgitのタップタップタップをコミット)の代わりに、(タップタップ打ち上げGUIのgitのは「週の終わりにコミット」コミット)
安倍

5

SVNからGitへの移行を支援するには、最近Gitを掘り下げなければなりません。そして、私が学んだことは、Gitコマンドラインツールは学ぶべき複雑な部分ではないということです。

Gitの背後にある概念とアイデアは複雑な部分です(そして、それはそれらがひどく設計されているからではなく、単に他の中央集中型VCSから来るほとんどの人々にとって異質だからです)。

概念を理解すると、実際のコマンドラインステートメントは比較的簡単になりました。つまり、UIはGitの理解に実際には役立ちません(最も単純な操作を除く)。


3
実際、背後にある概念gitは非常に単純であるため、人々はそれらを理解することはできません-彼らはもっと難しいものを探しています。
ガフーア

4

CLIを知っていると、GUIアプリを使用できない環境にいる場合(そうでない場合)に役立ちます。

考えられるシナリオの1つは、システムに新しいツールを導入するのが面倒で困難な閉鎖的な場所で、数日間プロジェクトを支援することです。CLIのみを使用します。もう一度すべてを学習する必要があるため、生産性が低下しました。


1つの文の回答がめったに多くの価値を提供しない。あなたの答えを拡大していただけますか?
ウォルター

//、彼は@grumpasaurusです。ソネット、何を期待しましたか?
ネイサンバサニーズ

2

コマンドラインgitを学ぶ1つの理由は、ほとんどのドキュメントがその環境向けに書かれていることです。また、「Xをgitでどのように実行しますか?」という質問をすると、答えにコマンドラインコマンドが含まれている可能性があります。


1

GUIとコマンドラインを使用する場合の主な問題の1つは、ほとんどの場合、プロセスを同じように制御できないことです。たとえば、GitHubアプリケーションは、多くのgitワークフローの使いやすさの点では優れていますが、高度なgitプロセスでは依然として扱いにくい場合があります。

例として、GitHubアプリケーションの使用方法を理解していないものをいくつか紹介します(注意すべきもう1つの点は、各GUIにも学習曲線があることです)。

  • コミットのリベース
  • 個別にプッシュ/プル/フェッチします(GitHubでは、問題を引き起こす可能性のある単一の「同期」コマンドにグループ化されます)
  • コミットの修正

最後に、CLIを使用すると、ユーザーはスクリプト作成時にこれらのツールを使用できます。


最後のポイントは私にとって非常に重要です。ビルドスクリプト、ツール、およびサーバーで、GUIを使用してバージョン管理を行うためのGUIを使用することはほとんどありません。代わりにコマンドラインを使用する必要があります。

0

Mac用のGitHubについては知りませんが、Windowsアプリは最も一般的なタスク(追加、コミット、プッシュ、プルなど)のみを実行git merge --no-ffします。コマンドラインから実行する必要があるようなより複雑なタスク。

また、GUIを使用できない場合、たとえばリモートサーバーにSSHで接続する場合、gitの場合があります。

しかし、そうでなければ、GUIが必要なものすべてを提供する場合、コマンドラインを学習するのは時間の無駄です。私の仕事はWindowsのみの環境でTortoiseSVNを使用しており、SVNコマンドラインに一度も触れる必要はありません。


0

CLIがGUIよりも優れているケースを1つだけ学びました。これを説明するために、私は本のgitから例を取り上げました-皆のためのバージョン管理です。

イントラネットで共有したい場合は、次を使用できます。

  1. Gitoliteサーバー
  2. 裸のリポジトリを持つ共通共有ディレクトリ

裸のレポを作成する手順を見てください。

CLIモードでのベアリポジトリの作成

裸のリポジトリを作成するためのコマンドは、リポジトリを複製するために使用したものと同じです。ただし、-bareパラメーターは、すべての違いをもたらします。 git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench コンソールで上記のコードを実行すると、一般的な共有フォルダーgeneric_shareにWorkbenchリポジトリのベアクローンが作成されます。

GUIモードでのベアリポジトリの作成

GUIを使用して既存のリポジトリからベアクローンを作成するのは簡単なプロセスです。あなたがする必要があるのは:

  1. 既存のリポジトリから.gitディレクトリをコピーし、repositoryの外部のdifferent_name.git(新しいベアリポジトリに付けたい名前)で貼り付けます。この例では、C:\ Users \ raviepic3 \ Desktop \にWorkbenchという名前の非ベアリポジトリがあり、その中にcontent.docxがあります。そして今、GUIを使用してこれから新しいベアリポジトリを作成したいと思います。C:\ Users \ raviepic3 \ Desktop \ Workbench.gitをコピーして、C:\ generic_share \ Bare_Workbench.gitとして貼り付けます。

  2. config fileテキストエディタで内部のBare_Workbench.gitを開き、 bare = false文字列falseをtrueに置き換えて置き換える行を見つけ ます。

  3. 保存して終了。

GUIでは、非常に多くのクリックを行い、どのファイルを編集するかを覚えておく必要があります。CLIでは、1つの簡単なコマンドですべてを実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.