[**@lancedb/lancedb**](../README.md) • **Docs**
***
[@lancedb/lancedb](../globals.md) / Branches
# Class: Branches
Branch manager for a [Table](Table.md).
Unlike tags, `create` and `checkout` return a new [Table](Table.md) handle scoped
to the branch; writes on it do not affect `main`.
## Methods
### checkout()
```ts
checkout(name, version?): Promise
```
Check out an existing branch and return a handle scoped to it.
With `version` set, the returned handle is pinned to that version of the
branch (a read-only, detached view); otherwise it tracks the branch's
latest and stays writable.
#### Parameters
* **name**: `string`
* **version?**: `number`
#### Returns
`Promise`<[`Table`](Table.md)>
***
### create()
```ts
create(
name,
fromRef?,
fromVersion?): Promise
```
Create a branch and return a handle scoped to it.
#### Parameters
* **name**: `string`
Name of the new branch.
* **fromRef?**: `string`
Source branch to fork from. Defaults to `main`.
* **fromVersion?**: `number`
A specific version on `fromRef`. Defaults to latest.
#### Returns
`Promise`<[`Table`](Table.md)>
***
### delete()
```ts
delete(name): Promise
```
Delete a branch.
#### Parameters
* **name**: `string`
#### Returns
`Promise`<`void`>
***
### list()
```ts
list(): Promise>
```
List all branches, mapping name to branch metadata.
#### Returns
`Promise`<`Record`<`string`, [`BranchContents`](BranchContents.md)>>