#GitとGitHub用語集(初心者用)
##Gitとは
Gitとは、プログラムソースなどの変更履歴を管理する分散型のバージョン管理システムのこと。
プログラムの編集などができ、変更履歴も管理することが出来る。Gitがあることにより、昔の状態をみたり、復元したりが簡単になる。
##GitHubとは
GitHubとはGitを利用した、開発者を支援するWebサービス。 GitとGitHubの違いに私も最初は混乱しましたが、Gitはツールの名前で、GitHubはGitを使ったWebサービスの名前。
##リポジトリ(repository)
いわゆる貯蔵庫
のこと。システムの開発プロジェクトに関連するデータの一元的な貯蔵庫を意味する。一種のデータベースで、各工程の様々な情報を管理することが可能。
##ローカルリポジトリ(local repository)
Gitのリポジトリはローカルリポジトリとリモートリポジトリに分けられる。ローカルリポジトリは自分のマシン内に作られ、ワーキングツリー
が所属するリポジトリのこと。※ワーキングツリーに関しては後ほど説明あり
##リモートリポジトリ(remote repository)
自身の手元側にあるローカルリポジトリに対して、外部にあるリポジトリのことを指す。サーバなどネットワーク上にあるリポジトリもそれに当たる。公開、共有がスムーズなので複数人での開発に使われたり、個人開発でもネットワーク状にデータを保存したい時、共有したい時に使う。
##フォーク(fork)
forkはGitHubが提供する機能の一つ。fork は他の開発者のリポジトリを github上でclone(クローン)する。また、forkは、fork元への貢献を前提とする。
開発を援助する前提の上で使う必要がある。
##クローン(clone)
クローンとはリモートリポジトリを手元のマシンの指定した場所に複製する。
##イニット(init)
一言でいうとリポジトリを新規作成、空のレポジトリが作成される。また、すでに存在するリポジトリの初期化をしたい場合にも使われる。
##ワーキングツリー(working tree)
Gitの管理下に置かれた、自分が実際に作業をしているディレクトリのこと。作業ディレクトリ、ワークツリー、様々な呼ばれ方をする。
##インデックス(index)
インデックスとは、コミットする前に更新内容の一時的な保存をする場所のこと
で、ステージとも呼ぶ。
##アド(add)
ワーキングツリーにあるファイルの更新内容を、インデックスに反映するためのコマンド。コミットする対象を登録する作業。
##コミット(commit)
追加・変更したファイルをリポジトリに記録。
ゲームのセーブみたいな感じ。
##コミットメッセージ(commit message)
コミットした内容を記述する。変更内容の要約、変更した理由(内容、詳細)などを記述する。
##ヘッド(HEAD)
今いるブランチの最新のコミットの代名詞を指す。デフォルトではmasterの先頭を表し、HEADが移動することで、使用するブランチが変更される。
##プル(pull)
リモートリポジトリのコミットをローカルリポジトリに送り込む。データのダウンロードのようなもの。
##ブランチ(branch)
プロジェクトを分岐させることにより、プロジェクト本体に影響を与えずに開発を行える機能。ブランチにより、不具合が発生した場合も対応しやすく、1つのプロジェクトを同時進行で作業が可能。また、ブランチには下の画像のように複数種類がある。
##マスターブランチ(master branch)
プロジェクトの本流のブランチ
で、リポジトリに最初のコミットを行うと、masterという名前のブランチを作成される。その後のコミットはブランチを切り替えるまでmasterブランチに追加されていく。
##マージ(merge)
加えた修正を統合する作業をする。
変更を加えたブランチを元のブランチにマージして修正する。
##リセット(reset)
最新のコミットを取り消す
また、ステージされたファイルを取り消す。
##リバート(revart)
取り消したいコミットに対して、それを打ち消すようなコミットを新しく作成する。
ただ、既存コミットの履歴が消えるわけではなく、コミットログには残っている。
##リベース(rebase)
指定したコミットをブランチを変えて作り直すことが可能。また、コミットをひとまとめにしたりして、ログを綺麗にするコマンド。
##スタッシュ(stash)
コミットせずに変更を退避したいときに使用。あるブランチで作業中だけど、いますぐやりたいことができた時、作業するブランチを間違えてしまった時にコミットしていない変更を一時退避することが出来る。
##コンフリクト(conflict)
Gitの場合同じファイルの同じ場所への変更が同時にある時に生じるエラーのこと
を指す。
##フェッチ(fetch)
リモートリポジトリの最新の履歴の取得を行う。取得を行うのみなので、マージが自動で行われないのがpullとの違い。
##チェックアウト(checkout)
今作業しているブランチから出て、他の作業ブランチで作業をしたい場合
に使用するコマンド。
##プッシュ(push)
ローカルリポジトリの内容をリモートリポジトリに反映させる。
##プルリクエスト(pull request)
開発者のローカルリポジトリでの変更を他の開発者に通知するGitHubの機能。会社やチームでコードレビューする時に使用。