89019


### 課題

経緯について。

私の会社は中小企業で、1つの小規模開発を2〜5人ほどで行っています。  
現在、Gitはmasterブランチ1本で、プロジェクトの共有のみに使用しています。  
会社には、より良いGit運用しているチームや、Gitについて詳しい人はいません。  
今後のためというのもありますが、主に以下2点の課題を解決するために、私が運用を考えることになりました。

課題1：共同開発で外部の人が入って来たときに、外部の人がどれくらい開発したか分けて確認したい。共同他社が複数になった場合も、メリットがありそうなら分けたい。また、直接pushされたくない、許可してからマージしたい。

課題2：バグがあった場合全体が動かなくなるのは避けたい。(ここで言う全体とは、仮にdevelopブランチを作成した場合、開発を行うdevelopが全体という意味らしいです)

Git運用フローで解決できると思い質問していますが、上記の課題が解決出来るのであれば他の方法でも構いません。

### 考え

git-flowとGitHub Flowを学習して、次のように考えています。  
外部の人用にdevelopを作ってgit-flowのように運用、自分たちはGitHub Flowのようにmasterからfeatureを作成して運用。

課題1の”外部の人を分けたい”というのが「featureで機能ごと分けて、featureの名前やpushした際の名前で区別する」でも十分分けることが出来ている気がするのですが、一応完全に分けるためにdevelopを検討しています。develop_他社Aのようなブランチを想定しています。

課題2に関しては、featureでプルリクを行えば解決出来ていると考えています。上記考えでは、自社のfeatureはmasterから派生しているので、より厳密なチェックが必要にはなりますが、問題ないかと思います。自社をGitHub
Flowにしたのはプロジェクトが小規模だからです。

### 質問

質問1：すぐ思いつく懸念点として、masterからdevelop(他社用)とfeature(自社用)が派生しているのはコンフリクトが多発しそうですが、運用は難しいでしょうか？

質問2：git-flowとGitHub
Flowはそもそも混ぜて使えるのでしょうか？あまり調べていないのでわかりませんが、ブランチ作成は自由にできるという認識です。

質問3：似た質問になります。せっかく自社をGitHub
Flowにして得た、シンプルでリカバリが早いなどのメリットを、他社用にdevelopブランチを作成することで失っていないか？というところです。

質問4：もし他の解決策、Git運用フローがありましたらご教授下さい。

### 最後に

上司からは「君が決めてから提案してほしい」と言われています。私は入社二年目で、gitはmaster1本使用か、個人開発で友人にプルリクを送っていたくらいの経験しかありません。エンジニアと呼べないくらい実力不足でお恥ずかしいのですが、どうかお力添え頂けたらと思います。


CC BY-SA 4.0
2022-05-24T02:11:57.487
89012
2022-05-24T09:03:02.813
2022-05-24T07:06:26.723
3060
52019
question
git git-flow
Git の運用フローで外部の人用にブランチを切りたいが、どうするべきか


Git ではアカウント管理さえきちんと行っていれば (原則1人1アカウント)、誰がどの程度コミットしたかは簡単に確認することができます。(GitHub
上では勝手にグラフにしてくれます)  
ですので、"外部の人がどれくらい開発したか分けて確認" するためだけにブランチを分けるのはあまりお勧めしません。

あくまでプロジェクトのリリースサイクルや、機能追加・バグ修正といった単位を目安にブランチを使い分けるべきです。  
(仮に Git を使わなかった場合に、「プログラムを誰が書いたか (自社 or 他社) 単位」で分割するかを想像してみてください)

また、「バグがあった場合に動かなくなるのを避けたい」も、「main (master)
ブランチは常に動作可能な状態に保つ」を徹底できれば方法は問わないと思います。

git-flow, GitHub Flow いずれもあくまで指針でしかないので、事前に運用ルールを決めて、徹底できるか次第です。

**参考:**  
[【図解】git-flow、GitHub
Flowを開発現場で使い始めるためにこれだけは覚えておこう](https://atmarkit.itmedia.co.jp/ait/articles/1708/01/news015.html)


CC BY-SA 4.0
2022-05-24T07:02:35.213
89019
2022-05-24T09:03:02.813
2022-05-24T09:03:02.813
3060
3060
89012
answer