Bo2SS

Bo2SS

7 GitHubを使用したチーム協力

47 | チームのプロジェクトを作成する#

リポジトリを作成する際、オーナーは組織を選択できます。

  • チームを追加し、権限を付与できます。

48 | 自分のチームに適したワークフローを選ぶには?#

考慮すべき要素:チームメンバーの構成、開発設計能力、製品の特性、プロジェクトの難易度。

1)メイン開発方式(Google、Meta)

image

  • 特徴:変更が直接メインに統合され、迅速な反復が可能。
  • 適用対象:
    • チームのシステム設計と開発能力が高く、効果的な機能切り替えの実施メカニズムを持っている場合、機能スイッチ能力に類似;
    • チームメンバーの能力が高く、開発が簡単で独立しており、アップグレードコストが低いコンポーネント、すなわちコンポーネント開発。

2)Git Flow

image

  • 特徴:プロセスが複雑で、相対的に煩雑。
  • 適用対象:チームがメイン開発能力を持たず、定められたリリースサイクルがあり、製品の品質要求が高く、厳格なリリースプロセスを実行する必要がある。

3)Github Flow

image

  • 特徴:master がメインラインとして、Git Flow よりも厳格。
  • 適用対象:チームがメイン開発能力を持たず、いつでも統合していつでもリリースする必要がある。

4)Gitlab Flow(+ 生産ブランチ)

image

  • 特徴:master ブランチ + 生産ブランチ、リリースはまず生産ブランチにデプロイする必要がある。
  • 適用対象:チームがメイン開発能力を持たず、正確なリリース時間を制御できない。

5)Gitlab Flow(+ 環境ブランチ)

image

  • 特徴:master ブランチ + 環境ブランチ + 生産ブランチ、リリースはまず環境ブランチでテストし、テストに合格してから生産ブランチにデプロイする必要がある。
  • 適用対象:チームがメイン開発能力を持たず、各テスト環境の検証を通過する必要がある。

6)Gitlab Flow(+ リリースブランチ)

image

  • 特徴:master ブランチ + 複数のリリースブランチ、異なるバージョンを維持できる。
  • 適用対象:チームがメイン開発能力を持たず、外部にリリースし、異なるバージョンを維持する必要がある。

小結:各ワークフローには独自の特徴がありますが、いくつかの共通点もあります。チームは自分たちに適したものを使用すればよいです。

49 | 適切なブランチ統合戦略を選ぶには?#

バージョンツリーの進化:Insights——Network

eg.

image

ブランチマージ戦略の設定:Settings——Options——Merge Button、3 種類あります。

image

1)非線形:マージ方式で統合する( git merge 、⚠️ではなく git merge --squash

eg.

image

2)線形:統合するすべてのコミットを 1 つのコミットにまとめ、ターゲットブランチに追加する( git rebase 、⚠️ではなく git merge --squash

eg.

image

3)線形:統合するすべてのコミットをターゲットブランチに追加する( git rebase

eg.

image

❗️:

  • GitHub 上にプルリクエストがある場合、管理者は上記の 3 つの方法のいずれかを選択して統合できます(GitHub が実行)。
  • 後の 2 つの方法はブランチを出会わせていません

50 | issue を使って要求とタスクを追跡するには#

Issues

  • 特徴:状態は open と close に分かれ、Labels で分類され、Milestone で大きなバージョンの変化を示します。
  • テンプレートを設定できます:Feature、Bug、自定義、優れたサードパーティライブラリを参考にできます。
  • 役割:チームのコミュニケーションを促進し、コミュニケーションの詳細を記録します。

PS:国内の優れたライブラリ:vuejs/vue——Issues

51 | project を使って issue を管理するには?#

Projects

  • 看板機能を作成し、管理を便利にします。
  • テンプレートを設定でき、Issue、PR、CR などに対応します。

52 | プロジェクト内でコードレビューを実施するには?#

Settings——Branches——Add rule(Branch protection rules)

  • 適用するルールのブランチパターンを指定
  • コードレビューなど、必要なルールをチェック

image

53 | チームコラボレーション時に多ブランチの統合を行うには?#

(マージ結果は第 49 節を参照し、本節では衝突解決方法を探ります)

シナリオ:1)Beijing->master;2)Shanghai->master。⚠️:2)は衝突を引き起こします。

  • マージ

Shanghai->master の衝突を処理:

image

GitHub はまず master を Shanghai にマージして衝突を解決し、新しいコミットを形成した後、再度 master にマージします。

  • スクワッシュ

Shanghai->master の衝突を処理:

image

GitHub はまず master を Shanghai にマージして衝突を解決し、新しいコミットを形成した後、スクワッシュマージ操作を行います。

  • リベース

Shanghai->master の衝突を処理:GitHub はマージできず、衝突解決後に停止します。

image

手動方式:以下の状態に戻ります;

image

ローカルで Shanghai をリモートの master に基づいてリベースし、衝突を解決します(4 回、Shanghai の 4 回のコミット;より良い方法: git rerere公式文書

image

ローカルの Shanghai ブランチを強制的にリモートにプッシュします(すでに fast-forwards ではないため)

image

最後にリベースマージ操作を行います:

image

7 つのコミットをクローンしたようなものです~

❗️見た目には無駄に思えるかもしれませんが、別の視点から見ると、Author と Committer の責任を明確に区別しています。

54 | 統合の品質を保証するには?#

  • サービスの設定
    • Marketplace で探す、Travis CI、codecov など、プロジェクトの Setting--Integrations で設定できます。
    • さらに、個人の Setting-- Developer settings--OAuth Apps でサードパーティサービスを設定するか、GitHub Apps に自分のまたはオープンソースのサービスを追加できます。
  • ブランチ保護ルールの設定
    • Settings--Branches--Branch protection rules で設定、52 節を参照。

55 | 製品パッケージを GitHub にリリースするには?#

Release 機能:コードをバイナリの圧縮ファイルにパッケージ化し、テストやインストールを便利にします。

  • CI スクリプト(例:.travis.yml)の before deploy と deploy 部分を設定;
  • トークンなどを設定します。

56 | プロジェクトに詳細なガイド文書を追加するには?#

Wiki 機能。

優れた wiki ライブラリを参考にし、ローカルにクローンして、リポジトリの対応するWiki アドレス(プロジェクト名の後に.wiki を追加)にプッシュすることで、自分の説明文書を作成できます。

  • プロジェクトの Settings——Options で Wikis を有効にする必要があるかもしれません。

これは非常に実用的な章で、主に GitHub に焦点を当てています。次の章では Gitlab を一緒に見てみましょう~

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。