Gitの紹介

公開: 2022-06-30

まったく新しいWebサイトを構築する場合でも、テーマやプラグインを開発する場合でも、高度な継続的インテグレーションとデプロイメント戦略を設定する場合でも、コードを使用することになります。

WordPress、WooCommerce、Drupal、Magento、NextJS、さらには手書きのHTMLを使用しているかどうかにかかわらず、すべてのWebサイトで実行されているコードがあります。 各ページをレンダリングしてコンテンツを世界に表示するために必要なファイルのセットがあります。

すぐに気付くのは、時間の経過に伴うコードの変更を追跡する方法が必要であるということです。 ファイルの最新バージョンにどのような変更が加えられ、誰が各変更を行ったかを知る必要があります。

ここでGitが登場します。Gitについて学び、リモートのGitリポジトリを操作するなど、読み続けてください。

Gitを理解する

Gitはバージョン管理システムであり、開発者やファイルを操作している他の人は、変更のバージョンを簡単に作成して保存し、変更の履歴を確認し、デバイスとシステム間で変更を共有することができます。何か問題が発生した場合にこれらの変更を元に戻す。

簡単な歴史

2005年にさかのぼると、開発者のチームがLinuxと呼ばれるプロジェクトを作成していました。これは無料のオープンソースオペレーティングシステムです。 彼らは、何百人もの貢献者の間で変化を簡単に伝える方法を必要としていました。 元々、更新されたコードを含む個々のパッチを渡していたが、これは多くの面で問題があることが判明した。特に、特定の変更セットの「真の」最新バージョンが何であるかを判断する場合はなおさらである。

これらの問題に不満を感じたLinuxプロジェクトにより、Linus Torvaldは、開発者間でコードベース全体を共有し、コミットと呼ばれる変更の「スナップショット」を取得するプロジェクトのかなり斬新なアイデアを実装しました。これは、他のコピーと共有およびマージできます。コードは、世界中のどこにでもあります。 すべてのプロジェクトの変更は単一の履歴と見なすことができるため、すぐにこれはコミュニケーションに役立ちました。

これらのスナップショットをキャプチャするためのその方法はGitです。これはすぐに独自の生活を始め、それ以来Linuxプロジェクトとは独立して開発されてきました。

変化のグラフ

概念的には、Gitはノードのグラフと考えることができます。ここで、各ノードは、ある時点でのプロジェクト全体のスナップショットです。 git-scm.comにあるGitの本では、スナップショットの構造について概説しています。

Gitは、時間の経過に伴うプロジェクトのスナップショットとしてデータを保存します

このスナップショットのチェーンは、最新バージョンを前面に、または変更履歴の一番上に、時間の経過とともにグラフを作成します。 各スナップショットは、Gitでは「コミット」と呼ばれます。

最新の変更をグラフの上部に配置した場合のGitプロジェクトの概要を次に示します。 注—この例では、GitKrakenGitGUIを使用してグラフを視覚化しています。

gitグラフの例

Gitグラフの作成

Gitは、変更をコミットするプロセスを通じて、Git履歴とも呼ばれるこの変更のグラフ​​を作成します。 ただし、変更をコミットする前に、スナップショットに何を追加するかをGitに具体的に指示するか、Gitで適切に参照されているようにコミットする必要があります。

ローカルで作業する場合、プロジェクトに保存するすべての変更は「作業ディレクトリ」にあります。 Gitはそれらの変更を確認できますが、どの変更をコミットするかはまだわかりません。 「gitadd」というコマンドを使用して、どの変更をコミットするかをGitに明示的に指示して、それらの特定のファイルをGitの「ステージング領域」に追加する必要があります。

プロジェクトスナップショットのグラフにコミットするファイルの変更が完了したら、「Git commit」コマンドを使用して、そのスナップショットをグラフに永続的に構築できます。

Gitの追加とコミットの手順

時間を遡る

Gitの利点の1つであり、プロジェクト履歴全体を利用できることは、いつでも戻ってすべての変更を元に戻すことができることです。

最後に行ったコミットが何かを壊した場合、または自分が行ったことについて気が変わった場合は、「Gitリバート」を実行してGitコミットを元に戻すことができます。 これにより、グラフ上に新しいコミットが作成され、今行った変更が元に戻されます。

時間をさかのぼってコミットしたことがないように見せたい場合は、「Gitリセット」を使用してこれを行うことができます。

Gitでの分岐とマージの力

Gitが提供する最も強力な機能の1つは、並列の代替現実を作成する機能です。 いいえ、本当に。

時間の経過に伴うコミットのグラフを作成しているため、履歴の任意の時点から、ブランチと呼ばれるコミットの平行線を作成することを選択できます。 新しく作成されたGitブランチはメインの履歴から独立しています。つまり、必要な変更を自由に行うことができ、他の作業に影響を与えることはありません。 メインタイムラインもブランチであり、最も一般的には「メイン」または「マスター」ブランチと呼ばれます。 新しいブランチおよびメイン以外のブランチは、一般に「機能ブランチ」と呼ばれます。

機能ブランチに変更を加えたら、Gitマージを実行することで、すべての変更をメインブランチに適用できます。

このように作業することには大きな利点があります。 機能ブランチはコードの変更を分離するため、エラーが発生した場合でも、メインブランチは安全であると安心できます。 ブランチで作業すると、進行中の開発作業を中断することなく更新またはセキュリティ修正を適用する必要がある場合に備えて、メインブランチも解放されます。

Gitマージでは、変更をメインブランチから機能ブランチにプルすることもできます。 これにより、メインブランチに加えられた更新が、「メイン」とマージする前に、提案された変更で引き続き機能することを確認できます。

チームで作業している場合、Gitブランチ戦略により、チームが本番環境に移行する前に変更を徹底的にテストし、プロセスを管理する簡単な方法を提供できるようになります。

