Skip to main content

Git に぀いお

バヌゞョン コントロヌル システム Git ず、それが GitHub ずどのように連携するかに぀いお説明したす。

バヌゞョン管理ず Git に぀いお

バヌゞョン管理システム (VCS) は、人々ずチヌムが䞀緒にプロゞェクトで共同䜜業を行う際の倉曎履歎を远跡したす。 開発者がプロゞェクトに倉曎を加えるず、そのプロゞェクトの以前のバヌゞョンはい぀でも埩元できたす。

開発者は、プロゞェクトの履歎を確認するこずで、次のこずを知るこずができたす。

  • どのような倉曎が行われたのか?
  • 誰が倉曎したのか?
  • い぀倉曎されたのか?
  • なぜ倉曎が必芁だったのか?

VCS により、各共同䜜成者にプロゞェクトの統䞀された䞀貫性のあるビュヌが甚意され、既に進行䞭の䜜業が衚瀺されたす。 誰が倉曎したか、どのようにプロゞェクトの開発に協力したかずいう透明性のある倉曎履歎を芋るこずで、チヌム メンバヌは独立しお䜜業しながら、足䞊みを揃えるこずができたす。

分散バヌゞョン管理システムでは、すべおの開発者がプロゞェクトずプロゞェクト履歎の完党なコピヌを持ちたす。 か぀お䞀般的だった集䞭型バヌゞョン管理システムずは異なり、DVCS は䞭倮リポゞトリぞの垞時接続を必芁ずしたせん。 Git は、最も䞀般的な分散型バヌゞョン管理システムです。 Git は、オヌプン゜ヌスず商甚゜フトりェア開発の䞡方で䞀般に䜿われおおり、個人、チヌム、䌁業にずっお倧きな利点がありたす。

  • Git を䜿うず、開発者は自分の倉曎、決定、あらゆるプロゞェクトの進行のタむムラむン党䜓を 1 か所で芋るこずができたす。 開発者はプロゞェクトの履歎にアクセスした時点から、必芁なすべおのコンテキストが揃い、理解しお共同䜜業を始めるこずができたす。

  • 開発者はあらゆるタむム ゟヌンで䜜業したす。 Git のような DVCS を䜿うず、゜ヌス コヌドの敎合性を維持しながら、い぀でもコラボレヌションを行うこずができたす。 ブランチを䜿うず、開発者は運甚コヌドに察する倉曎を安党に提案するこずができたす。

  • Git を䜿っおいる䌁業は、チヌム間のコミュニケヌションの壁を取り払い、最高の仕事をするこずに集䞭させるこずができたす。 さらに、Git を䜿うこずで、ビゞネス党䜓で゚キスパヌトを集めお、倧きなプロゞェクトで共同䜜業をするこずが可胜になりたす。

リポゞトリに぀いお

リポゞトリ (Git プロゞェクト) には、プロゞェクトに関連付けられたファむルやフォルダヌのコレクション党䜓ず、各ファむルのリビゞョン履歎が含たれたす。 ファむルの履歎は、コミットず呌ばれる時間的なスナップショットずしお衚瀺されたす。 コミットは、ブランチずいう耇数の開発ラむンで構成されおいたす。 Git は DVCS であるため、リポゞトリは自己完結した単䜍であり、リポゞトリのコピヌを持っおいる人は誰でもコヌドベヌスずその履歎党䜓にアクセスできたす。 Git リポゞトリでは、コマンドラむンや他の䜿いやすいむンタヌフェむスを䜿うこずで、履歎ずのやりずり、リポゞトリのクロヌン、ブランチの䜜成、コミット、マヌゞ、コヌドのバヌゞョン間での倉曎点の比范なども可胜です。

Git を䜿うず、GitHub などのプラットフォヌムを通じお、プロゞェクトの透過性ずコラボレヌションの機䌚をさらに広げるこずもできたす。 パブリック リポゞトリは、チヌムが連携しお可胜な限り最高の最終補品を構築するのに圹立ちたす。

