> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Git バージョン管理

> インストール、セットアップ、ワークフローの例を含む、CData Arc の設定管理にGit ベースのバージョン管理を使用する方法。

export const companyName = "CData";

export const siteNameShort = "Arc";

export const siteName = "CData Arc";

{siteName} は、ほとんどのアプリケーション設定に対してGit ベースのバージョン管理をサポートしており、エンタープライズグレードの変更管理をデータ統合プラットフォームにもたらします。この機能により、チームは完全な監査証跡を伴って設定変更を追跡し、テスト環境と本番環境を分離して維持し、正常な状態にロールバックすることで問題から素早く復旧できます。

Git 統合により、チームメンバーは適切な帰属と変更履歴を伴って{siteNameShort} の設定で共同作業でき、設定エラーのリスクを低減しながらコンプライアンス要件を満たすことができます。組織は、すでにアプリケーションコードに使用しているのと同じ厳格なバージョン管理の手法を、{siteNameShort} の設定にも適用できます。

{siteNameShort} はGit バージョン管理を、GitHub、GitLab、Azure DevOps、Bitbucket などのホスト型Git プラットフォームに接続する**Remote** リポジトリでサポートしています。

すべての{siteNameShort} ファイル（\*.cfg、XML、JSON、バイナリなど）は、.gitignore ファイルに手動で追加していない限り追跡されます。追跡されるファイルの種類の詳細については、[アーキテクチャ](../architecture)を参照してください。

<Note>[Vault](../administration/settings/global-settings-vault) とその内容、および[ユーザーとロール](../administration/settings/user-roles)はバージョン管理されません。トークン、ユーザー名、パスワードなどの機密値をバージョン管理しないようにするため、{companyName} は、*すべての* 機密値をVault に保存し、機密値が必要なコネクタではVault のアイテムを参照することを推奨します。</Note>

## インストールと設定

### 前提条件

バージョン管理機能を使用する前に、開発環境や本番環境を含むすべての{siteNameShort} 環境にGit をインストールする必要があります。

リモートリポジトリを使用する場合は、バージョン管理を設定する前にリポジトリを作成する必要があります。{siteNameShort} は、GitHub、GitLab、Azure DevOps、Bitbucket を含むすべての主要なGit プラットフォームをサポートしています。

#### Git のインストール

##### Windows

1. <a href="https://git-scm.com/download/win" target="_blank">git-scm.com/download/win</a> からGit インストーラーをダウンロードします。
2. インストーラーを実行し、お好みの設定でインストールウィザードに従います。
3. コマンドプロンプトまたはPowerShell を開き、次を実行してインストールを確認します。

   ```
   git --version
   ```

インストールされたGit のバージョンが出力に表示されるはずです。

##### Linux Debian/Ubuntu

次を実行します：

```
sudo apt-get update
sudo apt-get install git
```

##### Linux Fedora/RHEL/CentOS

次を実行します：

```
sudo dnf install git
```

次のコマンドを実行してインストールを確認します：

```
git --version
```

Git のインストールと確認が完了したら、{siteNameShort} のバージョン管理機能の使用を開始できます。

### バージョン管理の設定

**Settings > Advanced > Git Version Control** に移動してバージョン管理を設定します。詳細については、[Git バージョン管理設定](../administration/settings/git-version-control-settings)を参照してください。

リモートリポジトリの場合は、リポジトリのURL と認証情報を入力します。リモートリポジトリ自体の作成は本ドキュメントの範囲外ですので、お使いのGit プラットフォームのドキュメントを参照してください。例えば、GitHub でHTTPS 認証を使用する場合、認証にはパスワードの代わりにPersonal Access Token（PAT）を使用する必要があります。

## 開発環境

共有された本番環境で{siteNameShort} のバージョン管理を使用する場合、{companyName} は、チームメンバーごとに個別の開発環境をセットアップすることを推奨します。これにより、ユーザーに最良のエクスペリエンスを提供し、複数のユーザーが共有環境で同時に変更をプッシュおよびプルしようとした際に発生し得るコンフリクトを回避できます。

