hermemo-エルメモ-

Gitを知らない人ととりあえずのGitを使って活動する

time 2018/09/01

Gitを知らない人ととりあえずのGitを使って活動する

sponsored link

目次

はじめに

どうもSunaipu です。最近部活でゲームジャムを行いました。ゲームジャムの参加者にはプログラミングがあまり得意でない人からガンガンコードを書いてる人もいました。またgit を使ったことがある人もいれば全く知らない人もいました。
しかし使わないと作業が捗らないのでとりあえずのGit の使い方を教えて活動しました。その時のとりあえずのGit について紹介します。

Gitで出来ること

最低限の理解として二つ紹介します。

バージョン管理

開発のバージョン管理を行うことができます。ファイルをコピペしてバージョン管理する必要がなくなります。しかも差分(変更された部分)のみの保存になるので、ファイルの容量は全部バックアップするより軽量になります 。
もちろん古いバージョンに戻すことも出来ますし、古いバージョンの一部のファイルのみ復元することもできます。

共同編集

Git のメインといえば共同編集です。サーバーにファイルを保存して、それをローカルに保存、編集してからサーバーに保存する。この手順によってファイルを共同編集することができます。これによって同時に複数の人が一つのファイルは編集することができます。それに伴って競合が発生しても簡単に解決することができます。

用語理解

最低限必要な用語理解してください。

リポジトリ

フォルダと同義だと思って構いません。

リモートリポジトリ

オンラインに保存されているリポジトリです。リモートリポジトリのファイルを更新し共同開発している人にデータを受け渡しします。

ローカルリポジトリ

個人のパソコン内のリポジトリです。ローカルリポジトリのファイルをいくら編集してもリモートリポジトリに反映しなければ共同開発している人にデータを共有できません。

クローン

リモートリポジトリのデータを全てローカルリポジトリにコピーします。

ブランチ

リポジトリをさらに区切ります。通常リポジトリ内にはリモート・ローカルそれぞれ、複数のブランチが存在します。ローカルにあるブランチがリモートにも存在するとは限りません。逆も然り。
そして、1つのブランチを編集しても他のリポジトリには影響を、及ぼしません。

マージ

ブランチとブランチを合体させます。変更点を更新しますが、競合を起した場合は解決する必要があります。

コミット

報告書の様なものです。変更した内容を簡潔に書きます。それとともに変更したデータも加えます。
コミットに書く文章をコミットメッセージと呼びますが、書き方はプロジェクトによって統一されている場合があります。
コミットは通常ローカルリポジトリのブランチに対して行われます。

プッシュ

コミットをリモートリポジトリに反映させます。これによってローカルで変更し、コミットしたデータが全てリモートリポジトリに反映されます。
プッシュを行うと自動でマージが行われます。それによって競合の解決の必要があるかもしれません。

プル

リモートリポジトリとローカルリポジトリを比べて更新されているデータ(コミット)を取得します。
この時にもマージが行われます。

Bitbucket

Gitサーバーのひとつです。有名な所であればGithubなどがありますが、今回はBitbucketを利用します。理由に関してはいくつかあります。
1. 非公開リポジトリを持つことができる 。
2. Sourcetree(後述) との相性が良い。
特にこだわりがなければBitbucketで問題ありませんが、Githubなどでも問題なく利用できます(多分)。

Sourcetree

さて、Gitを使う時多くの場合コマンドラインで行うと思いますが、素人には厳しい場合があります。それなりの数のコマンドを覚えなくてはなりませんし、コマンドラインの操作にも慣れている必要があります。
それを回避するためにGitクライアントソフトであるSourcetreeを用います。

https://ja.atlassian.com/software/sourcetree

インストールしていることを前提とします。

手順

Bitbucketに登録

まずはBitbucketに登録する必要があります。登録の手順はよくある普通の方法です。メールアドレスがあれば誰でも無料で登録することができます。登録は必須です。

https://bitbucket.org/

リポジトリへのアクセス権

この作業はGitの作業に慣れている人が行ってください。
共同開発を行うためのリポジトリを作成し、全員にアクセス権を付与します。アクセス権の付与が終了するとアクセス権を付与されたユーザーは自動的にリポジトリが追加されます。

BitBucketのホーム画面?上の左のメニューから+を選択肢、新規リポジトリを作成します。

 

