概要
ある時突然「Gitにコードがあるから」とか「Gitで管理しておいて」とか言われてしまい、困っている人が結構多いようなので、自分の頭の整理も兼ねて解説記事を書きました。GitにはCloneやCommit等の複数のコマンドがありますが、立場により理解しなければいけないコマンドの量は違いますので、その観点で、徐々にレベルを上げていけるように整理していきます。
レベルの定義
まずレベルとしては①ユーザ、②個人開発、③複数人開発、の3レベルを定義します。それぞれの説明は以下の通りです。3を要求されてしまった人も、1, 2と順番に見ていただくと理解しやすいと思います。
- (ユーザ)データを取ってきて使いたいだけの人
- (個人開発)自分のスクリプトを管理・公開したい人
- (複数人開発)複数人で同時に開発を進めていきたい人
Git環境について
本記事ではGitだけでなく、GUI環境としてTortoiseGitが導入されていることを前提とします。
ダウンロードサイトは下記です。
Git本体:https://git-scm.com/
TortoiseGit:https://tortoisegit.org/
ダウンロード後、ファイルを起動して適当に次へをクリックすればインストールされます。なお、TortoiseGitは日本語化すると用語の表現が変わってしまうので、英語に極端なアレルギーがなければ英語のまま使うことを推奨します。
レベル1:ユーザ利用目的の方が使うコマンド
ユーザ利用目的の方はClone(最初の取得)とPull(最新バージョンに更新)の2つのコマンドが使えれば最低限OKです。過去バージョンに戻す等の少し高度な方法は初級者向け記事で取り扱おうと思います。
Cloneを使ってリポジトリをダウンロード
Gitで管理されているバージョンの集合を「リポジトリ」と呼びます。このリポジトリを自分のローカル環境にコピーする作業がCloneです。実施方法は、Cloneしたいフォルダの置き場所を決め、①そのフォルダの上で右クリックしてGit Cloneを選び、②URLにリポジトリのアドレス(例えば、https://github.com/Rosyuku/RosyukuScript.git)を指定し、③OKを押す、だけです。
特にエラーがなければリポジトリがフォルダ内にコピーされ(隠し表示で.gitとなっているフォルダ)、自動的に最新バージョンのファイルが置かれているはずです。
Pullを使って最新版にアップデート
Cloneを使って取得したファイルはその時点での最新版ではありますが、時間が経過するとより新しいバージョンがリリースされている可能性があります。この時、今現在の最新版を入手するために使うコマンドがPullになります。使い方は同様に、①リポジトリが置かれているフォルダ上で右クリックし、②TortoiseGitをクリックしPullを選び、③開かれたダイアログでOKを押す、です。うまくいかなければ一度消して、Cloneをやり直すのもありでしょう。
レベル2:個人開発目的の方が使うコマンド
同様に個人開発目的の方はCommit、Pushの2つのコマンドが使えれば最低限OKです。
空のリポジトリを作る
まずは空のリポジトリを作りましょう。この方法は、①リポジトリを作りたいフォルダで右クリックしてGit Create repository hereを選び、②OKボタンを押す、です。Make it Bareにはチェックを入れないようにしましょう。チェックを入れると後述するPush先のフォルダとして機能するようになり、ファイルの取り扱いはできなくなります。
正しく入力できていれば「.git」という隠しフォルダができているはずです。
リポジトリの内容を変更したらCommitで保存
Commitはリポジトリに新しい状態(直接的にコミットと呼びます)を追加するときに使います。先ほど作った空のリポジトリに適当なファイルを加えてCommitしてみましょう。Commitは①リポジトリの上で右クリックしGit Commitを選択、②コメントを入力し、コミットするファイルにチェックを入れる、③OKボタンを押す、です。
うまくいったかどうかの確認は、同様に①リポジトリの上で右クリックしTortoiseGitを選択、②Show logを選択、で表示されるログを見ることを確認できます。このようにファイルを追加・変更するたびにコミットをしていくと、その過程が全て残るためバージョンを管理することができるということになります。
Pushでサーバに反映
Commitにより追加されるのは自分のローカル環境のリポジトリだけなので、その状況を人に報告しようと思ったらPush作業が必要になります。(ローカルリポジトリをZip圧縮してメール送付、な~んてことからは卒業しましょう。)Push手順は①リポジトリが置かれているフォルダ上で右クリックし、②TortoiseGitをクリックしPushを選び、③開かれたダイアログ内にあるArbitary URLにチェックを付けアドレスを入力する、③OKを押す、です。
Pushはサーバ環境を書き換える作業なので慎重に実施する必要があります。基本的には認証等をしないと書き込めないように作られます。
レベル3:複数人開発目的の方が使うコマンド
複数人開発目的の方はこれまでに挙げたClone、Pull、Commit、Pushの4つのコマンドを最低限使う必要があります。基本的な流れは以下の繰り返しです。
- Clone又はPullで自分のローカルリポジトリを最新状態にする
- 自分の変更をローカルリポジトリにCommitし、Pushでサーバのリポジトリを最新状態にする
各項目については今までで説明した通りです。なお、PullやPushの際にエラーが発生する場合があり、これはどのような時に起きるかというと、ソースコードの同じ部分を同時に複数の人が編集してしまったりした場合です。このときはMerge等の作業が別途必要になりますが、その内容は初級者編で取り扱いたいと思います。
まとめ
簡単ではありますが、Git活用を要求されてしまった人向けの悩み解決のために、TortoiseGitを使った方法についてまとめました。便利なツールだと思うので、少しでも理解の広まりに役立てば幸いです。
突然のコメントすいません。
私は、現在工場の社内SEとしてラインで使用するプログラムの
開発に従事しています。
そこで、最近になりプログラムのバージョン管理を行うことに
なり『TortoiseGit』を使用することになりました。
なんとか、インストールに成功してテスト的に私一人が使用して
使い方がわかってきたら他の開発者へ展開するような感じで動いていますが
すでに3か月ほどやっていますが未だに理解できずネットの中をさ迷い歩いて
ここにたどり着きました。
いきなりの質問で不躾だとは思ったのですが、質問させてください。
この『TortoiseGit』というソフトでは、フォルダごとに個別に管理することは
出来ないんでしょうか?
というのも、当方の環境では複数のラインがありそのラインごと製造製品ごと
に使用しているプログラムが違います。それを管理しようと思って
¥開発フォルダ
¥ライン1
¥ライン1、製造製品1のプログラム
¥ライン1、製造製品2のプログラム
¥ライン2
:
:
というようなディレクトリ構造にしました。
この状態で、『¥ライン1、製造製品1のプログラム』でブランチを
作り切り替えると『¥ライン1』全体が切り替わってしまって
『¥ライン1、製造製品1のプログラム』だけで別ブランチを作ることが
出来ません。
これでは非効率なので何とか『¥ライン1、製造製品1のプログラム』だけで
ブランチを作って、切り替えをした時も『¥ライン1、製造製品1のプログラム』
のみが別ブランチに移るようにしたいのですが方法はありますか?
突然にご質問で大変不躾ではありますがご回答いただけると幸いです。
当方の環境としては、OSはWinXP、『TortoiseGit』のバージョンは
『TortoiseGit-1.8.16.0-32bit.msi』を使っています。
ラインで使用しているプログラムがWinXP下でしか動作しないのでこのような環境に
なっています。
ですが、一応NASサーバを入れてそこにプログラムのバックアップを取るように
環境を作りました。
長文、乱雑な質問になってしまいましたがご回答何卒よろしくお願いします。
猪瀬さま
コメントくださりありがとうございます。(確認遅れ申し訳ございません)
ご指摘の件ですが、ブランチは主に作っているプログラムの派生を残しておきたい場合等に使う機能ですので、今の内容(フォルダごとに個別に管理したい)には適さず、リポジトリ自体をフォルダごとに複数作るのが一般的かと思います。また、リポジトリ自体の関連性(ラインで分ける、等)は、GitHub等のWebサイト上でグループを作り、その下に製造製品1のリポジトリ、製品2のリポジトリ、というように管理するのが良いのではないでしょうか。