Gitのベストプラクティス–(g)itを最大限に活用する方法
公開: 2019-07-02プル、フェッチ、コミット、プッシュ、マージ、リベース–これらの用語は、あなたの日常生活に浸透しましたか? Linus TorvaldsがGitの最初のバージョンを作成したとき、彼はそれを「ばかげたコンテンツトラッカー」と表現しました。 今日まで早送りすると、この無料のオープンソースソフトウェアは現在最も人気のあるバージョン管理システムです。
Gitとは何ですか?
時々時間を戻して、より良い決断をしたり、別のことをしたりできたらいいのにと思いませんか? さて、テクノロジーとコーディングの世界では、あなたはそうすることができます。 Gitはオープンソースの分散バージョン管理システムであり、変更や追加を行うたびに貴重なコードのバージョンを保存します。 したがって、ロールバックする必要があるときはいつでも、作業バージョンと出来上がりを選択するだけです! また、Gitを使用すると、開発者が個々のローカルコピーを同時に処理するため、チーム内で中断のない作業が可能になります。 すべてのチームメンバーによるすべての変更が追跡されるため、組織化されたフローの透明性が維持されます。 では、GitHubとは何ですか? GitHubはGitのリポジトリホスティングサービスであり、バージョン管理システムを最適化するための多くの機能も備えています。
Gitワークフロー
組織ごとに異なるGitワークフローがあります。 最も成功しているGitワークフローは、出力の効果を最大化しながら、チームに生産性のための十分なスペースを提供するワークフローです。 チームの規模に合わせてスケーラブルであり、発生する可能性のある競合の数を最小限に抑える必要があります。 一元化されたGitワークフローは、機能分岐ワークフロー、分岐ワークフロー、Gitflowワークフローなど、他のGitワークフローを構築するための基盤です。ワークフローは、組織の文化を強化および補完するように計画する必要があります。 各チームにとって、独自のGitワークフロー。
なぜGitを使うのですか?
1.分散アーキテクチャ
開発者が単一の中央リポジトリにアクセスして個々のファイルに「チェックアウト」して変更をコミットできるようにする集中型バージョン管理システムとは異なり、Gitは分散型アプローチに従います。 分散アーキテクチャでは、すべての開発者が中央リポジトリ全体の独自のローカルコピーを持っているため、オフラインで作業したり、完全なリビジョン履歴にアクセスしたり、簡単に分岐およびマージしたりできます。
2.パワフルなパフォーマンス
分岐、マージ、コミットなどは、Tへのアクセスパターンを理解するインテリジェントな深い知識アルゴリズムにより、Gitワークフローで非常に簡単かつ迅速に実行できます。
3.安全です
Gitは、ハッシュタグアルゴリズムとしてSHA1を暗号化して使用して、バージョンとディレクトリ間の関係を含むすべてのファイルコンテンツを保存します。 偶発的または悪意のあるコード変更は完全に追跡可能です。
4.オープンソース
オープンソースであるGitは無料で、優れたコミュニティサポートを享受し、品質について継続的に精査され、学習者向けの大量のドキュメントとチュートリアルでバックアップされています。
5.より速いリリース
Gitの分散開発と簡単な分岐および新機能の作成により、開発者はアジャイルワークフローでより頻繁に変更を加えることができます

Git-分散アーキテクチャ
Gitのベストプラクティス
新しいプロジェクト? 新しいリポジトリ
作業を開始したいすべての新しいプロジェクトに対して新しいリポジトリを作成することは、組織的に意味があります。 完了したら、GitHubにプッシュします。
新機能? 手を広げる
新しいプロジェクトを作成したので、いくつかの新しいGit機能を作成してみませんか? Git Branchingを使用すると、リポジトリ内で整理されたワークフローを作成および管理できます。 チームメンバーにはさまざまなGitブランチを割り当てることができるため、チームメンバーは同時に、ただし分離して作業することができます。 他の人があなたが何に取り組んでいるのかを正確に知ることができるように、常にあなたのgitブランチに意味のあるものを与えてください。
最新の状態を維持して1日を始めましょう
作成/割り当てた機能の作業を開始する前に、常にプロジェクト(マスター)の最新の最新バージョンを「リベース」または取得してください。 古いファイルに変更を加えたくない。
定期的なチェックポイントがある
大きな変更のためにコミットを保存しないでください。 小さな変更を頻繁に「コミット」して、コードがあなたとあなたのチームメンバーにとって理解しやすいようにします。 変更が小さく頻繁な場合は、元に戻して追跡することも簡単です。
あなたの仕事を隠してください
多くの場合、あるGitブランチで作業しているが、別のブランチで作業する必要があることを突然思い出したが、それらの半分完了した変更を「コミット」したくないという状況に遭遇することがあります。 または、単にクリーンな作業コピーが必要な場合もあります。 救助のための「gitstash」。 スタッシングを使用すると、未完成の変更をスタックに保存して、いつでも元に戻すことができます。

それらを押しつぶすことはコミットします
履歴のコミットが少ないほど、どこで失敗したかを監視および追跡するのが簡単になります。 クリーンなコミット履歴を保持したい場合は、これが最適です。 プルリクエストがマージされるときに、すべてのコミットをスカッシュして1つにマージします。
メッセージをコミットする
コミットメッセージには、常に明確で理解しやすい情報を提供してください。 変更の簡単な要約を書くことから始め、空白行を残してから、変更の詳細な説明を続けます。 コミット履歴が次のようになってしまうことは望ましくありません:/

https://xkcd.com/1296/
履歴を変更しないでください
リポジトリに変更をコミットしたら、戻って履歴を変更しないでください。 Gitを使用すると、それを実行して陰部の履歴を書き換えることができますが、そうすることは決して良い習慣ではありません。 あなたとあなたのチームの両方のために。
Gitパッチを適用する
リポジトリへの書き込みアクセス権がなくてもバグを修正したい場合は、Gitパッチを適用してください。 常にマスターリポジトリのクローンを作成してから、新しい機能のブランチを作成することを忘れないでください。 .patchファイルの準備ができたら、常にプレビューし、ドライランを実行してエラーをチェックします。 完了したら、パッチを適用します(git apply -R path / file.patch)。 テストとチェックを忘れないでください
プルリクエストを長時間放置しないでください
オープンな「プル」リクエストは、遅かれ早かれ競合を引き起こす可能性があります。 2日以上放置しないでください。 常にコードを確認し、デプロイしても問題がない場合は、プルリクエストをマージします。 これにより、出荷プロセスが高速化されるだけでなく、コードの競合も回避されます。
プロジェクト管理ツールによる整理の改善
Redmineのようなプロジェクト管理ツールを使用している場合は、Gitと組み合わせて使用して、複数のチームメンバーとそのタスクをより適切に管理できるようにすることをお勧めします。 Redmineタスクを使用してGitブランチを作成することは、透明性と整理性を高めることができるため、Gitのベストプラクティスの1つです。

Redmineで作成されたタスク

タスクIDと名前でブランチを作成する
GitLab CI / CD
このような継続的インテグレーション/継続的デプロイメントツールを使用すると、バグやエラーをテストおよびチェックし、コード標準との互換性を確保できます。 これらのジョブは、コードがステージングサーバーにプッシュされた後に実行されます。

GitLab CI / CDジョブのリスト
