Gitバージョン管理の紹介
重要
A more in-depth guide on Git is available on the Git website.
Git is a Distributed Version Control System (VCS) created by Linus Torvalds, also known for creating and maintaining the Linux kernel. Version Control is a system for tracking changes of code for developers. The advantages of Git Version Control are:
「テスト環境を分離する」ことができます!開発者が新しい機能や修正を加えるときに、本番環境や他の開発作業に影響を与えずにテストできるように、別々の環境 (branch) を設けることを意味します。
履歴を削除せずに特定の コミット に移動する機能があります
コミットを組み合わせるなど、さまざまな方法で コミット を管理する能力
さまざまなその他の機能は、 こちら をご覧ください!
前提条件
重要
このチュートリアルでは、Windowsオペレーティングシステムを使用します。
以下のリンクからGitをダウンロードして、インストールしてください:
注釈
Gitを path に追加する必要があるかもしれません。
Gitの用語集
Gitは、いくつかの核となるデータ構造とコマンドを中心に回っています:
リポジトリ - repository : コードのデータ構造であり、ルートディレクトリに
.gitフォルダを含みます。コミット - commit : リポジトリの特定の保存された状態で、すべてのファイルと追加が含まれます
ブランチ - branch : 一連のコミットをグループ化するものです。各ブランチは独自の履歴を持ちます。これは頻繁的に、「develop」 (継続的な開発のために頻繁に変更される)ブランチと「stable」 機能リリースの印として使われ、ほとんど変更されないブランチを分けるために使われます。
プッシュ - push : ローカルの変更をリモートリポジトリに更新します
プル - pull : リモートの変更をローカルリポジトリに更新します
クローン - clone : リモートリポジトリのローカルコピーをダウンロードするか、修正用に特定のブランチのコピーを作成します
フォーク - fork : 変更するために既存のリポジトリを複製するか、元のリポジトリと比較するためのものです
マージ - merge : 異なるブランチ/コミット/フォークからのさまざまな変更を単一の履歴に統合します
リポジトリ - Repository
Gitリポジトリは、プロジェクトの構造、履歴、およびファイルを含むデータ構造です。
Gitリポジトリは通常、次のようなもので構成されています:
.gitフォルダ。このフォルダにはリポジトリに関するさまざまな情報が含まれています。.gitignoreファイル。このファイルには、コミット時に"含めたくない"ファイルやディレクトリが設定されています。ファイルとフォルダ。これはリポジトリの主な内容です。
リポジトリを作成する
You can store the repository locally, or through a remote -- a remote being the cloud, or possibly another storage medium or server that hosts your repository. GitHub is a popular free hosting service. Numerous developers use it, and that's what this tutorial will use.
注釈
There are various providers that can host repositories. Gitlab and Bitbucket are a few alternatives to Github.
GitHubアカウントを作りましょう
GitHubアカウントを作成するために、 ウェブサイト を訪れ、画面の指示に従ってください。

ローカル作成
アカウントを作成し、確認した後、ホームページにアクセスしてください。表示される画像と似たような見た目になります。

右上のプラスアイコンをクリックします。

次に、 「New Repository」 をクリックします。

情報を入力し、その後 「Create repository」 をクリックします

次のような画面が表示されるはずです。

注釈
キーボードショートカット Ctrl+~ を使って、Visual Studio Code for Windows でターミナルを開くことができます。
Now you'll want to open a PowerShell window and navigate to your project directory. An excellent tutorial on PowerShell can be found here. Please consult your search engine on how to open a terminal on alternative operating systems.

