困っていたこと
過去にSubversionを使用していたが、
Gitの意味がよくわからなかった。
しかし、思想がつかめれば理解するのは一瞬だった。そしてGitの仕組みに感動。興味さえ湧けば、後は適宜調べるだけ。
このキジはSVNがなんとなくわかる人向けのGitの初歩。
まずは図で理解
分散管理です。
Gitは他のソース管理(通常は集中管理)と違い、分散管理を採用しています。それで大事なことは「サーバーが壊れても、ローカルに全履歴がコピーされている。」ということ。
画像をお借りした元の場所:git 分散バージョン管理システム
つまり・・・
- サーバーが逝っても、誰かのPCが生きてりゃOK!
- 誰かが自分のPCとサーバーのソース消しても、他に誰か居ればOK!
- ネットワークが使えなくても、自分のPC上でコミットできる!
コマンドを理解するための対訳表
色々コマンドがあるが、初歩に必要なコマンドでさえ、ピンとこなかった。
でも、人間語に翻訳してみたら、理解できた
リポジトリを作成する
$ git init
ギット exeに命令 カレントディレクトリをgitのリポジトリにするよ!
- このリポジトリは、.gitフォルダが作成され、親ディレクトリごと移動しても、特に問題ない。
- このディレクトリがいわゆるプロジェクトフォルダとなる。
ファイルを管理対象にする
$ git add [filename]
ギット exeに命令 追加するよ ファイル名はこれ!
- ディレクトリ内部にファイルが作成されただけだと、ただそこにあるだけで対象とならない。
- そのファイルをGitの管理対象にする。
- 管理対象にすると、変更を検知する。
- 管理対象にすることを、インデックスに追加すると云ふのかと思ったら、違うらしい
コミットする。
git commit -m “[comment]”
ギット exeに命令 確定するよ 変更内容はこう!
- 管理対象のファイルに行われた変更を確定し、自分のローカルリポジトリ内にスナップショットを保存する。
- なるべく細かくコミットすると、後で戻りやすいし、変更が理解(思い出し)しやすい。
リモートリポジトリを追加する。
> git remote add origin hogehoge.com/git/hogehoge.git
ギット exeに命令 リモート を追加 originと呼ぶ 場所はここだよ
- 自分のローカルリポジトリを変更したり、コミットしただけでは、特にリモートリポジトリには影響がない。
- 通常はリモートリポジトリにoriginと言う名前を付ける。(慣習)
覚えておく用語
リポジトリ
repository = 倉庫
- リモート(通常ベア)とローカル(通常ノンベア)で2種類ある。
ワークツリー
work tree = 作業する木
- ソースコードなどの実際に作業するファイルが置いてある場所
ブランチについて
branch = 枝
- 枝分かれさせる場合はブランチ(=枝)を作り、任意の名前を決められる。
- 本流のブランチ名はmasterと言う名前。(デフォルト)
プッシュ
push = 押す、押し込む、押し付ける
- ローカルの変更を、リモートに反映(押しつける)
フェッチ
fetch = 取ってくる、呼んでくる、引き出す
- リモートの変更を、ローカルに取得(引き出す)
マージ
merge = 併合する、溶け合わせる、合併する
- 異なるブランチを合体する。
クローン
clone = クローン、分枝系
- リモートリポジトリをコピってローカルリポジトリを作る
- OSSをもらってきたり、プロジェクトに途中から参加する場合は、最初にやる