質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SourceTree

SourceTreeは、Gitのクライアントツール。視覚的に操作するGUI形式でGitの操作が容易になります。MacやWindowsなどのOSに依存しておらず、PC環境に合わせてインストールすることが可能です。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

解決済

1回答

5122閲覧

Unityでgitを使った複数人開発について

kurosuke___

総合スコア217

SourceTree

SourceTreeは、Gitのクライアントツール。視覚的に操作するGUI形式でGitの操作が容易になります。MacやWindowsなどのOSに依存しておらず、PC環境に合わせてインストールすることが可能です。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

2クリップ

投稿2018/12/12 04:59

リモートリポジトリ

  • Azure Dev Ops

gitクライアント

  • SourceTree

開発人数

  • 2~3

ブランチモデルのGit Flowを参考にして開発を進める場合、

  1. developブランチをpull
  2. pullしたdevelopブランチからfeatureにブランチを切る
  3. featureブランチで作業をする
  4. featureブランチでコミットし続け、作業が終わったらプッシュ
  5. feature->developにプルリクエスト
  6. マージ

という感じになると思います。

朝に全員がdevelopブランチをプルし、夜に全員の作業が終わり、全員がそれぞれのfeatureブランチをプッシュしてプルリクを作成します。
ただ、マージする際にそれぞれのブランチで同じファイル(シーンなど)を編集していた場合、コンフリクトしてマージできないと思います。
なのでコンフリクトを起こしたら、コンフリクトするブランチでいったんリモートのdevelopをプルして(この時UnityYAMLMergeとか使う)再度プッシュし、マージするというのを繰り返すことになると思うのですが、あっているでしょうか。

複数人でgit運用したことがないので、これが普通なのであれば仕方ないですが、やり方が違うよ!もっといい方法あるよ!というのがあれば、ぜひとも教えていただけないでしょうか。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

developからfeatureを分岐して最終的にdevelopにマージする、というのはおおよそ正しいですが、
「朝に全員が」「夜に全員の作業が」っていう発言がものすごく引っかかります。

gitのブランチ概念は「作業時間」に関係するものでは一切なく、featureブランチはその名の通り「feature(機能)」の単位です。
developから分岐した一つのfeatureは、そのブランチが担当する「機能」が「完成したときに」、developにマージされます。developブランチの中身は、機能が中途半端な状態にはなっていない、常に「基本的には動く」という状態になっているのが一般的です。
マージする際にコンフリクトを起こしていたら解消する、というのは正しいですが、UnityYAMLMergeと発言しているので、おそらくちゃんとマージの意味は理解しているだろうと思います。

もしかしてですが、featureブランチに「作業者の名前」などを付けていませんか?ブランチ名には「そのブランチが担当する(実装する)機能の名前」を付けてみると良いです。そうすれば、「朝・夜」などの発言が出ることはなく、その機能がある程度「実装完了した」というところでマージされるのが自然であることが理解できると思います。 1つのブランチが役目を終えるまでに1週間かかることもあれば、場合によっては、1日に3つや4つのfeatureブランチを作ってはすぐマージ、という作業者が居ても全くおかしくないのです。

投稿2018/12/13 09:38

tamoto

総合スコア4105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurosuke___

2018/12/21 23:56

回答ありがとうございます。 とすると、やはりUnityで複数人開発してるとコンフリクトは結構な頻度で起こりますよね・・・ コンフリクト解決の辺は慣れてくると信じてやってみます。ありがとうございました。
tamoto

2018/12/24 01:18

いえ、プロジェクトが適切に構造化/階層化/抽象化されていれば、それぞれのブランチが異なる機能を開発している限り、複雑なコンフリクトを起こすことはほとんどないです。最初から、「別々の機能の開発で、それぞれのブランチが特定の一ファイルを弄る」という状況をできるだけ減らすように工夫してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問