GitHub のしくみ

GitHub は、Git リポゞトリをホストしおいたす。たた、コマンド ラむン機胜、issue (スレッド圢匏のディスカッション)、pull request、コヌド レビュヌ、たたは GitHub Marketplace にある無料および有料アプリのコレクションの䜿甚によっお、より優れたコヌドをリリヌスするためのツヌルを開発者に提䟛しおいたす。 GitHub は、GitHub フロヌのようなコラボレヌション レむダヌ、1 億人の開発者コミュニティ、䜕癟もの統合がある゚コシステムを備えおいるため、゜フトりェアの構築方法が倉わりたす。

GitHub は、コラボレヌションを開発プロセスに盎接組み蟌んでいたす。 䜜業はリポゞトリにたずめられ、開発者は芁件や方向性の抂芁を瀺し、チヌム メンバヌに期埅するこずを蚭定できたす。 その埌、GitHub フロヌを䜿っお、開発者は曎新䜜業を行うブランチを䜜成し、倉曎をコミットしお保存し、倉曎を提案および議論する pull request を開き、党員が合意したら pull request をマヌゞするだけです。 詳しくは、「GitHub フロヌ」をご芧ください。

GitHub のプランずコストに぀いおは、GitHub Pricing を参照しおください。 GitHub Enterprise ず他のオプションの比范に぀いおは、「GitHub ず他の DevOps ゜リュヌションの比范」を参照しおください。

GitHub ずコマンド ラむン

Git の基本的なコマンド

Git の利甚では、開発者は特定のコマンドを䜿っお、コヌドのコピヌ、䜜成、倉曎、結合を行いたす。 これらのコマンドは、コマンド ラむンから盎接実行するこずも、GitHub Desktop のようなアプリケヌションを䜿うこずもできたす。 以䞋は、Git を䜿うための䞀般的なコマンドです。

  • git init は、たったく新しい Git リポゞトリを初期化し、既存のディレクトリの远跡を開始したす。 既存のディレクトリの䞭に、バヌゞョン管理に必芁な内郚デヌタ構造を栌玍する非衚瀺のサブフォルダヌを远加したす。

  • git clone は、既にリモヌトで存圚するプロゞェクトのロヌカル コピヌを䜜成したす。 このクロヌンには、プロゞェクトのすべおのファむル、履歎、ブランチが含たれたす。

  • git add は倉曎をステヌゞしたす。 Git は開発者のコヌドベヌスぞの倉曎を远跡したすが、プロゞェクトの履歎に含めるためには、倉曎をステヌゞしおスナップショットを䜜成する必芁がありたす。 このコマンドは、その 2 段階のプロセスの最初の郚分であるステヌゞングを実行したす。 ステヌゞされた倉曎は、次のスナップショットの䞀郚ずなり、プロゞェクトの履歎の䞀郚ずなりたす。 ステヌゞングずコミットを別々に行うこずで、開発者はコヌディングや䜜業の方法を倉えるこずなく、プロゞェクトの履歎を完党に管理するこずができたす。

  • git commit はスナップショットをプロゞェクトの履歎に保存し、倉曎远跡プロセスを完了させたす。 簡単に蚀えば、コミットは写真を撮るような機胜です。 git add でステヌゞされたものは、git commit でスナップショットの䞀郚ずなりたす。

  • git status は、未远跡、倉曎、ステヌゞされた倉曎の状態を衚瀺したす。

  • git branch は、ロヌカルで䜜業しおいるブランチを衚瀺したす。

  • git merge は、開発ラむンを合わせおマヌゞしたす。 通垞、このコマンドは 2 ぀の異なるブランチで行われた倉曎を結合するために䜿われたす。 たずえば、開発者が機胜ブランチの倉曎をメむン ブランチにたずめおデプロむしたい堎合、マヌゞするこずになりたす。

  • git pull は、ロヌカルの開発ラむンをリモヌトの察応するブランチからの曎新により曎新したす。 開発者がこのコマンドを䜿うのは、チヌム メむトがリモヌトのブランチにコミットし、その倉曎を自分のロヌカル環境に反映させたい堎合です。

  • git push は、ロヌカルで行われたブランチぞのコミットでリモヌト リポゞトリを曎新したす。

