「今日は、最も人気のある 2 つのバージョン管理プログラム、SVN と Git について説明します。」

「SVN は、前回のレッスンで説明した方法とほぼ同じように機能します。Git はもう少し複雑なので、さらに詳しく説明する予定です。」

「SVN と Git のドキュメントへのリンクを教えていただけますか?」

「もちろん、ちょっと待ってください。」

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githhowto.com  (これはまさに傑作です)

「それで、Git。」

「SVN よりも少し複雑です。Git では、各ユーザーはサーバー リポジトリに加えて、独自のローカル リポジトリを持ちます。

「それで、どこにコミットしますか?」

「ユーザーは常にローカル リポジトリにコミットします。」

「では、サーバー リポジトリはどうなるのでしょうか?」

「ローカル リポジトリとサーバー リポジトリを同期するには、特別なプル コマンドとプッシュ コマンドがあります

「これには理由があります。場合によっては、プログラマが自分自身で多くの作業を行う必要があり、共有リポジトリに追加するまでに数百回のコミットが必要になる場合があります。」

「SVN でこれを行うには、別のブランチを開始して、それをトランクとマージする必要があります。」

「Git を使用すると、常にローカル リポジトリにコミットし、完了したらすべての変更をバッチとしてサーバー上の中央リポジトリに送信するだけです。」

「少しのコードを書いているだけの場合、この方法は少し過剰に見えるかもしれません。しかし、タスクが数週間にまたがるほど大規模な場合は、コミットせずにずっと書いているわけにはいかないことがわかります。」

「なぜ 2 週間だけ作業してから、変更を一度サーバーにコミットできないのですか?」

「そうですね、バージョン管理プログラムは多くの便利さを提供します。」

「毎日コミットし、10 日目に、過去 2 日間に行った変更が計画どおりに機能しないことに気づきました。そして、8 日目に持っていたコードに戻ってタスクに取り組みたいとします。」違うよ。」

「過去 2 日間にローカル リポジトリに加えられた変更をロールバックするだけで、目的の状態に戻ります。これはロールバック操作と呼ばれます。」

「それができるって言うの?」

「はい。さらに、コミット履歴が保存されるため、いつ、なぜコミットされたのか、誰によってコミットされたのか、関連する機能やバグ、この作業の一環としてどの 10 個のファイルが同時に変更されたのかを知ることができます。」

「誰かのバグ修正が他の人のコードを壊したとします。コードをロールバック ( rollback ) するだけで、変更がまったく起こらなかったかのように続行できます。」

「なるほど、それはすばらしいですね。納得しました。これがどのように機能するかを示す例をいくつか見せてもらえますか?」

"もちろん。"

「中央リポジトリのクローンをローカル コンピュータに作成する方法は次のとおりです。」

コミットとブランチ - 1

「したがって、チェックアウト操作は必要なくなりました。」

「はい。プッシュ操作の例は次のとおりです。」

コミットとブランチ - 2

「そしてプル操作:

コミットとブランチ - 3

「ああ。それは多かれ少なかれ理にかなっています。」

「ところで、GitHub という素晴らしいサービスがあります。」

「プログラマーは誰でもそこに登録して、独自の Git リポジトリを作成できます。もっと詳しく知ることをお勧めします。」

「役立つリンクをいくつか紹介します。」

https://githhowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

「かなりの数の Git クライアントがあることに注意してください。」

「まず、  テキスト コマンドを入力できるGitBashがあります。」

「次に、 TortoiseGitがあります。これは、Windows エクスプローラーに組み込まれている優れたプログラムです。これを使用すると、Git リポジトリ内のファイルをエクスプローラーで直接操作できます。」

「IntelliJ IDEA は Git をサポートしており、環境内から直接数回クリックするだけであらゆる種類の複雑なコマンドを実行できます。」

「それで、どれを学べばいいの?」

すべてを知ることをお勧めします。

「面接に合格し、職場に到着します。Git へのリンク、ログイン名、パスワードを取得します。それだけです。その後、独り立ちします。」

「『自分で』ってどういう意味ですか?」

「つまり、Git を自分で設定し、リポジトリのコピーを自分でプルするということです…」

「そして、プロジェクトをビルドして実行してみる必要があります。」

「ビルド手順は、プロジェクトのドキュメントとともに Git リポジトリにある可能性が高いです。」

「夕方、あなたのチームリーダーがあなたのところにやって来て、こう言うでしょう。  「それで、これまでに何を見つけましたか?」

「そしてあなたはこう言うでしょう、『ここで Git をセットアップしようとしているのですが、まだ成功していません。「私を解雇するつもりはないでしょう?」

「または、まだ正午のうちに、チーム リーダーのところに行って、  「Git をインストールし、プロジェクトをプルし、ドキュメントを参照しましたが、ファイルが数百個あり、まだすべてを整理できていません。」と言うことができます。現在のビルド手順は何ですか?'» "

「違いを感じられますか?」

「はい。2 番目の場合、私はスーパー ロックスター プログラマーですが、1 番目の場合、私は Git からプロジェクトを取得する方法さえ知らないロボバカです。言い換えれば、私は失敗しました。」 「私がプログラミングを始める前に、それができました。その後は、コードを書くことさえ許可されなかったと思います。」

「ほら、あなたは自分の質問に自分で答えました。だから勉強して理解してください。誰もあなたの代わりにやってくれません。」

「私を助けてくれないの?」

「私はもう手伝いました。忘れた人のためにここで Java を教えています。それ以外のことはすべてあなた自身で行ってください。それとも、あなたの頭は酒を飲むことだけを考えているのですか?」

「分かった。ありがとう、ビラーボ!」