# Git (/docs/typescript-sdk/git)

## GitService [#gitservice]

### Constructors [#constructors]

#### Constructor [#constructor]

```ts
new GitService(transport: HttpTransport): GitService;
```

**Parameters**:

- `transport` _HttpTransport_

**Returns**:

- `GitService`

### Methods [#methods]

#### add() [#add]

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

**Parameters**:

- `path` _string_
- `files` _string\[\]_

**Returns**:

- `Promise<void>`

#### addRemote() [#addremote]

```ts
addRemote(path: string, name: string, url: string): Promise<void>;
```

**Parameters**:

- `path` _string_
- `name` _string_
- `url` _string_

**Returns**:

- `Promise<void>`

#### checkoutBranch() [#checkoutbranch]

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

**Parameters**:

- `path` _string_
- `branch` _string_

**Returns**:

- `Promise<void>`

#### clone() [#clone]

```ts
clone(url: string, options: CloneOptions): Promise<void>;
```

**Parameters**:

- `url` _string_
- `options` _CloneOptions_

**Returns**:

- `Promise<void>`

#### commit() [#commit]

```ts
commit(
   path: string,
   message: string,
   options: CommitOptions): Promise<GitCommitResponse>;
```

**Parameters**:

- `path` _string_
- `message` _string_
- `options` _CommitOptions_

**Returns**:

- `Promise<GitCommitResponse>`

#### createBranch() [#createbranch]

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

**Parameters**:

- `path` _string_
- `name` _string_

**Returns**:

- `Promise<void>`

#### deleteBranch() [#deletebranch]

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

**Parameters**:

- `path` _string_
- `name` _string_

**Returns**:

- `Promise<void>`

#### getConfig() [#getconfig]

```ts
getConfig(key: string, options: GitConfigOptions = {}): Promise<string | null>;
```

**Parameters**:

- `key` _string_
- `options` _GitConfigOptions = \{\}_

**Returns**:

- `Promise<string | null>`

#### history() [#history]

```ts
history(path: string): Promise<ListResult<GitCommit>>;
```

**Parameters**:

- `path` _string_

**Returns**:

- `Promise<ListResult<GitCommit>>`

#### init() [#init]

```ts
init(path: string, options: InitOptions = {}): Promise<void>;
```

**Parameters**:

- `path` _string_
- `options` _InitOptions = \{\}_

**Returns**:

- `Promise<void>`

#### listBranches() [#listbranches]

```ts
listBranches(path: string): Promise<ListResult<string>>;
```

List branches; response always has `{items,nextCursor}`.

**Parameters**:

- `path` _string_

**Returns**:

- `Promise<ListResult<string>>`

#### listRemotes() [#listremotes]

```ts
listRemotes(path: string): Promise<ListResult<GitRemote>>;
```

**Parameters**:

- `path` _string_

**Returns**:

- `Promise<ListResult<GitRemote>>`

#### pull() [#pull]

```ts
pull(path: string, options: CredentialOptions = {}): Promise<void>;
```

**Parameters**:

- `path` _string_
- `options` _CredentialOptions = \{\}_

**Returns**:

- `Promise<void>`

#### push() [#push]

```ts
push(path: string, options: PushOptions = {}): Promise<void>;
```

**Parameters**:

- `path` _string_
- `options` _PushOptions = \{\}_

**Returns**:

- `Promise<void>`

#### reset() [#reset]

```ts
reset(path: string, options: ResetOptions = {}): Promise<void>;
```

**Parameters**:

- `path` _string_
- `options` _ResetOptions = \{\}_

**Returns**:

- `Promise<void>`

#### restore() [#restore]

```ts
restore(path: string, files: string[], options: RestoreOptions = {}): Promise<void>;
```

**Parameters**:

- `path` _string_
- `files` _string\[\]_
- `options` _RestoreOptions = \{\}_

**Returns**:

- `Promise<void>`

#### setConfig() [#setconfig]

```ts
setConfig(key: string, value: string, options: GitConfigOptions = {}): Promise<void>;
```

**Parameters**:

- `key` _string_
- `value` _string_
- `options` _GitConfigOptions = \{\}_

**Returns**:

- `Promise<void>`

#### status() [#status]

```ts
status(path: string): Promise<GitStatus>;
```

**Parameters**:

- `path` _string_

**Returns**:

- `Promise<GitStatus>`

***

## CloneOptions [#cloneoptions]

**Properties**:

- `path` _string_
- `branch?` _string_
- `commitId?` _string_
- `depth?` _number_
- `insecureSkipTls?` _boolean_
- `username?` _string_
- `password?` _string_
- `timeout?` _number_

***

## CommitOptions [#commitoptions]

**Properties**:

- `author` _string_
- `email` _string_
- `allowEmpty?` _boolean_

***

## CredentialOptions [#credentialoptions]

**Properties**:

- `username?` _string_
- `password?` _string_
- `branch?` _string_
- `remote?` _string_
- `timeout?` _number_

***

## GitCommit [#gitcommit]

```ts
type GitCommit = toolbox.CommitInfo
```

One commit returned by `git.history()`.

***

## ListBranchResponse [#listbranchresponse]

```ts
type ListBranchResponse = toolbox.BranchList
```

***

## PushOptions [#pushoptions]

**Properties**:

- `username?` _string_
- `password?` _string_
- `branch?` _string_
- `remote?` _string_
- `timeout?` _number_
- `setUpstream?` _boolean_

***

## ResetOptions [#resetoptions]

**Properties**:

- `mode?` _string_
- `target?` _string_
- `files?` _string\[\]_

***

## RestoreOptions [#restoreoptions]

**Properties**:

- `staged?` _boolean_
- `worktree?` _boolean_
- `source?` _string_

***

## GitConfigScope [#gitconfigscope]

```ts
type GitConfigScope = 'global' | 'local'
```

***

## GitRemote [#gitremote]

**Properties**:

- `name` _string_
- `url` _string_

***

## GitStatus [#gitstatus]

**Properties**:

- `currentBranch` _string_
- `ahead?` _number_
- `behind?` _number_
- `branchPublished?` _boolean_
- `fileStatus?` _Array\<\{ name: string; staging?: string; worktree?: string \}\>_

***

## GitCommitResponse [#gitcommitresponse]

```ts
type GitCommitResponse = toolbox.CommitResponse
```