バージョン管理を使用して共有された本番環境で直接作業すると、次のような事態を招く可能性があります：

* 複数のユーザーが同時に変更を行った際のマージコンフリクト
* 競合するバージョン管理操作による不十分なユーザーエクスペリエンス

開発環境を使用することで、各チームメンバーは独立して作業し、変更をローカルでテストし、完了した作業を他のメンバーに干渉したり本番運用を妨げたりすることなくリポジトリにプッシュできます。

本番の{siteNameShort} インスタンスをミラーリングするローカル開発環境を設定するには、次の手順に従ってください：

1. 本番環境からデータ暗号化キーをエクスポートします（キーの使用方法の詳細については、[データ暗号化キーとマスターキーについて](../installation/custom-master-key#データ暗号化キーとマスターキーについて)を参照してください）

   1. 本番環境で、API キーを使用して[管理API のexportDataEncryptionKey](../../admin-api/admin-api-actions)エンドポイントを呼び出します。`passphrase` パラメータを使用して、開発環境にキーをインポートする際に使用するパスフレーズを作成します。
   2. このデータ暗号化キーは開発環境で必要になるため、レスポンスを保存してください。

2. 本番環境からVault をエクスポートします。

   1. UI を使用する
      1. **Settings > Advanced > Migration > Export** に移動します
      2. **Custom Export** を選択して**Password** を作成し、**Next** をクリックします
      3. **Settings** タブで、**Vault** のみをチェックします
      4. **Export** をクリックしてエクスポートを実行し、ファイルをダウンロードします

   2. Vault オプションを有効にした[管理API のexport](../../admin-api/admin-api-actions)エンドポイントを使用する

3. 開発環境に{siteNameShort} をインストールします（まだインストールされていない場合）

   1. 開発マシンに{siteNameShort} をインストールします
   2. 初期設定を完了し、最初の[ユーザーアカウント](../administration/settings/users)を作成します
   3. 開発用ライセンスをインストールします
   4. API アクセス用のAPI キーを作成します

4. データ暗号化キーを開発環境にインポートします：開発環境で、API キーを使用して、本番環境からキーをエクスポートした際に使用したのと *同じパスフレーズ* で[管理API のimportDataEncryptionKey](../../admin-api/admin-api-actions)エンドポイントを呼び出します。これにより、開発環境が同じデータ暗号化キーを使用し、Vault の内容を復号できるようになります。

5. Vault を開発環境にインポートします

   1. UI を使用する
      1. **Settings > Advanced > Migration > Import** に移動します
      2. 先ほどエクスポートしたVault ファイルをアップロードします
      3. インポートプロセスを完了します

   2. [管理API のimport](../../admin-api/admin-api-actions)エンドポイントを使用して、Vault ファイルをアップロードしてインポートします。

6. リモートリポジトリを[プル](#変更のプル)して、開発環境を本番の設定と同期します

   1. UI を使用する
      1. [前提条件](#前提条件)の手順に従ってGit をインストールします
      2. **Settings > Advanced > Git Version Control** に移動します
      3. リモートリポジトリ接続を設定します（手順については、[Git バージョン管理設定](../administration/settings/git-version-control-settings)を参照してください）
      4. リモートリポジトリから最新の変更をプルします

   2. 標準のGit コマンドを使用して、ローカルマシンでリポジトリ接続を設定する

開発環境を設定すると、次のことができるようになります：

* 本番に影響を与えることなく、ローカルで変更を行いテストする
* ローカルリポジトリに変更をコミットする
* 完了した作業をリモートリポジトリにプッシュする
* 他のチームメンバーが行った更新をプルする
* 共同開発のために標準のGit ワークフロー（ブランチやプルリクエストなど）に従う

これで、本番環境は、制御されたスケジュールに従って、承認された変更をリモートリポジトリからプルできるようになります。

## バージョン管理操作

{siteNameShort} のGit 統合は、設定変更の管理、リモートリポジトリとの同期、複数の開発ブランチの維持を可能にする、不可欠なバージョン管理操作を提供します。これらの操作は標準のGit ワークフローに従いつつ、{siteNameShort} の設定管理のニーズに合わせて特別に調整されています。

バージョン管理が環境に実装されると、標準の{siteNameShort} フッターは、変更されたローカルファイル数、リモートコミット数、現在のブランチなどのGit メトリクスとアクションを表示するステータスバーになります。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_footer_toolbar.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=23735a9112d7ca212aaa3ae39f0afbfb" alt="Git バージョン管理のフッターツールバー" width="800" data-path="public/images/version_control_footer_toolbar.png" />

### 権限

バージョン管理機能は、管理者だけでなくすべてのユーザーに表示されます。実行できるGit アクションは、[ロールベースのアクセス制御](../administration/settings/user-roles)の権限によって決まります。

* 読み取り専用ユーザーは、ステータスと履歴の表示のみ可能です
* 書き込みユーザーは、コミット、プッシュ、プル、ブランチの作成が可能です

### コミットとプッシュ

*コミット* は、{siteNameShort} 内のすべての設定変更を単一のアトミックな単位として取得し、ローカルのGit リポジトリに保存します。コミットすると、{siteNameShort} は自動的に{siteNameShort} のユーザー名を作成者として記録し、変更にタイムスタンプを付けることで、誰がいつどのような変更を行ったかの完全なトレーサビリティを確保します。変更の目的を文書化するためにコミットメッセージが必須であり、コミットを実行するには書き込み権限が必要です。

*プッシュ* は、ローカルのコミットをリモートのGit リポジトリに同期し、変更を他のチームメンバーやバックアップシステムが利用できるようにします。まだプルしていない新しい変更がリモートブランチに含まれている場合、プッシュ操作は失敗し、エラーメッセージと次に行うべきことの提案が表示されます。これにより、他のユーザーの作業を上書きすることを防ぎ、適切なマージ処理を確保します。

リモートリポジトリの場合、コミットとプッシュの操作は単一のアクションで処理されます。詳細については、[新しい変更のコミットとプッシュ](#新しい変更のコミットとプッシュ)を参照してください。

### プル

*プル* は、リモートのGit リポジトリから最新の変更を取得し、ローカルの{siteNameShort} 設定を更新します。プルする前に、コミットされていないローカルの変更をコミットまたは破棄する必要があります。コミットされていない変更が検出された場合、操作は失敗します。ローカルバージョンとリモートバージョンの間にマージコンフリクトがある場合、プルは失敗し、Git ツールを使用して外部でコンフリクトを解決するよう指示するメッセージが表示されます（詳細については、[コミットとプルのコンフリクトの管理](#コミットとプルのコンフリクトの管理)を参照してください）。プル操作はGit ツールバーから開始できます。詳細については、[変更のプル](#変更のプル)を参照してください。

### ブランチ

ブランチ管理により、開発、テスト、本番の各環境など、さまざまな目的に応じた個別の設定バージョンを維持できます。ツールバーのブランチドロップダウンを使用して、ブランチの切り替え、新規作成、または古いブランチの削除を行います。新しいブランチを作成する際は、ブランチ名を指定し、どのブランチから作成するかを選択します（デフォルトでは現在のブランチが使用されます）。これにより、メイン環境に影響を与えることなく設定変更を試すことができます。詳細については、[ブランチの作成](#ブランチの作成)および[ブランチの削除](#ブランチの削除)を参照してください。

### ログ記録

すべてのバージョン管理の変更は、[アクティビティ](../administration/activity)ページの[監査ログ](../administration/activity#監査ログ)セクションに記録されます。必要に応じて、そのページからログをダウンロードできます。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_audit_logs.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=0f8188e36f3dbf296c9d79581df4f886" alt="バージョン管理の変更の監査ログ" width="800" data-path="public/images/version_control_audit_logs.png" />

## 履歴ビューア

バージョン管理を有効にすると、**Activity** ページに**Commits History** タブが表示されます。これは、完全なコミット履歴を表示し、コミットハッシュ、コミットメッセージ、作成者、日時、各コミットで変更されたファイルのリストなどの詳細を提供します。このタブのコンテンツは検索とフィルタリングが可能です。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_commit_history.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=13eded4fedf44c9314f055c7686dcf8b" alt="Activity ページのコミット履歴タブ" width="800" data-path="public/images/version_control_commit_history.png" />

**Commit** ハッシュをクリックすると、**Commit Details** ページが開きます。これは**File Changes** タブで開き、コミット内のファイルのdiff ビューを表示するため、何が変更されたかを正確に確認できます。**Details** タブをクリックすると、作成者、コミットメッセージ、タイムスタンプが表示されます。

<img src="https://mintcdn.com/cdata-arc/H21wlTeP6JC5lIzk/public/images/version_control_commit_details_263.png?fit=max&auto=format&n=H21wlTeP6JC5lIzk&q=85&s=fb44f904bd18b623557b4040a700cf9e" alt="ファイルのdiff ビューを含むコミットの詳細" width="600" data-path="public/images/version_control_commit_details_263.png" />

diff には変更されたすべての設定の以前の値と新しい値が表示されます。なお、以下の点に注意してください：

* パスワードとシークレットはマスクされます
* Vault の参照はキーシンボルでプレフィックスが付きます

**File Changes** タブの**Go To Resource** リンクをクリックすると、ファイルが変更された{siteNameShort} の該当箇所に移動します。例えば、[MySQL](../../connectors/mysql) コネクタのdiff を表示している場合、リンクをクリックするとそのMySQL コネクタに移動します。

## バージョン管理ワークフローの例

以下の例は、{siteNameShort} のGit 統合を使用する際に遭遇する一般的なバージョン管理のシナリオを示しています。これらのワークフローは、不可欠な操作（リモートリポジトリからの更新のプル、ブランチの作成と削除、変更のコミットとプッシュ、変更の復元、ローカルとリモートの変更が分岐した際のコンフリクトの解決、不要な変更の破棄）をカバーしています。

### 変更のプル

リモートから変更をプルするには、いくつかの方法があります：

* ツールバーの**Pull** をクリックして、コミットを確認せずにプルする

* ツールバーのコミット数をクリックして、**Pull Remote Commits** プレビューを開く

  <img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_pull.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=19eb1d78ab85e254d1dd304902c0cde7" alt="リモートコミットのプルプレビュー" width="800" data-path="public/images/version_control_pull.png" />

* **Activity** ページの**Commits History** タブに移動し、左側のリモートコミット数へのリンクまたは右側の**Pull** ボタンをクリックして、**Pull Remote Commits** プレビューを開く

**Pull Remote Commits** プレビューには、プルする準備ができているすべてのコミットが一覧表示されます。コミットをクリックして詳細を確認し、ファイル数にカーソルを合わせると、コミットに含まれるファイルを確認できます。タスクを完了するには、**Pull Commits** をクリックします。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_pull_remote_commits.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=fbcb765f38370a57c064cfe15b8973be" alt="リモートコミットのプルの確認ダイアログ" width="600" data-path="public/images/version_control_pull_remote_commits.png" />

### ブランチの作成

新しいブランチを作成するには、ツールバーのブランチアイコンをクリックします（ここでブランチを切り替えることもできます）。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_switch_branch.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=efe0816eabcf489955fadc8a34e6bd8b" alt="ツールバーのブランチ切り替え" width="300" data-path="public/images/version_control_switch_branch.png" />

**Add Branch** をクリックし、ブランチに**Name** を付けます。どのブランチからコピーするかを選択し、**Add** をクリックします。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_add_branch.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=09169e1affaa88677b3b438bf395635b" alt="ブランチの追加ダイアログ" width="500" data-path="public/images/version_control_add_branch.png" />

### ブランチの削除

ブランチを削除するには、ツールバーのブランチアイコンをクリックします。削除したいブランチにカーソルを合わせ、ゴミ箱アイコンをクリックします。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_delete_branch.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=9f76b611ab37044aaa7158e8dfa19df2" alt="ブランチの削除ダイアログ" width="300" data-path="public/images/version_control_delete_branch.png" />

### 新しい変更のコミットとプッシュ

{siteNameShort} で変更を行っている際、ツールバーには変更されたファイルの合計数が表示されます。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_footer_toolbar.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=23735a9112d7ca212aaa3ae39f0afbfb" alt="変更されたファイル数を表示するGit ツールバー" width="800" data-path="public/images/version_control_footer_toolbar.png" />

**Commit & Push** をクリックして、**Local File Changes** ペインを開きます。これは、変更したファイルに関する詳細を表示します。変更をコミットしてリモートにプッシュするには、コミットメッセージを入力する必要があります。

<Note>リモートリポジトリの場合、コミットとプッシュは単一のステップで行われます。ローカルにコミットしてからプッシュするのではありません。</Note>

<img src="https://mintcdn.com/cdata-arc/H21wlTeP6JC5lIzk/public/images/version_control_commit_263.png?fit=max&auto=format&n=H21wlTeP6JC5lIzk&q=85&s=4588185cca75f6726c17744805ac7813" alt="コミットメッセージフィールドを含むローカルファイル変更ペイン" width="800" data-path="public/images/version_control_commit_263.png" />

変更をコミットしてプッシュすると、ツールバーの確認メッセージがアクションの結果を知らせます。

### 以前のリビジョンからの変更の復元

リソースを以前の状態に復元するには、**Activity** ページの**Commits History** タブに移動します。**Files Changed** 列の右側にある省略記号をクリックし、**Restore** をクリックします。現在の状態と提案される復元ポイントの状態の間のdiff を確認し、**Next** をクリックします。復元を続行すると、それらのファイル内のコミットされていない変更が完全に失われることに注意してください。タスクを完了するには、**Restore Resources** をクリックします。

### コミットとプルのコンフリクトの管理

プッシュするローカルの変更があり、同時にプルするリモートの変更もある場合に、コンフリクトが発生する可能性があります。ツールバーはコンフリクトを反映し、進め方の提案を提供します。同じエラーメッセージは、**Commit** および**Pull Remote Commits** プレビューページにも表示されます。

<img src="https://mintcdn.com/cdata-arc/j59334epfVQRoK96/public/images/version_control_commit_pull_conflict.png?fit=max&auto=format&n=j59334epfVQRoK96&q=85&s=bd7b52d405b1498b23018f0bf1558800" alt="ツールバーのコミットとプルのコンフリクトメッセージ" width="800" data-path="public/images/version_control_commit_pull_conflict.png" />

1つの選択肢はコンフリクトを手動で管理することであり、もう1つは現在の変更を別のブランチにコミットすることです。これにより、リモートの変更を現在のブランチにプルできるようになります。

**Please commit to a new branch** をクリックすると、コミット先の別のブランチを選択できるページが開きます。新しいブランチを選択（または作成）したら、**Commit & Push Changes** を使用して変更をプッシュできます。

### 変更の破棄

現在の変更を破棄するには、ツールバーのゴミ箱アイコンをクリックします。これにより、**Discard Changes** ペインが開き、破棄する変更を正確に選択できます。**Next** をクリックし、選択が正しいことを確認してから、**Discard Changes** をクリックします。完了すると、確認メッセージが表示され、ツールバーの変更数が破棄された変更の数だけ減少します。