新規リポジトリを作成するときにリポジトリ名のみ必須です。それ以外にも以下の様に設定しておくことをおすすめします。

このように画面が切り替わればリポジトリを作成できました。

次に権限の付与です。リポジトリの[設定]から[ユーザーとグループのアクセス権]を選択します。そして、ユーザーを設定します。Bitbucketに登録しているユーザに関して入力すると候補が表示されます。その中から間違えないように選択し、ユーザーに権限を付与します。その時、権限の範囲についても設定しておきましょう。

リポジトリが追加されていることを確認

アクセス権を付与されたユーザーはリポジトリが追加されていることを確認します 。Web上でBitbucketsにアクセスし、画像のようにリポジトリが追加されていることを確認してください。また、リポジトリ名をクリックし、詳細情報に移動しておきます。

Sourcetreeを使ってクローン

ユーザー全員がクローンしましょう。さっきの画面から右上の[クローンの作成]を選択すると、画像のようにいろいろ表示されます。コマンドラインで行う場合はコピペで行えるようにコマンドが自動生成されますが、今回は関係ありません。

右上の通信方法を[SSH]から[HTTPS]に変更しておきましょう。SSHの設定は面倒なので。

そして、[Clone in Sourcetree]をクリックすると、Sourcetreeが開きます。うまく開かない場合はSourcetree側からクローンすることも出来ます。

クローンしようとすると、画像のようにいろいろ設定画面が出ますが、特に問題なければそのまま[クローン]しましょう。

ここまでで設定は終わりです。それではチュートリアルです。

チュートリアル

チュートリアルをグループ全員で行いましょう。目的としては最低限の操作方法を習得することです。最低でも一人Gitにある程度慣れた人が必要です。

Gitに慣れた人を便宜上、先生と呼びます。[先生]と書かれている作業は先生が行い、[生徒]と書かれている作業は全員が行います。

プルの練習

まずはPullの練習。練習というかどんな感じか確認。

[先生] 適当にファイルを作ってコミット、プッシュ

[生徒] プルボタンを押してプル。

先生が作ったファイルがローカルに反映された事を確認。

コミットの練習

次にコミットの練習です。

[生徒] プロジェクトのフォルダ内に自分の名前のテキストファイルを追加します。中身は適当。それをコミット。

今回は例として[Hermemo.com]を作成。

Sourcetreeを開くと、左上のファイルステータスの部分に数字が表示される。これはいくつかのファイルが変更されている状態を示している。ここをクリック。

ファイルステータスの画面で主要な左の二箇所。画像中の赤と青の部分。青に変更されたファイルの一覧が表示される。その中からコミットしたいファイルを選択する。そうすると赤の部分に移動する。赤の部分がコミットするファイルの一覧になる。通常青の一覧が全てコミット等されないとプルが出来ない。全部コミットしてしまうと問題になる場合もあるので慣れてきたら注意してみよう。

[生徒]青の部分(作業ツリー) にある自分の名前のファイルを赤の部分(index) に移動(ステージ)。

きちんとできていれば以下の様になる。

コミットメッセージの入力。

下側にコミットメッセージを入力する部分がある。適当に入力し、コミット。構文などはプロジェクトで統一すると尚良い。

プッシュの練習

最後に自分の名前のファイルをプッシュしてみんなに共有する。

[生徒]プッシュボタンでプッシュする。

※先にプルする必要がある場合がある。その時は先にプルする。

特に何も考えなくて良い。

復習

で、最後に復習しましょう。

[生徒]

  1. 他の人のファイルが追加されていることを確認
  2. 自分の名前のファイルを削除
  3. コミット
  4. プッシュ
  5. プルして、他の人のファイルが削除されていることを確認

最後の復習を個人でできれば全く問題ないだろう。そう信じてる。

最後に

実は他にも細々とした事を教えたり決めたりしました。説明が面倒なので、箇条書きで許してください。

  • コミットメッセージの構文を統一
  • 特に変更していないけど、コミットしないとプル出来ない時用に逃げ場としてのコミット[Dump]を用意。
    • とても良くない手段だけど、小規模の開発だし、初めてGit触る人がいるので許して
  • 作業用ブランチを切り分けておいた。
    • MasterとのMargeはSunaipuが行った
  • Unity用にignoreを大量に書いた
    • 書くまではDumpだらけ。

sponsored link

down

コメントする




*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



sponsored link