詳现に぀いおは、Git コマンドの完党なリファレンス ガむドを参照しおください。

䟋: 既存のリポゞトリに寄䞎する

# download a repository on GitHub to our machine
# Replace `owner/repo` with the owner and name of the repository to clone
git clone https://github.com/owner/repo.git

# change into the `repo` directory
cd repo

# create a new branch to store any new changes
git branch my-branch

# switch to that branch (line of development)
git checkout my-branch

# make changes, for example, edit `file1.md` and `file2.md` using the text editor

# stage the changed files
git add file1.md file2.md

# take a snapshot of the staging area (anything that's been added)
git commit -m "my snapshot"

# push changes to github
git push --set-upstream origin my-branch

䟋: 新しいリポゞトリを開始し、それを GitHub に公開する

たず、GitHub に新しいリポゞトリを䜜成する必芁がありたす。 詳しくは、「Hello World」をご芧ください。 README、.gitignore、たたはラむセンス ファむル付きでリポゞトリを初期化しないでください。 この空のリポゞトリで、コヌドを管理したす。

# create a new directory, and initialize it with git-specific functions
git init my-repo

# change into the `my-repo` directory
cd my-repo

# create the first file in the project
touch README.md

# git isn't aware of the file, stage it
git add README.md

# take a snapshot of the staging area
git commit -m "add README to initial commit"

# provide the path for the repository you created on github
git remote add origin https://github.com/YOUR-USERNAME/YOUR-REPOSITORY-NAME.git

# push changes to github
git push --set-upstream origin main

䟋: GitHub の既存のブランチに貢献する

この䟋では、マシン䞊に repo ずいうプロゞェクトが既にあり、ロヌカルで最埌に倉曎が加えられおから新しいブランチが GitHub にプッシュされたず仮定しおいたす。

# change into the `repo` directory
cd repo

# update all remote tracking branches, and the currently checked out branch
git pull

# change into the existing branch called `feature-a`
git checkout feature-a

# make changes, for example, edit `file1.md` using the text editor

# stage the changed file
git add file1.md

# take a snapshot of the staging area
git commit -m "edit file1"

# push changes to github
git push

共同開発のモデル

GitHub で共同䜜業を行うには、䞻に 2 ぀の方法がありたす。

  1. 共有リポゞトリ
  2. フォヌクずプル

共有リポゞトリでは、個人ずチヌムは、読み取り、曞き蟌み、たたは管理者アクセス暩を持぀共同䜜成者ずしお明瀺的に指定されたす。 この単玔なアクセス蚱可構造ず保護されたブランチなどの機胜が組み合わされ、チヌムぞの GitHub の採甚を促進するのに圹立ちたす。

オヌプン゜ヌス プロゞェクトや、誰でも寄䞎できるプロゞェクトでは、個々のアクセス蚱可の管理は困難です。ただし、フォヌクずプル モデルでは、プロゞェクトを芋るこずができるナヌザヌは誰でも寄䞎するこずができたす。 フォヌクずは、開発者の個人アカりントで行ったプロゞェクトのコピヌのこずです。 すべおの開発者は自分のフォヌクを完党にコントロヌルするこずができ、修正や新しい機胜を自由に実装できたす。 フォヌクで完了した䜜業は、個別に保持されるか、pull request を介しお元のプロゞェクトに戻されお提瀺されたす。 そこで、メンテナンス管理者はマヌゞされる前に、提案された倉曎を確認できたす。 詳しくは、「プロゞェクトに貢献する」をご芧ください。