2014/03/28

git 考え方

主に、コマンドだけではなく、考え方を見る.
[なぜgitが必要になるのか?]を理解する。


・git init --bare <directory>
-->共有リポジトリを作成する
ノンベアリポジトリに対してブランチのプッシュを行うと変更の誤書き込みを起こす可能性があるため、中央リポジトリは必ずベアリポジトリとして作成しなければなりません。
--bare の指定は、そのリポジトリを開発環境としてではなく保存用領域として認識させる方法であると考えてください。
即ち、実質的にすべての Git ワークフローにおいて、中央リポジトリはベアであり、開発者のローカルリポジトリはノンベアです。

・git clone repo directory
作業コピーは自分自身の履歴を持ち、自分自身でファイルを管理し、元のリポジトリとは完全に独立した環境を提供します。
利用者の便宜のため、クローンを行うと、元のリポジトリをポイントする origin という名称のリモート接続を自動的に作成します。
これにより、極めて簡単に中央リポジトリとの通信を行うことができます。
directoryーーー>ルートが変更できる

・柔軟であり、いろんなパターンで運用できそう
=>そのプロジェクトに対してアクティブにコードを提供している開発者はどれくらいいるのか、そして彼らはどれくらいの頻度で提供しているのか。
よくあるのは、数名の開発者が一日数回のコミットを行うというものです。休眠状態のプロジェクトなら、もう少し頻度が低くなるでしょう。
大企業や大規模なプロジェクトでは、開発者の数が数千人になることもあります。数十から下手したら百を超えるようなパッチが毎日やってきます。
開発者の数が増えれば増えるほど、あなたのコードをきちんと適用したり他のコードをマージしたりするのが難しくなります。
あなたが手元で作業をしている間に他の変更が入って、手元で変更した内容が無意味になってしまったりあるいは他の変更を壊してしまう羽目になったり。
そのせいで、手元の変更を適用してもらうための待ち時間が発生したり。
手元のコードを常に最新の状態にし、正しいパッチを作るにはどうしたらいいのでしょうか。

===>要は、人数が多くなり、間違ったコミットする場合、影響範囲は大きいので。。。。