はじめまして、理工学部1回生の立命の闇です。
以前、サイバー犯罪被害防止ハッカソンに行ってきました。
私達の班は正直ヤバかった。(察)
しかしメンバーのおかげで個人やチームとしての収穫は大いにありましたし、先輩方による技術力の暴力を受けることができたので良かったです。
そこでグループの反省点についてまとめてみると・・・
- デザインセンスの欠如(アプリのデザインが大阪の某激安スーパーマーケットみたいなチープな感じに・・・)
- 集合や連絡の効率が悪すぎた
- テスト前に発生するような心の余裕
- Gitを使い慣れている人がいなかった←これ元凶
GitはSource Treeというのを用いてUnityのスクリプトのコードを共有したのですが、私たちにはこれをなかなか使いこなせなかったのです。私も途中から学び始めたのですがチーム内のまだ理解している人に尋ねまくって少し足を引っぱった感が出てしまいました。
そこで今回はGitについてハッカソンで学んだことを軸に軽く触れようと思います。
T先輩「セキュリティ班なんだからGitはコマンドで操作しろよ」
そう言われたのですが、直感的な操作で楽そうだったSource Treeを用いました。なお今回は共同開発ですのでBit Bucketを使って誰かにリモートリポジトリを作ってもらいます。リモートリポジトリとは複数人で共有するデータの倉庫のようなものです。チームの誰かが作ったリモートリポジトリをBit Bucketから(少なくともWindowsは)Clone(複製)してローカルリポジトリを作成してSource Treeで開きます。
Git画面では「Commit」やら「Push」やら「Merge」などが記されています。これもGitを使うにあたって重要な機能です。
今回は自分のデータをメンバー間で共有させそれぞれのデータをうまく合わせるところまで簡単に説明します。(よく分かってないことだらけだけど・・・)
ブランチ作成とCommit
まず自分のブランチを作成します。これは自分の作業スペースみたいなもので木で例えたときに枝になるという意味もあります。この自分のブランチからCommitしたデータをPushします。Commitは自分が変更を加えたところを記録する作業で自分が何を消し、何を追加したかということが分かります。
Push
ファイルを確定させPushという作業にうつります。Pushは変更したデータをアップロードしているといえば分かりやすいでしょう。ローカルリポジトリで作成した内容をリモートリポジトリでチームで共有するにはこの作業が必要です。
Merge
次に誰かがPushした内容を繋ぎ合わせて1つのデータに必要があります。そこであるブランチの変更を取り込むMergeを使用します。一見簡単に思えますがここで同じデータがチーム内で違う内容になっていた場合、「競合」というヤバいエラーが発生します。Mergeは競合箇所に応じてリポジトリの軸である管理者に合わせるかPushしてきた人(例えばそのコードの担当者とか)に合わせるかなど変更できます。あと、こまめにMergeしないと僕らみたいに堕ちます。
Fetch
Fetchはリモートリポジトリの最新の状態を確認できます。FetchとMergeを組み合わせてローカルリポジトリに最新のリモートリポジトリの内容が取り込めます。そういう風にしてチームのメンバーは作業を進めていきます。
結論
Gitはチーム内に分からない人がいたらものすごくつらいので親切に教え合おう。
ハッカソンは事前準備が大事。(Gitなんてハッカソン当日にやるもんじゃねえよ馬鹿野蠟)
次回の記事は「RDTやってみた」です。お楽しみに!