# 支店

GitHubのブランチを使用して、開発作業を分離し、既定のブランチを管理し、プル要求とブランチ保護を使用して効果的に共同作業を行います。

## ブランチの概要

ブランチを使用すると、機能の開発、バグの修正、リポジトリの包含領域での新しいアイデアの安全な実験を行うことができます。

ブランチは常に既存のものから作成します。 通常、リポジトリのデフォルトブランチから新しいブランチを作成します。 その後、他の人がリポジトリに加えた変更とは別に、新しいブランチで作業できます。

機能を構築するために作成するブランチは、一般にフィーチャー ブランチまたはトピック ブランチと呼ばれます。 「[Managing branches within your repository](/ja/enterprise-server@3.20/pull-requests/how-tos/commit-changes/managing-branches-within-your-repository)」を参照してください。

ブランチを使用して、 GitHub Pages サイトを発行することもできます。 「[GitHub Pages とは](/ja/enterprise-server@3.20/pages/getting-started-with-github-pages/what-is-github-pages)」を参照してください。

ブランチの作成、プルリクエストのオープン、プルリクエスト中でのブランチの削除とリストアを行うためには、リポジトリへの書き込みアクセスを持っていなければなりません。 「[GitHubに対するアクセス許可](/ja/enterprise-server@3.20/get-started/learning-about-github/access-permissions-on-github)」を参照してください。

## デフォルトブランチについて

GitHub にコンテンツがあるリポジトリを作成すると、GitHub により、1 つのブランチを持つリポジトリが作成されます。 リポジトリ内のこの最初のブランチがデフォルトブランチです。 既定のブランチは、誰もがリポジトリにアクセスしたときに表示 GitHub ブランチです。 また、デフォルトブランチは、誰かがリポジトリのクローンを作成したときに Git がローカルでチェックアウトする最初のブランチでもあります。 異なるブランチを指定しないかぎり、リポジトリ内のデフォルトブランチが新しいPull Requestやコードコミットのベースブランチになります。

既定では、 GitHub は新しいリポジトリの既定のブランチ `main` に名前を付けます。

既存のリポジトリのデフォルトブランチを変更できます。 詳しくは、「[デフォルトブランチを変更する](/ja/enterprise-server@3.20/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/changing-the-default-branch)」をご覧ください。

新しいリポジトリのためのデフォルトブランチの名前を設定できます。 詳細については、「[リポジトリのデフォルトブランチ名を管理する](/ja/enterprise-server@3.20/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-default-branch-name-for-your-repositories)」、「[組織のリポジトリのデフォルトブランチ名を管理する](/ja/enterprise-server@3.20/organizations/managing-organization-settings/managing-the-default-branch-name-for-repositories-in-your-organization)」、「[Enterprise でリポジトリ管理ポリシーを適用する](/ja/enterprise-server@3.20/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-the-default-branch-name)」を参照してください。

## 保護されたブランチでの作業

保護されたブランチは、保守管理者が重要なブランチにルールを適用するのに役立ちます。 保護されたブランチでは、強制プッシュまたは削除をブロックしたり、状態チェックを要求したり、レビューを要求したり、コード所有者の承認を要求したり、変更をマージする前に署名されたコミットを要求したりすることができます。

これらの保護は、チームが重要なブランチを安定させ、プル要求がマージされる前に期待を明確にするのに役立ちます。 pull request をマージできるかどうかを確認するには、pull request の **\[会話** ] タブの下部にあるマージ ボックスをオンにします。 [保護されたブランチについて](/ja/enterprise-server@3.20/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches) を参照してください。

> \[!NOTE]
> ブランチ保護が \[Include administrators] に設定されていない場合、リポジトリ管理者は、pull request が要件を満たしていなくても、ブランチ保護が有効になっているブランチに pull request をマージできます。

## プル要求での分岐の比較

プル要求は、ヘッド ブランチで提案された変更をベース ブランチと比較します。 pull request を作成するときに、変更を比較するベース ブランチを変更できます。 \[ **ファイルの変更** ] タブには、プル要求がマージされた場合の変更点が表示されます。

差分ビューは、レビュー担当者がすべてのコミットを読み取らずに変更を理解するのに役立ちます。 統合差分、分割差分、リッチ差分、またはソース差分を表示できます。空白の変更を無視します。またはファイルをフィルター処理して、最も関連性の高い変更に焦点を当てます。

![pull request の \[変更されたファイル\] タブのスクリーンショット。 "差分ビュー" メニューは濃い橙色で表示されています。](/assets/images/help/pull_requests/diff-settings-menu.png)

プル要求がリポジトリの差分制限を超えている場合、またはリポジトリの *.gitattributes* ファイル内のルールによってファイルが非表示になっている場合、差分が表示されない場合があります。 「[リポジトリの制限](/ja/enterprise-server@3.20/repositories/creating-and-managing-repositories/repository-limits#diff-limits)」と「[GitHubでの変更されたファイルの表示方法のカスタマイズ](/ja/enterprise-server@3.20/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github)」を参照してください。

### スリードットおよびツードット Git diff での比較

`git diff` コマンドでは、2 つの比較方法がサポートされています。
GitHubのプル要求では、3 点の差分が表示されます。

| Method | 命令               | 比較対象                                              |
| ------ | ---------------- | ------------------------------------------------- |
| 3 ドット  | `git diff A...B` | 両方のブランチの最新の共通コミット (マージ ベース) とトピック ブランチの最新バージョン。   |
| 2 点    | `git diff A..B`  | ベース ブランチの最新の状態 (たとえば、 `main`) とトピック ブランチの最新バージョン。 |

ツードット diff は SHA あるいは OID (Object ID) など、2 つの Git の committish 参照を直接互いに比較します。
GitHubでは、2 点差分比較の Git コミット参照を同じリポジトリまたはそのフォークにプッシュする必要があります。

*Pro* Git ブック サイトの [Git diff オプション](https://git-scm.com/docs/git-diff#git-diff-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203)を参照してください。

### 3 点比較について GitHub

3 点比較ではマージ ベースが使用されるため、"pull request が導入するもの" に重点を置いています。

ツードット比較を使用したときは、トピック ブランチに変更を加えていない場合でも、ベース ブランチが更新されると差分が変化します。 2 点比較では、ベース ブランチにも焦点が当てており、トピック ブランチによって導入された変更を理解しにくくすることができます。

これに対し、3 点比較では、分岐が分岐した後にトピック ブランチによって導入された変更が表示され続けます。

### 頻繁なマージ

混乱を避けるために、基本ブランチ (たとえば、 `main`) をトピック ブランチに頻繁にマージします。 基本分岐をマージすると、2 点比較と 3 点比較で示される差分は同じです。 できるだけ早く pull request をマージすることをお勧めします。 これにより、共同作成者は pull request を小さくすることをお勧めします。これは一般的にお勧めします。

## 詳細については、次を参照してください。

* [Pull Request](/ja/enterprise-server@3.20/pull-requests/reference/pull-requests)
* GitHub用語集の [GitHub用語集](/ja/enterprise-server@3.20/get-started/learning-about-github/github-glossary#branch)
* [ブランチの概要](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell) (Git ドキュメント)
* [フォーク](/ja/enterprise-server@3.20/pull-requests/reference/forks)