> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ja/narejjibsu/040-git-integration.md).

# Git連携

**Overleaf の Git 連携** は [プレミアム機能](/latex/ja/narejjibsu/120-overleaf-premium-features.md)。Overleaf のプレミアム機能は、 [Overleaf Commons](https://www.overleaf.com/for/universities)、グループのメンバー [サブスクリプション](https://www.overleaf.com/for/groups)、および個人向けの所有者 [サブスクリプション](https://www.overleaf.com/user/subscription/plans)。Git 連携は Overleaf Cloud と Overleaf Server Pro（バージョン 4.0 以降）で利用できます。

### Overleaf の Git 連携とは何ですか？

Overleaf の Git 連携を使うと、Overleaf プロジェクトから Git の URL を取得し、それをリモートの Git リポジトリ（repo）として扱えます。プロジェクトをローカルの Git リポジトリにクローンし、ローカルで作業して、ローカルマシンからプロジェクトに変更をプッシュしたり、Overleaf のオンラインエディタで行われている更新をローカルの repo にプルしたりできます。

これにより、オンラインでの作業が難しいときでもローカルでプロジェクトを作業でき、Overleaf プロジェクトで作業する際に好みの別のローカルエディタを使ったり、他のローカルソフトウェアからの出力を Overleaf プロジェクトに簡単に追加したりできます。

プロジェクトの Git URL とクローン用コマンドは、プロジェクトの Overleaf メニュー内にある Git オプションから取得できます。

![プロジェクトメニュー git.png](/files/aeb2578392b7d6322c9bf7b0d9be2030e2f0ef93)

### Git 連携を使用するときの認証方法

リモートの Overleaf プロジェクトに対して clone、pull、push などの Git 操作を行うと、認証を求められます。

Git から Overleaf プロジェクトにアクセスするには、Overleaf のトークンベース認証を使用する必要があります。手順については次を参照してください: [トークンベース認証](/latex/ja/narejjibsu/042-git-integration-authentication-tokens.md).

### プロジェクトをローカルリポジトリとしてクローンする

〜から [**メニュー**](/latex/ja/narejjibsu/148-using-the-overleaf-project-menu.md) プロジェクト内で、同期オプションから Git を選択できます。すると、次を示すダイアログが表示されます `git clone` ローカルリポジトリを作成するときに使用するコマンド。

![プロジェクトメニュー git.png](/files/aeb2578392b7d6322c9bf7b0d9be2030e2f0ef93)

または、プロジェクト URL（プロジェクト内にいるときのブラウザのアドレスバーにある URL）から Git の URL を見つけることもできます。

#### Overleaf Cloud

Overleaf Cloud を使用していて、Overleaf プロジェクトの URL が次のようになっている場合:

```
https://www.overleaf.com/project/1234567
```

この場合、プロジェクトをクローンするために使用する Git の URL は次のようになります

```
https://git.overleaf.com/1234567
```

また、プロジェクトをローカルの Git リポジトリにクローンするために使用するコマンドは次のとおりです:

```
git clone https://git.overleaf.com/1234567
```

**注**: ユーザー名とパスワードの入力を求められる場合があります。次を参照してください [Git 連携のパスワード認証](/latex/ja/narejjibsu/043-git-integration-password-based-authentication.md)

#### Overleaf Server Pro（バージョン 4.0 以降）

**注**: Server Pro では Git-bridge 連携はデフォルトでは有効になっていません。有効化方法については、こちらの [Git 連携](https://github.com/overleaf/overleaf/wiki/Git-Integration) ガイドを参照してください。

Overleaf Server Pro を使用していて、プロジェクト URL が次のようになっている場合:

```
https://<SHARELATEX_SITE_URL>/project/1234567
```

この場合、プロジェクトのクローン時に使用される Git の URL は次のようになります:

```
https://git@<SHARELATEX_SITE_URL>/git/1234567
```

また、Git コマンドラインを使ってプロジェクトをローカルの Git リポジトリにクローンするために使用するコマンドは次のとおりです:

```
git clone git@<SHARELATEX_SITE_URL>/git/1234567
```

**注**: パスワードの入力を求められる場合があります。次を参照してください: [Git 連携の認証トークン](/latex/ja/narejjibsu/042-git-integration-authentication-tokens.md)

### 既存の Git リポジトリから Overleaf プロジェクトを作成する

既存のリポジトリがある場合、Overleaf プロジェクトをリモートリポジトリとして追加できます。始めるには、以下のいくつかのコマンドを実行する必要があります。Overleaf は各プロジェクトにつき 1 本の線形履歴のみをサポートしていることに注意してください。Git 連携では、ブランチ数を 1 に制限することでこの制約が適用されます。その 1 つのブランチは、現在ハードコードで `master`.

1. まず、あなたのコンピュータ上に `my-paper`というフォルダ内の Git リポジトリがあるものとします。（GitHub、GitLab、Bitbucket などでホストされている場合もありますが、ローカルにもクローンしておく必要があります。）
2. 作成 [新しいプロジェクト](/latex/ja/narejjibsu/031-creating-a-document-in-overleaf.md) を Overleaf 上で作成します。プロジェクト内の内容は上書きされるため、このプロジェクトを作成するときは「Blank」プロジェクトオプションを使用し、 `main.tex` ファイルを Overleaf から削除してください。
3. プロジェクトの Git URL を見つけます（ [上記](#cloning-your-project-as-a-local-repository)).

   ![Git-bridge-url.png](/files/6ddac30e695074ca59eace1fd02a94c013a13a76)
4. プロジェクトの Git URL を、ローカルプロジェクトのリモートとして追加します。

   ```
   $ cd my-paper
   $ git remote add overleaf <GIT-URL>
   ```

   （例のリンクではなく、必ず自分のリンクを使用してください。）
5. Overleaf プロジェクトから最新の内容を取得し、master ブランチにマージします。

   ```
   $ git checkout master
   $ git pull overleaf master --allow-unrelated-histories --rebase=false
   ```
6. プロジェクトを Overleaf にプッシュします。

   ```
   $ git push overleaf master --set-upstream
   ```

   ローカルで別のブランチ名を使いたい場合、たとえば `my-branch`のように、エイリアスを使って変更をプッシュできます:

   ```
   $ git push overleaf my-branch:master
   ```
7. Overleaf 上のプロジェクトを開いてください。変更が反映されているはずです。（Overleaf のプロジェクトメニューを開いて、どのファイルがメイン文書ファイルに設定されているかを確認し、必要に応じてその初期選択を変更する必要があるかもしれません。）

### Git コミットと Overleaf Git 連携

Overleaf には内部の [履歴システム](/latex/ja/sononotopikku/49-using-the-history-feature.md) があり、Overleaf プロジェクト内での同時共同編集を可能にしています。これは Git とは同じではないため、Overleaf の Git 連携は本質的には Overleaf の履歴とバージョン管理の仕組みを Git に変換するものです。これにより多くの Git 対応ユースケースが可能になりますが、Overleaf を完全な Git 実装として扱うことはできません。

#### コミットはいつ作成されますか？

次の `pull` または `fetch` コマンドを実行したとき、現在のプロジェクト状態に対応するコミットが存在しない場合は、新しいコミットが動的に作成されます。 `push` ローカルリポジトリから Overleaf のリモートへファイルを送ると、その時点でもコミットが作成され、今後その Overleaf プロジェクトをクローンしたときに表示されます。あなたや他の人が Overleaf で編集している場合、必要になるまでコミットは自動生成されません。

#### コミットを強制する

Overleaf の履歴の特定の時点でコミットを強制的に作成したい場合は、 [バージョンにラベルを付ける](/latex/ja/sononotopikku/49-using-the-history-feature.md) ことで可能です。すぐに git pull しなくても、ラベル付きのバージョンには独自のコミットハッシュが割り当てられます。ラベル付けされる Overleaf の履歴時点より新しいコミットが他に作成されていない場合にのみ、ラベルからコミットが作成されます。

#### 著者情報の追跡

Overleaf Git 連携のコミットは必要な時点で作成されるため、コミットが生成される前に Overleaf 側で複数の変更があった場合、最も最近の変更の作成者がそのコミットの作成者として記録されます。

共同執筆者と作業するときは、各共同作業者が重要な更新を完了するたびにラベルを作成し（コミットを生成し）ると便利です。そうすることで、Git 上で Overleaf の変更に最も近い形を反映する一連のコミットが作成されます。

### 別のリモートとの同期

Overleaf の Git 連携を使うと、Overleaf プロジェクトをローカルリポジトリ用のリモートリポジトリとして機能させることができます。ただし、GitHub、GitLab、または別の Git ホスティングサービスでホストされている別のリモートと Overleaf プロジェクトを同期したい場合もあるでしょう。

GitHub（<https://github.com/>）でホストされているリポジトリとプロジェクトを同期している場合、Overleaf の直接 [GitHub 同期](/latex/ja/narejjibsu/044-github-synchronization.md) 機能を使って個別にインポートすることはできません。

を使いたいかもしれません。GitLab、GitHub Enterprise、または別のホストとプロジェクトを同期する場合は、Overleaf Git 連携を使って中間のローカルリポジトリを設定できます。

上記の [プロジェクトのクローン作成](#cloning-your-project-as-a-local-repository) または [既存リポジトリへのプロジェクトのリンク](#creating-an-overleaf-project-from-an-existing-git-repository)の手順に従うと、Overleaf から変更を push/pull できるローカルリポジトリができます。次に、このリポジトリに、ホスト先のリポジトリを指す第 2 のリモートを追加できます。ローカル環境では、Git ホストと Overleaf プロジェクトの両方を指すように、2 つのリモートが必要です。

Overleaf プロジェクトと Git リポジトリの間に直接の接続はありませんが、これにより両者を同期状態に保つことができます。

![Git other remote.png](/files/469d1f075806e4775d8d3d3980f1e0affc2b159d)

### Overleaf プロジェクトを Git サブモジュールとして追加する

Overleaf 上の各プロジェクトは独立した Git リポジトリとして機能しますが、複数のそのようなプロジェクトを 1 つの Git リポジトリにまとめたい場合は、通常の方法で各プロジェクトのリポジトリを Git サブモジュールとして追加できます。その後、各サブモジュールリポジトリを個別に Overleaf へ／Overleaf から push/pull しつつ、それらをサブモジュールとしてより大きなプロジェクトにまとめておくことができます。

**注：** Overleaf プロジェクトは別のリポジトリのサブモジュールになれますが、Overleaf プロジェクト自体が他のサブモジュールを含むことはできません。

### 既知の制限

**ブランチ**: Overleaf の Git システムはブランチをサポートしていません。

**シンボリックリンク**: Overleaf の Git システムはシンボリックリンクをうまく扱えません。シンボリックリンクは Overleaf プロジェクトにプッシュできますが、通常のファイルに変換され、次回そのプロジェクトをプルしたときにローカルのシンボリックリンクを上書きします。

**タグ**: Overleaf の Git システムはタグ付けをサポートしていません。

**ファイル権限**: Overleaf の Git システムは実行権限を保持しません。これを回避するには、 `git config core.fileMode false` をローカルのリポジトリのクローンで実行できます。その後、影響を受けたファイルの実行権限を再設定できます。こうすれば、その後の Git 操作で再び変更されることはありません。

**Git LFS:** Overleaf プロジェクトは Git Large File Storage をサポートしていません。

**Git サブモジュール:** Overleaf プロジェクトは他のリポジトリ内で Git サブモジュールとして機能できますが、他の Git サブモジュールを含むことはできません。他のプロジェクトのファイルを参照するには、 [別のプロジェクトから追加する機能](/latex/ja/narejjibsu/009-can-i-share-files-e.g.-.bib-and-some-graphics-across-my-projects.md).

**フォルダの名前変更**: ユーザーがフォルダ名を変更してその変更を Overleaf にプッシュすると、新しいフォルダに加えて、古い名前の空のフォルダがプロジェクトに残ります。（たとえば、images/ を img/ に変更すると、プロジェクトには 2 つのフォルダが残ります。img/ には画像ファイルが含まれ、images/ は空になります。これにより、ユーザーがフォルダ名を変更し、同じコミット内で古いフォルダと同じ名前の新しいファイルを作成した場合に問題が発生することがあります。Overleaf の Git システムはこのコミットを拒否します。この場合、コミットを 2 つの部分に分け、残っているフォルダを削除することを推奨します。

**ファイルの名前変更とファイルの移動:** ローカルリポジトリでのファイル名変更は、Overleaf 側では削除と作成になります。これにより、Overleaf 側でファイルに関連付けられたメタデータが失われ、追跡変更やコメントが削除される可能性があります。Overleaf の追跡変更やコメントが付いているファイルを Git 側で移動または名前変更することは推奨されません。

**変更履歴の追跡とコメント**: 残念ながら、Git から Overleaf への push によって、変更履歴の追跡やコメントが失われたりずれたりする可能性があります。そのため、Git の積極的な利用と変更履歴の追跡やコメントの利用を併用することは推奨しません。

### トラブルシューティング

#### リポジトリが見つからないエラー

Repository not found エラーが表示される場合、間違った URL が使われている可能性が高いです。正しい URL は、プロジェクト内のメニューから Git オプションをクリックすると確認できます。Overleaf Cloud では Git 連携は有料機能のため、プロジェクト所有者が Overleaf の有料サブスクリプションを持っているか、機能へのアクセス権が付与されている場合（たとえば早期ベータテストに参加している場合）にのみ利用できます。

#### 認証失敗エラー

次のトラブルシューティング手順を参照してください [Git 連携の認証トークン](/latex/ja/narejjibsu/042-git-integration-authentication-tokens.md) または [Git 連携のパスワード認証](/latex/ja/narejjibsu/043-git-integration-password-based-authentication.md) 、使用しているログイン方法に応じて。

#### レート制限

Git Bridge のレート制限は、Git 操作を手動で実行している場合には通常発生しません。Git クライアントの中には、変更を自動的にリモートへ問い合わせるよう設定できるものがあり、その場合、いくつかのケースでレート制限エラーにつながることがあります。一般的には、自動ポーリングを無効にするか、Git 操作の頻度を下げることでこれらの問題は解決できます。

#### 参照の push に失敗する

リモートプロジェクトへの一部の参照の push に失敗する原因としては、 [プロジェクトのファイルサイズまたはファイル数の制限を超えている](/latex/ja/narejjibsu/119-overleaf-plan-limits.md) ことや、サポートされていないファイルタイプ（たとえばシンボリックリンクや LFS）を含んでいることが考えられます。コミット内の問題のあるファイルを特定するために、上記の既知の制限を確認してください。

場合によっては、 **postBuffer** 設定を大きくすると、ローカルリポジトリから Overleaf プロジェクトへの参照の push 失敗を解消できることがあります。

まず、次のコマンドで現在の設定を確認できます:

```
     git config http.postBuffer
```

何も出力されない場合、デフォルト値の 1MB が使用されています。

次に、次のコマンドを試してください

```
     git config --global http.postBuffer 10485760
```

これにより、値が 10MB に設定されます。

これで、コミットを push してみてください（元のプロジェクトでも新しいプロジェクトでもかまいません）。それでもうまくいかない場合は、以前の設定に戻すか、次のコマンドで設定を削除できます:

```
     git config --global --unset http.postBuffer
```

#### タイムアウト

変更数が多い Git コミットは、タイムアウトにつながる可能性があります。タイムアウトが発生した場合は、コミットをより小さな変更に分割してみてください。問題が解決しない場合は、 **postBuffer** を上記のように 10MB に設定することを検討してください。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ja/narejjibsu/040-git-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
