支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


1.Gitとは

Gitとは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムです。
分散型バージョン管理システムとは、独立したリポジトリを用意して、他のリポジトリと同期することができます。分散型は複数のリポジトリを持つことができます。 このため、中央集中型ができないことを分散型では可能になり、リポジトリが複数存在することから「分散型」と呼ばれます。
ついでになりますが、中央集中型バージョン管理システムの概要も以下に追記します。 複数の作業者が同じファイル群を扱う場合、1つのサーバで中央集中型システムは稼働し、誰でもそのサーバからファイルのコピーを取得して作業ができます。 変更した内容はサーバにある内容に反映(コミット)できます。 また、他の利用者が更新操作を行ったことにより、サーバ内のファイルが変更されると、その内容も自分の環境に同期できます。ここで、サーバ内にあるファイル群のことをリポジトリと呼びます。 サーバ側では全ての変更過程を記録しているので、この記録をもとにどんな変更でも前の状態に戻したり、変更した時に何が行われたかをわかることができます。 変更をサーバに保存するとリビジョン番号というものが生成・増加されます。リビジョン番号は、書籍で例えると、改訂版の番号(第1版、第2.3版等)にあたるようなもので、変更を識別する一意のシンボルになります。 中央集中型のデメリットとして、オフラインの状態では最新のファイルをリポジトリに取得・反映することができません。

Gitは、Linuxのソースコード管理に用いるために開発され、それ以降ほかの多くのプロジェクトで採用されています。 分散型であるGitは、リポジトリを複数もつことができます。 たとえば、大人数でシステム開発を行う場合、何人かずつで1つのリポジトリを使用してプログラムを作成し、定期的に全体のリポジトリに反映する、というようなつかいかたをすることができます。 バージョン管理システムとしてはGit以外にもCVS、SVNなどが存在しています。

2.branchの切り替え

branchとは、開発の本流から分岐し、本流の開発を邪魔することなく作業を続ける機能のことです。 Gitのbranch機能は圧倒的に軽量で、branchの作成はほぼ一瞬で完了し、branchの切り替えも高速に行えます。 その他大勢のVCSとは異なり、Gitでは頻繁にbranch作成とマージを繰り返すワークフローを推奨しています。 一日に複数のbranchを切ることさえ珍しくありません。 Gitのデフォルトのbranch名はmasterです。
branchを新規に作成するには、以下のコマンドを実施します。
git branch [ブランチ名]
branchを切り替えるには、以下のコマンドを実施します。
git checkout [ブランチ名]
この状態で、ファイルを変更してコミットすると[ブランチ名]に履歴が記録されます。 また、branchが既に作成されている場合は上に記載した方法で構いませんが、作業用branchを作成して切り替える場合は以下を実施します。
git checkout -b [ブランチ名]
上の内容は新規にブランチを作成し切り替えも実施することになります。
また、変更したbranchの内容をmasterにマージする場合は以下を実施してください。
git merge [ブランチ名]
作成したbranchが不要になった場合に、削除するには以下を実施してください。
git branch -d [ブランチ名]
branchを作成する際にうっかりbranch名を間違えてしまい、branch名を変更したい場合には以下を実施してください。
git branch -m [現在のブランチ名] [新しいブランチ名]
現在の作業中のbranchを変更する場合は、新しいbranch名を指定するように以下を実施してください。
git branch -m [新しいブランチ名]

gitのbranchを切り替えようとしてエラーが出る場合、いくつかの原因があります。 例えば、変更ファイルがあるけどコミットしていない状態で切り替えようとした場合には、一時退避もしくは作業の取り消しを実施します。 切り替えを実施するために現在行っている作業を、一時退避させるには以下を実施してください。
git stash
この他stashには以下も存在しています。
git stash pop // 一時退避を元にもどす
git stash list // 一時退避の確認
git stash clear // 一時退避の消去
切り替えを実施するために現在行っている作業を、取り消して構わない場合には以下を実施してください。
・git statusでステータスを確認し、Changes not staged for commit:というメッセージで表示されているファイルは、以下のコマンドでコミットを取り消すことができます。
git checkout [対象ファイル] // 特定のファイル
git checkout . // すべて
・Untracked files:というメッセージで表示されているファイルは、以下のコマンドで取り消せます。
git clean -f
上を実行することでbranchの切り替えが出来るようになります。

3.最後に

Gitのbranchを切り替える際に差分が多すぎると、切り替えられなくて苦労しましたがコマンドを理解して正しく使用することで対応が可能になります。