Gitでのリモートリポジトリの操作

Gitの主な目標の1つは、世界中の人々とコードを簡単に共有できるようにすることです。 Gitに組み込まれているのは、リモートリポジトリの概念です。

Gitリポジトリは、作業を保存するプロジェクトフォルダー全体であり、Gitが時間の経過とともに追跡しているものです。 各リポジトリはGitcloneコマンドを使用して複製でき、無制限の回数共有できるため、Gitは非常にスケーラブルになります。

Gitを非常にスケーラブルにするもう1つの側面は、ドキュメントを変更した場合に、そのドキュメントのまったく新しいコピーを保存する必要がないことです。 変更は「デルタ」と呼ばれる情報の小さなパケットとして保存され、ファイルの個別に変更された行と変更に関するわずかなデータのみがGitが保存または共有する必要があるものです。 デルタは非常に軽量で、多くの場合、サイズはわずか数バイトです。 たとえば、100KBのドキュメントで1行を変更した場合、デルタは20バイト程度になります。

リポジトリのすべてのコピーですべてを一列に並べて一貫性を保つには、プロジェクトの「真の」コピーがどのコンピュータにあるかを指定し、コミットがそのコピーに確実に反映されるようにする必要があります。

これは逆の方法でも機能します。 他のユーザーと共同作業する場合は、変更内容をリポジトリのローカルコピーにプルして、プロジェクトのローカルコピーが最新であることを確認できます。

リモートリポジトリを操作するgitモデル

リモートリポジトリでのコラボレーションを非常にシンプルで管理しやすいものにしている企業はたくさんあります。 GitHub、GitLab、BitBucketなどのプラットフォームは、オンラインのGitリポジトリホスティングおよびコラボレーションツールを提供します。 何百万もの開発者によってオンラインで管理されている何百万ものGitリポジトリがあり、Gitは、コラボレーションしている人の数に関係なく、すべての信頼できる情報源を追跡します。

Gitに保存してはいけないこと

おそらくGitですべきではないことについて話しましょう。 Gitはコードの共有と時間の経過に伴う変更の追跡に優れていますが、モデルに適していないジョブがいくつかあります。 幸い、Gitは、「。gitignore」ファイルと呼ばれる、物事を無視するように指示する便利な方法を提供します。

「.gitiginore」ファイルが存在する場合、Gitはそれをチェックして、それらのアイテムを監視する必要があるかどうかを確認します。 「.gitiginore」内には、個々のファイル名、ディレクトリ全体、またはファイルの種類全体を一覧表示できます。 たとえば、すべての.pngファイルと.jpgファイル、および「wp-content / uploads」フォルダー全体を除外する場合は、「。gitiginore」ファイルに次のように記述します。

 *.png *.jpg wp-content/uploads

なぜGitからメディアファイルを除外するのですか?

Gitはプロジェクトのスナップショットを保存し、「デルタ」のみを渡します。 ただし、問題のファイルが画像、ビデオ、その他のバイナリファイルなどのデータの「ブロブ」である場合、ファイルを変更するたびにまったく新しいデータのブロブが作成されます。 次に、Gitは古いblobと新しいblobの両方の状態を記憶する必要があり、リポジトリに多くの不要なサイズが追加されます。 これは時間の経過とともに蓄積され、Gitの軽量な利点を失うと、リポジトリはすぐに扱いにくくなります。

信じられないかもしれませんが、WordPressコア自体の変更を追跡したくない場合があります。 これにはいくつかの理由があります。

まず、CMSには「コアをハックしないでください」という古いことわざがあります。 追跡する必要があるWordPressのコアで変更しているものは何もないはずです。 更新はWordPress自体から行う必要があります。以前のバージョンが必要な場合は、インストール時に簡単に指定できます。 WordPressのインストール全体をGitに保存することは絶対にできますが、特定の状況で保存することにはあまり価値がありません。 カスタムプラグインや子テーマなど、操作しているコードへの変更のみを追跡する必要があります。 このトピックに関するアドバイスについては、ホスティングプロバイダーに確認することをお勧めします。

次に、WordPressに貢献することを計画している場合、実際にはSVNと呼ばれる古いバージョン管理システムによって維持されていることがわかります。 このモデルは中央サーバーインフラストラクチャを必要とし、Gitに比べてあまり人気がありませんが、WordPressはGitよりも古いものです。 SVNパッチシステムの操作は少し異なります。これについて詳しくは、ドキュメントを参照してください。

結論

うまくいけば、Gitとは何か、そしてGitをWebサイトのコードで操作するためにどのように活用できるかについての理解が深まったことを願っています。 Gitは、コンピューターコードでなくても、時間の経過とともに変更されるすべてのファイルに使用できます。

Gitは、ターゲットユーザーを「ナレッジワーカー」と呼んでいます。これは、IBMから借りた古い用語です。 デスクトップ上のメモからレシピ、本全体に至るまで、Gitを使用すると、作業をより適切に整理し、各変更を行った理由と変更がいつ行われたかを確実に把握できます。

過去にさかのぼって変更を確認できる機能と、分岐とマージを使用して無制限のパラレルユニバースで作業する機能を組み合わせることで、Gitはコードで作業するすべての人にとって不可欠なツールになります。 Gitは、チームがコードプロジェクトでコラボレーションする主要な方法でもあります。

Gitは無料で使用でき、GitKrakenなどのほとんどのGitGUIには無料バージョンがあります。 作業を追跡するためにGitを使用するべきではない理由はないので、「Git」を使用してください。

関連リソース

-XAMPPを使用したWordPressローカル開発

-高度なGitの使用法とワークフロー

-Gitフック

-開発サイトとは何ですか?

-WordPressのキャッシング