編集部員(プログラマー)今さら人には聞けない?でもサクッと知りたい!という人のためのGit超入門ツイートシェアはてブLINEPocket初心者プログラマーたるもの、Git使えて当たり前!な雰囲気があるのですが、ゼロからサクッと知るにはどうしたらよいでしょうか?勉強のためプログラミングの記事とかを読んでいると、サンプルプログラムコードの置いてある先が「GitHub」で、いきなり「クローンしてきて」って言われても何のことやら??という方もいらっしゃると思います。そんな方々のために今だからこそ、当たり前のように使われているGitについて、わかりやすく説明していきたいと思います。いう私もGitはここ数年使ってきてはいますが、今だに知らない機能だったり、使ったことない機能もたくさんあります。本記事を読んで、Git使ってみよう、いや使わなきゃ!と思っていただけるような内容にしたいと思っています。commitpushGitをより活用するならサービスを使おうGithubでできることwebhookとは?プログラマー初心者だからこそサービスに参加しよう!まとめGitとは?バージョン管理ソフトウェアであるGitはプログラムコードなどのバージョン管理を行うソフトウェアです。自分がプログラムをエディタで修正して上書き保存しただけだと、「どこをどのように修正したのか」がわからなくなってしまいます。うまく動いた場合は良いですが、動かなくなってしまったら困りますよね。Gitはプログラムの変更を履歴として「リポジトリ」という入れ物に保持してくれるので、特定の時点のプログラムに戻ったり、消してしまったプログラムを復活させたりすることができます。Gitは、その「リポジトリ」をネットワーク上に分散して管理できるため、分散型バージョン管理と呼ばれる特徴をもっています。この分散型で管理を行うGitの特徴が、大人数での開発をスムーズに進めるのに一役買っていたり、リポジトリのあるサーバが壊れてしまった場合の耐性を高めたりするのです。分散型のほかにはどんなものがあるの?分散型の対になるものが集中型と呼ばれるバージョン管理ソフトウェアで、有名なものにはSubversionがあります。集中型の場合、リポジトリにあたる履歴情報を格納する場所が一箇所に集まっており、プログラムコードを書き換える人は、みんながその場所をアクセスして変更を加えていく形になります。どこが優れているの?どちらの型でも一人で使っているぶんにはあまり問題になりませんが、多くのプログラマーが一つのソフトウェアを変更していく場合はどうでしょう?集中型の場合、変更の順番待ちが発生してしまったり、自分の変更がほかの人の変更とかちあって(コンフリクトという)しまったり、問題が発生しやすいのです。GitはLinuxのカーネルプログラムを管理する目的でつくられたこともあり、多人数でのソフトウェア開発に耐えうるよう、差分管理の仕組み、リポジトリを分散してもつ仕組み、リポジトリ間を同期する仕組みなど、複数の人が自由に安全にプログラムの変更ができるよう工夫されています。冒頭の例でいうと、GitHubにあるリポジトリがリモートリポジトリであり、「クローンしてきて」というのは、目の前のPC上にそのリポジトリのコピーをもってくることです。あとは手元のリポジトリで心ゆくまで修正し、バグもなく納得がいったら、リモートリポジトリに変更を反映する、という感じで、ほかの開発者に気兼ねすることなく作業ができるイメージが持てるのでは?と思います。Gitの使い方CUIツールとGUIツールがあるGitはもともと「git」というコマンドラインユーザーインターフェイス(CUI)で作られています。慣れない人には若干怖い、黒い「プロンプト画面」で操作しなければなりません。それだけだと困る人もいるので、Gitのプログラムをベースに普通のエクスプローラーのように操作できる、グラフィカルユーザーインターフェイス(GUI)のツールも有志によって開発されています。gitコマンドGitの全てが凝縮されたgitコマンドですが、コマンドラインオプションはそう多くありません。説明しようとすると本が何冊も書けてしまうくらい奥深いものです。concept.Git特化型GUIアプリケーションGitの操作をグラフィカルに行えるようにしたアプリケーションですが、基本的にGitでできる操作に特化しています。ファイルやフォルダの管理画面があり、ブランチと呼ばれる変更履歴を分ける操作や、リモートからの同期操作、その逆のリモートへの反映操作がボタンポチ!でできるようになっていたりします。代表的なものにアトラシアン社が提供しているSourcetreeがあります。https://www.sourcetreeapp.com/統合型GUIアプリケーションWindowsの世界では有名ですが、エクスプローラーの機能の一部にGitの操作ができるよう組み込むタイプのアプリケーションです。エクスプローラー上でファイル名を右クリックし、そこからリモートリポジトリへ修正を反映したりできます。代表的なものにオープンソースのTortoiseGitがあります。Codeのような開発ツール(統合開発環境、IDEと呼ばれる)のプラグインとして利用することもできます。この場合、Gitのコマンド動作をIDEのウィンドウやツールバーに当てはめてたりするので、若干慣れないと思ったように操作するのが難しいです。初心者であれば、環境に合わせて上のどちらかのGUIアプリケーションを使うのが良いと思います。覚えておきたいgitコマンドオプション5つgitコマンドのオプションは多くないと書きましたが、それぞれのオプションできることは引数も組み合わせると、結構膨大な数になります。ここでは、最初に知っておきたいコマンドオプションについて、どんなときに使うのかイメージをつかんでもらいたいと思います。clone何はともあれ、最初にやるのがこのcloneです。手元のPCにURLなどで指定したリモートリポジトリのコピーを生成します。基本的にはこのクローンされたリポジトリをつかってプログラム開発をしていきます。pullリモートリポジトリでは、あなたがクローンしたリポジトリに既に別の変更が加えられているかもしれません。新機能の追加だったり、バグの修正などです。そのような最新の差分をリモートから取得して、ローカルリポジトリに取り込みます。すごく細かい話をすると、実は中身的にはfetchとmergeの処理を同時に実行しているのですが、最初はpullで理解いただければよいかと思います。mergeGitではある時点からの変更履歴を枝分かれしたように管理できる「ブランチ」という機能があります。ある例では、公開ソフトウェアを管理するためのmasterブランチがあり、そこに直接変な修正が混ざってしまうと困るので、開発用の「developブランチ」を作成するというケースです。分けたブランチ側でバグ修正をしながら、開発を進めていき、問題なくなったら、公開用のmasterブランチに結果を反映したくなりますね。このときdevelopブランチの変更をmasterに取り込む、といった操作を行うのがこのオプションです。後で出てくるGitベースのサービスをつかう場合、あまり意識して操作することはないかもしれませんので、そういう操作だと理解しておいてください。commit手元でファイルとしてセーブした変更をローカルのリポジトリに反映させます。このcommit操作によって、Git上での差分として確定するイメージになります。その確定した差分はまだ自分のPCにある状態です。そこで次の操作が必要になります。pushローカルリポジトリ上の差分をリモートリポジトリに反映させるオプションです。pushすることであなたの変更をほかの皆さんが取り込むことができるようになり、その修正を利用できるようになります。Gitをより活用するならサービスを使おう世の中にはGitの機能をもつ環境をインターネット上に用意してくれていて、Web画面を操作しながらプログラムや設定ファイルをリポジトリに格納したり取り出したりできるサービスがあります。有名なのはGithubです。Githubでできることさっきのコマンドでお気づきの方もいらっしゃるかもしれませんが、実際Gitの機能だけだと、誰でもcommitしてpushしてしまえるように思いませんでしたか?そうなると使っているみんなが困ってしまうので、Githubではいくつかとても有効な機能を加えてサービス公開しています。Githubがサービスとして提供している機能のうち、主なものは以下になります。「イシュー」と呼ばれるバグ報告のための掲示板のような機能ユーザーからのpushなどの操作タイミングで別の機能を呼び出す「webhook」機能webhookとは?webhookはGithubのリポジトリに対して実行された操作タイミングで、別の機能を呼び出せるようにするものです。最初は何のことやら?と思うかもしれませんが、ここでは主にどういう用途で使われているのか?という部分だけ紹介します。プログラムコードをpushしたときに、テストを自動実行するプログラムコードの修正がpushされたら、アプリケーションをコンパイルしてリリース用のパッケージを自動的につくる上のような「プログラムに修正が入ったら実施すること」をあらかじめ設定しておき、Git操作があったタイミングで自動的に処理させるための機能です。呼び出す機能についてはGithubではなく外部のサービスも呼び出すことができるので、テストの実行と結果のレポートを生成してくれるサービスなどと組み合わせて利用されます。プログラマー初心者だからこそサービスに参加しよう!Githubにはさまざまなオープンソースが登録されており、プログラムだけでなく、操作マニュアルやソフトウェアそのものの説明書も格納され、差分管理されています。中にはマニュアルを多言語化して持っているリポジトリもあり、翻訳してくれるユーザーを募集していたりもします。スゴイプログラムは書けなくても、こういった部分から貢献できるかもしれません。日本語のここがおかしいとイシューを切って、自分で修正してプルリクエストを出す。それがマージされて取り込まれたら、あなたも立派な貢献者(コントリビューター)になれるのです。Githubではほかのユーザーからは見えないプライベートリポジトリ機能もあり、ちょっと前に無料化されたので、思う存分pushやcommitの練習もできます。サービス登録していろいろ練習してみてください。習うより慣れろ、です。まとめプログラミングを勉強したい、将来仕事としてプログラミングをしたい、と思ったときにGitを扱うことは避けて通れなくなってきていると思います。操作をすべてマスターするなんて、筆者もできてないので、難しいツールであることもよくわかります。チームなどで開発をしてみると、助けられた!という経験も数多くあり、これだけ普及している理由も納得がいきますし、もはや無しでの開発なんて怖くてできないレベルかもしれません。ご紹介されていただいた「こっそり練習できる環境」もフル活用して、Git慣れしたプログラマーあ、コードはGitに入っているんですね。見ておきます・・・あれ、ここ変だな。使いこなせるようになるキッカケとなれば幸いです。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。関連記事は見つかりませんでした。編集部員(プログラマー)現役プログラマーの編集部員です。このブログは複数の編集部員によって運営されています。おすすめの勉強法は?未経験からプログラマーに就職2020.2.18『今』プログラミング学習をおすすめする3つの理由JavaScript2020.2.11【初心者向け】TypeScriptって何?JavaScriptと何が違うの?職業訓練校2020.2.9未経験者が職業訓練でJAVAを学ぶプロフィールごま塩シンジ(編集長)30代後半、未経験からweb系企業に就職しました。底辺高校→Fランク大学→営業→PHPエンジニア→フリーランス※当サイトはリンクフリーです※当サイトは複数のプログラマーによって運営されています※広告募集中です。ご希望の方はお問い合わせからご連絡ください。最近のコメント初心者におすすめのプログラミング言語は何か。初心者におすすめのプログラミング言語は何か。初心者におすすめのプログラミング言語は何か。