ディレクトリが空の場合は、git が何かを追跡できるようにするためにファイルを作成する必要があります。下の空のディレクトリの例では、 # Example Repo の内容で README.md というファイルが作成されました。 FRC® ロボットプロジェクトの場合、以下の既存のプロジェクト用コマンドは VS Code WPILib Project Creator によって作成された プロジェクトのルートで実行する必要があります。様々なコマンドの詳細については、以降のセクションを参照してください。
注釈
"C:\Users\ExampleUser9007\Documents\Example Folder" というファイルパスを、リポジトリを作成したい場所のパスに置き換え、リモートURL https://github.com/ExampleUser9007/ExampleRepo.git を、前の手順で作成したリポジトリのURLに置き換えてください。
> cd "C:\Users\ExampleUser9007\Documents\Example Folder"
> git init
Initialized empty Git repository in C:/Users/ExampleUser9007/Documents/Example Folder/.git/
> echo "# ExampleRepo" >> README.md
> git add README.md
> git commit -m "First commit"
[main (root-commit) fafafa] First commit
1 file changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README.md
> git remote add origin https://github.com/ExampleUser9007/ExampleRepo.git
> git push -u origin main
> cd "C:\Users\ExampleUser9007\Documents\Example Folder"
> git init
Initialized empty Git repository in C:/Users/ExampleUser9007/Documents/Example Folder/.git/
> git add .
> git commit -m "First commit"
[main (root-commit) fafafa] First commit
1 file changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README.md
> git remote add origin https://github.com/ExampleUser9007/ExampleRepo.git
> git push -u origin main
コミット - Commits
リポジトリは主にコミットで構成されています。コミットはコードの保存された状態または バージョン のことです。
前の例では、README.mdというファイルを作成しました。お気に入りのテキストエディタでそのファイルを開き、いくつか 行を編集してください。ファイルを少し変更したら、保存して閉じます。PowerShellに移動し、以下のコマンドを入力します。
> git add README.md
> git commit -m "Adds a description to the repository"
[main bcbcbc] Adds a description to the repository
1 file changed, 2 insertions(+), 0 deletions(-)
> git push
注釈
Writing good commit messages is a key part of a maintainable project. A guide on writing commit messages can be found here.
Git Pull
注釈
git fetch は、ユーザーが現在の作業ブランチに、自動的にマージ(統合)したくない場合に使用できます。
このコマンドは、リモートリポジトリから履歴またはコミットを取得します。リモートにあなたが持っていない作業が含まれている場合、自動的にマージを試みます。詳細については、 マージ - Merging を参照してください。
実行: git pull
Git Add
このコマンドは指定されたファイルを"ステージ"(本番環境とほぼ同じ環境にシステムを反映させ、動作や表示などの最終確認を行う段階のこと)をし、それらが次のコミットに含まれるようにします。
単一のファイルの場合は、「git add FILENAME.txt」と実行します。FILENAME.txtは追加するファイルの名前と拡張子です。 gitignore で除外されていないすべてのファイル/フォルダを追加するには、「git add .」を実行します。リポジトリのルートで実行すると、このコマンドは追跡されていない、除外されていないすべてのファイルをステージします。
Git Commit
このコマンドでコミットを作成し、リポジトリの履歴に追加されます。コミットには、最後のコミット以降にステージされたファイルに対して行われた変更(diff)が含まれます。このプロセスは、ソフトウェア開発におけるバージョン管理の基本的な部分です。コミットを行うことで、開発者は特定の時点でのソースコードの状態を記録し、後でその状態に戻ることができるようになります。また、コミットメッセージは重要で、他の開発者がそのコミットの目的や変更内容を理解するのに役立ちます。
実行: git commit -m "ここにメッセージを入力してください"
Git Push
ローカルの変更をリモート(クラウド)にアップロード(プッシュ)します
実行: git push
ブランチ - Branches
Gitのブランチは並行する世界のようです。最初は同じですが、異なる道に分岐する(branch)ことができます。Gitの開発フローはこのようにイメージしてください。
上記の例では、mainはFeature 1というブランチに分岐(または複製)され、誰かがそのブランチをチェックアウトしてローカルコピーを作成しました。その後、ローカルブランチの変更をリモートブランチにコミット(またはアップロード)して、それらをFeature 1ブランチにマージしました。すなわち、1つのブランチから別のブランチに変更が「マージ」されています。このプロセスを通じて、開発者は機能ごとに分離して作業し、後でメイン開発ラインに安全に統合することができます。ブランチングとマージングは、複数の開発者が同時に異なる機能や修正に取り組む際の競合を防ぎ、効率的な協業を促進するために重要です
ブランチを作成する
実行: git branch ブランチ名 。「ブランチ名」は作成するブランチの名前です。新しいブランチの履歴は、現在アクティブなブランチから作成されます。
ブランチに切り替える
ブランチが作成されると、そのブランチに切り替える必要があります。
実行: git checkout ブランチ名 。「ブランチ名」は以前に作成したブランチです。
マージ - Merging
このマージ操作は、開発プロセスにおいて重要な役割を果たします。例えば、フィーチャーブランチでの開発が完了したら、その変更をメインブランチにマージして、新しい機能や修正を本番環境に統合することができます。Gitのマージ操作は、ブランチ間での効率的なコードの統合を可能にし、開発プロセスをスムーズにします。1つのブランチの履歴を別のブランチにコピーしたい場合、それらをマージすることができます。マージは、 git merge ブランチ名 のようなコマンドで行われます。この例では、「ブランチ名」はマージ元のブランチの名前です。マージ元のブランチにある変更は、現在のアクティブなブランチに自動的にマージされます。
リモートリポジトリには、自分が持っていない作業(履歴)が含まれていることがよくあります。 git pull を実行すると、それらのコミットを自動的にローカルにマージしようとします。そのマージは、以下のようになります。
ただし、上記の例では、" File A " がFeature1ブランチとFeature2ブランチの両方で変更された場合はどうなるでしょうか?これは マージ競合 と呼ばれます。マージ競合は、競合しているファイルを編集することで解決することができます。この例では、ファイルAを手動で編集して、希望する変更を維持する必要があります。それが完了したら、単に変更を再追加し、再コミットしてから変更をプッシュします。
リセット
場合によっては、履歴をリセットする必要があるか、コミットを元に戻す(revert)必要があります。これは複数の方法で行うことができます。
コミットを元に戻す、取り消し
注釈
マージを元に戻すことはできません。gitは、どのブランチまたはオリジンを選択すべきかわからないためです。
特定のコミットまでの履歴を戻すには、 git revert commit-id を実行します。コミットIDは "git log" コマンドを使用して表示できます。
HEADのリセット
警告
これは警告です!HEADを強制的にリセットするのは危険なコマンドです。指定したコミット以降のすべての履歴を永久に消去してしまいます。改めて警告です!
実行: git reset --hard commit-id
フォーク - Forks
フォークはブランチと同様に扱うことができます。アップストリーム(元のリポジトリ)をオリジン(フォークされたリポジトリ)にマージすることができます。
既存のリポジトリをクローンする
リモートに既に作成されているリポジトリがある場合、次のコマンドを使用してクローンすることができます。
git clone https://github.com/myrepo.git
myrepo.git はあなたの git リポジトリに置き換えます。これに従うと、 「コミット」 にスキップできます。
フォークを更新する
アップストリームを追加する:
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git追加されたことを確認する:
git remote -vアップストリームからの変更を取得する:
git fetch upstreamHEADに変更をマージする:
git merge upstream/アップストリームのブランチ名
Gitignore
重要
チームがロボットプロジェクトに含まれる .gitignore ファイルを変更しないことは非常に重要です。これによってオフラインのデプロイが機能しなくなることがあります!
A .gitignore file is commonly used as a list of files to not automatically commit with git add. Any files or directory listed in this file will not be committed. They will also not show up with git status.
Additional Information can be found here.
フォルダを隠す
新しい行を追加して、末尾にスラッシュを含む非表示にするフォルダを追加します。
例: 非表示にするディレクトリ/
ファイルを隠す方法
非表示にするファイル名を、リポジトリのルートからの相対的なディレクトリを含めて、新しい行に追加します。
例: directory/隠したいファイツの名前.txt
例: 隠したいファイルの名前2.txt
追加情報
A much more in-depth tutorial can be found at the official git website.
A guide for correcting common mistakes can be found at the git flight rules repository.