コンテンツにスキップ

Git

サンドボックス内での Git 操作を提供します。

Constructors

new Git()

new Git(
sandboxId: string,
toolboxApi: ToolboxApi,
getRootDir: () => Promise<string>): Git

Parameters:

  • sandboxId string
  • toolboxApi ToolboxApi
  • getRootDir () => Promise<string>

Returns:

  • Git

Methods

add()

add(path: string, files: string[]): Promise<void>

指定したファイルを次回のコミットに向けてステージします。コマンドラインで 「git add」を実行するのと同様です。

Parameters:

  • path string - Git リポジトリのルートへのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • files string[] - リポジトリルートからの相対パスで指定する、ステージ対象のファイルまたはディレクトリの一覧

Returns:

  • Promise<void>

Examples:

// 単一ファイルをステージ
await git.add('workspace/repo', ['file.txt']);
// リポジトリ全体をステージ
await git.add('workspace/repo', ['.']);

branches()

branches(path: string): Promise<ListBranchResponse>

リポジトリ内のブランチを一覧表示します。

Parameters:

  • path string - Git リポジトリのルートへのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。

Returns:

  • Promise<ListBranchResponse> - リポジトリ内のブランチ一覧

Example:

const response = await git.branches('workspace/repo');
console.log(`Branches: ${response.branches}`);

checkoutBranch()

checkoutBranch(path: string, branch: string): Promise<void>

リポジトリでブランチをチェックアウトします。

Parameters:

  • path string - Git リポジトリのルートへのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • branch string - チェックアウトするブランチ名

Returns:

  • Promise<void>

Example:

await git.checkoutBranch('workspace/repo', 'new-feature');

clone()

clone(
url: string,
path: string,
branch?: string,
commitId?: string,
username?: string,
password?: string): Promise<void>

指定したパスに Git リポジトリをクローンします。 特定のブランチまたはコミットのクローンに対応し、認証情報が提供されている場合は リモートリポジトリへの認証も行います。

Parameters:

  • url string - クローン元のリポジトリ URL
  • path string - リポジトリをクローンするパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • branch? string - クローンするブランチ。未指定の場合はデフォルトブランチをクローン
  • commitId? string - クローンするコミット。指定された場合、リポジトリはそのコミットの分離 HEAD 状態になります
  • username? string - 認証に用いる Git ユーザー名
  • password? string - 認証に用いる Git パスワードまたはトークン

Returns:

  • Promise<void>

Examples:

// デフォルトブランチをクローン
await git.clone(
'https://github.com/user/repo.git',
'workspace/repo'
);
// 認証付きで特定ブランチをクローン
await git.clone(
'https://github.com/user/private-repo.git',
'workspace/private',
branch='develop',
username='user',
password='token'
);
// 特定のコミットをクローン
await git.clone(
'https://github.com/user/repo.git',
'workspace/repo-old',
commitId='abc123'
);

commit()

commit(
path: string,
message: string,
author: string,
email: string,
allowEmpty?: boolean): Promise<GitCommitResponse>

ステージ済みの変更をコミットします。

Parameters:

  • path string - Git リポジトリのルートへのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • message string - 変更内容を説明するコミットメッセージ
  • author string - コミットの作成者名
  • email string - コミット作成者のメールアドレス
  • allowEmpty? boolean - 変更がステージされていない場合でも空のコミットの作成を許可

Returns:

  • Promise<GitCommitResponse>

Example:

// 変更をステージしてコミットする
await git.add('workspace/repo', ['README.md']);
await git.commit(
'workspace/repo',
'ドキュメントを更新',
'John Doe',
'john@example.com',
true
);

createBranch()

createBranch(path: string, name: string): Promise<void>

リポジトリでブランチを作成します。

Parameters:

  • path string - Git リポジトリのルートへのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • name string - 作成する新しいブランチ名

Returns:

  • Promise<void>

Example:

await git.createBranch('workspace/repo', 'new-feature');

deleteBranch()

deleteBranch(path: string, name: string): Promise<void>

リポジトリでブランチを削除します。

Parameters:

  • path string - Git リポジトリのルートへのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • name string - 削除するブランチ名

Returns:

  • Promise<void>

Example:

await git.deleteBranch('workspace/repo', 'new-feature');

pull()

pull(
path: string,
username?: string,
password?: string): Promise<void>

リモートリポジトリから変更を取得します。

Parameters:

  • path string - Git リポジトリのルートへのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • username? string - 認証用の Git ユーザー名
  • password? string - 認証用の Git パスワードまたはトークン

Returns:

  • Promise<void>

Examples:

// 公開リポジトリから pull する
await git.pull('workspace/repo');
// 非公開リポジトリから pull する
await git.pull(
'workspace/repo',
'user',
'token'
);

push()

push(
path: string,
username?: string,
password?: string): Promise<void>

ローカルの変更をリモートリポジトリへ push します。

Parameters:

  • path string - Git リポジトリのルートへのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。
  • username? string - 認証用の Git ユーザー名
  • password? string - 認証用の Git パスワードまたはトークン

Returns:

  • Promise<void>

Examples:

// 公開リポジトリへ push する
await git.push('workspace/repo');
// 非公開リポジトリへ push する
await git.push(
'workspace/repo',
'user',
'token'
);

status()

status(path: string): Promise<GitStatus>

Git リポジトリの現在のステータスを取得します。

Parameters:

  • path string - Git リポジトリのルートへのパス。相対パスはユーザーの ルートディレクトリを基準に解決されます。

Returns:

  • Promise<GitStatus> - 現在のリポジトリのステータス(以下を含む):
    • currentBranch: 現在のブランチ名
    • ahead: リモートブランチより先行しているコミット数
    • behind: リモートブランチより遅れているコミット数
    • branchPublished: ブランチがリモートリポジトリに公開済みかどうか
    • fileStatus: ファイルのステータス一覧

Example:

const status = await sandbox.git.status('workspace/repo');
console.log(`Current branch: ${status.currentBranch}`);
console.log(`Commits ahead: ${status.ahead}`);
console.log(`Commits behind: ${status.behind}`);

GitCommitResponse

git commit のレスポンス。

プロパティ:

  • sha string - コミットのSHA