0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

なるべくgitを理解させず他人にgitを使わせたい

Posted at

gitを運用する上の問題

俺はgitを完全に理解している。だが俺以外のメンバーはgitを理解していない。
理由は単純、gitは難解だからだ。
そういうときに「勉強しろ!」というのはプロとしての「怠慢」なのである。

どうするか

gitは諦めて前時代的な管理方法 (RCSやSVN) を使うか?それはあり得ない。1
極めて単純化した運用を練っておくことでgitという難解なツールを使ってもらうのである。
運用としてはGitHub-Flowに近いものを使います。git-flowなぞ高度なことさせられません。

ブランチの種類

  • featureやfix: トピックブランチ
  • develop: デプロイ可能な開発用ブランチ
  • master: 製品となったコードの格納先

各ブランチは複数持つことを許容します。feature/new-buttonやdevelop/開発1、master/お客さんA みたいな。

開発中の作業として頼むサイクル

  1. ソースコードの修正作業が発生する(機能追加やバグ修正)
  2. git checkout develop
  3. git pull
  4. git checkout -b feature/hoge または git switch -c feature/hoge
  5. いろいろソースをいじってもらう
  6. git add .
  7. git commit -m "hogehoge"
  8. git push -u origin feature/hoge または事前にgit config push.default currentを仕込んでおいてgit push
  9. GitLabやGitHubとかでMR、PRしてもらう。
  10. MRやPRを承認してもらう。

改めて見ると長いですね。大変だ。これを無意識にやっている方々は偉大ですね。

あきらめたこと

  • 作業単位にコミットを分けること
    • やるに越したことはないが分けるために頭や時間を使うくらいなら分けなくてよい。

問題

もし、自分の作業中に他人の変更がdevelopに発生した場合、適宜リベースするか?
それともdevelopを作業ブランチにmergeしてもらうか?という問題がある。
作業内容を見た感じほぼ同じじゃね?となるが、作業者が何をどこにマージするのかによって難易度が変わる。

developへリベースする場合

作業のフローとしてはこんな感じ。
この場合、developの最新版に対して自分の差分をマージすることになる。

  • git pull origin develop
  • git rebase origin/develop
  • 「自分の変更に対して」コンフリクトがあったら解決し、 git rebase --continue
  • git push -f

developを作業ブランチにmergeしてもらう場合

developのmergeは他人の変更を取り込む必要が発生する。他人の作業は理解し難い(したくない)。
この場合、古いバージョンのdevelopに対して自分の変更がある状態に加え、developの最新版をマージすることになる。
作業者の負担が多くなると思われる。

  • git pull origin develop
  • git merge origin/develop
  • 「他人の変更に対して」コンフリクトがあったら解決し、 git merge --continue
  • git push

つまり

手順書を書いて、rebaseさせよう!ということ。おわり。

  1. SVN派の皆さんすいません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?