非エンジニア向けGitの使い方

エンジニアでないチームメンバーも、いくつかのドキュメントは直接触ってもらった方が早い場合があります。そこで、チームメンバー全員がGitの基本を使えるようになるべく、勉強会をしました。その記録兼テキストです。

はじめに

まず始めに知ってほしいのは、Gitはただのツールであるということです。Gitを使ってやることはプログラミングではなくて、ドキュメントをうまいことまとめる事務作業にすぎないということです。
だから、エクセルを使うのとほとんど同じ。便利なツールの使い方を覚える、という姿勢で臨んでほしいと思います。(コマンドライン恐怖症な方には、Gitクライアントという便利なソフトもあるので、そういうのも利用すると良いと思います)

2人でプログラミングをすると何に困る?

2人が別々にプログラムを書き換えてしまうと、本番の環境にアップロードするときに、衝突してしまう。どこを書き換えたか事細かにチェックしていかないと、2人の進捗をひとつにまとめることはできない。

でも大丈夫。そう、Gitならね。

Gitは二人が別々に編集したプログラムを、うまいことマージしてくれる凄いやつ。
編集した差分を取り出して、機械的にまとめてくれる。たまにGitが判断しかねる衝突があって、そこはGitが「コンフリクトしているよ」と教えてくれるので、人力で修正する。

一人でプログラミングしていても困ることがある

プログラムを調子よく書いていても、ある時突然動かなくなる時もある。せっかく作った機能が正常に動かない時もある。つまり、過去に戻りたい時がある。

でも大丈夫。そう、Gitならね。

Gitは過去に設定したチェックポイントに自在に戻ることができる。
チェックポイントを作ることをコミットという。この機能があるから、実験的にソースコードを書き換えたりしても、大丈夫。挑戦的で刺激的なプログラミングができる。

ソースコードを2人に分岐するだけでなく、自分1人でも分岐できる

Git はソースコードを仮想的に分岐させることができる。パターンA、パターンBというブランチを作ってそれぞれに書き換えることができる。
2人のプログラマが別々に書いたものをマージできるのと同様に、自分1人で書いているソースコードも複数パターンに分岐させて後でマージしたりもできる。

Gitのコマンド概要

Gitの説明は終了。実際に使ってみます。いつも、gitというコマンドの後に、次のようなサブコマンドをつけて使います。(とりあえず7個)

  1. clone
  2. branch
  3. checkout
  4. add
  5. commit
  6. push
  7. pull

git clone: サーバのソースコードを丸ごと持ってくる

最初は、自分のPCにソースコードが入っていないので、サーバから丸ごと持ってくる必要があります。(ちょっと時間かかるかも。)

# git-clone - Clone a repository into a new directory
git clone ssh://user@example.com/var/repos/example.git

git branch: 開発用ブランチを用意する

ブランチは基本でmasterが用意されていますが、developブランチを用意してみます。このあたりのルールはチームで定めれば良いと思います。とりあえずプログラムに詳しくない人が間違った書き換えをしても大きな問題にならないように、ブランチを作ってそこだけ触るようにしてもらうと良いのかもしれません。

# git-branch - List, create, or delete branches
git branch develop

git checkout: ブランチを切り替える

checkoutでブランチを切り替えます。中身の書き換えられた二つのブランチを作ってcheckoutで切り替えると、置かれたファイルがガチャガチャと書き換わるのが分かります。これをやるとgitの凄さを感じます。

# git-checkout - Checkout a branch or paths to the working tree
git checkout develop

書き換える

テキストエディタなり、Eclipseなりを利用して自由に書き換えます。ローカルのWebサーバなどを使用してプレビューしてもよいです。

git add: ファイルを追加する

これはコミットのための準備です。追加されたり変更されたファイルは、そのままでは次のコミットの管理下に入らないので、明示的に追加してやります。(めんどくさいので、全部addしちゃいます)

# git-add - Add file contents to the index
git add .

git commit: コミットする

チェックポイントを作る作業です。サーバにアップロードしたりダウンロードしたりする時にも事前にチェックポイントを作る必要があります。
コミットするときはコメントを添えます。何を変更したかが分かれば良いということにしておきます。

# git-commit - Record changes to the repository
git commit -am 'comment'

git push: サーバにアップロードする

こうして編集してコミットしたものをサーバにアップロードすることで作業は完了します。

# git-push - Update remote refs along with associated objects
git push origin develop

git pull: コンフリクトは避けたい

pushすると編集したデータをアップロードできるんだけど、サーバの内容が他の誰かによって既に書き換えられていた場合は、それが拒否されます。エラーが出ます。
そこで、まずは、一度サーバの最新状態をダウンロードして自分のPC上でマージします。

# git-pull - Fetch from and merge with another repository or a local branch
git pull origin develop

もしもコンフリクトが発生したらちゃんと解消します。そして、改めてpushします。(もし運悪く自分がpullしてからpushする間に他の誰かがpushしていると、また拒否されますが、めげずに再びpullします。)

作業の流れ

一番最初にやること

サーバから丸ごとコピーして、必要であれば開発用ブランチを作ってそこで作業するようにします。

git clone ssh://user@example.com/var/repos/example.git
git branch develop
git checkout develop

何か変更作業をする時にすること

サーバとの同期を取ってから作業開始します。作業が完了したら、コミットして、再びサーバとの同期を取ってからpushします。

git pull origin develop
# 作業
git add .
git commit -am 'comment'
git pull origin develop
git push origin develop

コメント

  1. […] 「非エンジニア向けGitの使い方」などと簡単にまとめたものの、実際に使うのはまた少し難しいようなので、1歩ずつ説明していきます。 […]

  2. […] My365のチームメンバーには「エンジニアも非エンジニアも全員Git使えるようになろうぜ」と、Gitを導入して使い方を覚えてもらったまでは良かったんですが。Gitでコミットする際にviが立 […]

タイトルとURLをコピーしました