Overview
Tesslate Studio includes built-in Git integration that supports three providers through a unified API. You can import existing repositories, commit changes, push to remotes, pull updates, and manage branches, all from within the project workspace.Import Repositories
Clone existing repos from GitHub, GitLab, or Bitbucket into Tesslate projects
Commit Changes
Stage and commit files with descriptive messages
Push and Pull
Sync your local changes with the remote repository
Branch Management
Create, switch, and manage branches within the workspace
Multi-Provider Support
Tesslate supports three Git hosting providers. The backend automatically detects the provider from the repository URL and handles authentication accordingly.| Provider | URL Format | OAuth Flow |
|---|---|---|
| GitHub | https://github.com/user/repo | GitHub OAuth App |
| GitLab | https://gitlab.com/user/repo | GitLab OAuth App |
| Bitbucket | https://bitbucket.org/user/repo | Bitbucket OAuth App |
git-providers-api.ts module, and the backend stores credentials in a GitProviderCredential record per provider.
Connecting a Provider
Authorize
You will be redirected to the provider’s OAuth page. Log in and authorize Tesslate Studio to access your repositories.
Permissions
Tesslate requests the following access:- Read repositories: List and clone your repos
- Write repositories: Commit and push changes
- User identity: Associate commits with your account
Git provider connections are optional. You can use Tesslate Studio without connecting any provider. You just will not be able to import repos or push changes to a remote.
Importing Repositories
During Project Creation
The most common way to import a repository is during project creation:Connecting Git to an Existing Project
You can also connect a Git repository to a project that was created from a template or base:Open the Git Panel
In the project workspace, click the Git icon in the toolbar (or open the GitHub floating panel).
Initialize or Connect
- Initialize: Creates a new local Git repository in the project (
gitApi.init(projectId)) - Connect: Links to an existing remote repository by providing the URL (
gitApi.clone(projectId, repoUrl))
Checking Status
The Git panel shows the current state of your repository in real time.Status Information
ThegitApi.getStatus(projectId) call returns:
| Field | Description |
|---|---|
staged | Files that are staged for the next commit |
modified | Files that have been changed but not staged |
untracked | New files that are not yet tracked by Git |
deleted | Files that have been removed |
current_branch | The name of the active branch |
ahead | Number of local commits not yet pushed to the remote |
behind | Number of remote commits not yet pulled locally |
Viewing Diffs
Click any changed file to see exactly what was modified. ThegitApi.getDiff(projectId, filePath) call returns a per-file diff showing:
- Added lines: New content (highlighted in green)
- Modified lines: Changed content
- Deleted lines: Removed content (highlighted in red)
Committing Changes
Review Changes
See the list of modified, added, and deleted files. Click individual files to view diffs.
Commit Response
A successful commit returns:Commit Best Practices
Write Clear Messages
Write Clear Messages
Good examples:
- “Add user authentication with email and password validation”
- “Fix responsive layout breaking on screens under 640px”
- “Refactor API client to use typed response interfaces”
- “Update”
- “Changes”
- “Fix stuff”
Commit Regularly
Commit Regularly
Commit after completing each feature or fix. This creates a clear history and makes it easy to revert specific changes if needed.
Keep Commits Focused
Keep Commits Focused
Each commit should represent a single logical change. Do not mix unrelated modifications in the same commit.
Pushing and Pulling
Push to Remote
After committing locally, push your changes to the remote repository:push method supports:
branch: Which branch to push (defaults to the current branch)remote: Which remote to push to (defaults toorigin)force: Force push (use with caution)
Pull from Remote
Pull the latest changes from the remote repository:conflicts array lists the affected files. You can resolve conflicts in the editor and commit the resolution.
Branch Management
Listing Branches
View all local and remote branches:Creating Branches
Create a new branch, optionally checking it out immediately:Switching Branches
Switch to an existing branch:Commit History
View the history of commits for the current branch:limit parameter to control how many commits to retrieve.
Disconnecting a Repository
To remove the Git connection from a project:Git Panel in the Workspace
The Git panel provides a visual interface for all Git operations:Changed Files
See modified, added, deleted, and untracked files at a glance
Diff View
Click any file to see a line-by-line diff of changes
Branch Selector
View the current branch and switch between branches
Commit Interface
Write commit messages and commit with one click
ahead and behind counts so you know at a glance whether you need to push or pull.
Troubleshooting
Cannot Connect Provider
Cannot Connect Provider
Cause: OAuth authorization failed or was cancelled.What to try:
- Clear browser cache and cookies for the provider’s domain
- Try a different browser
- Verify the provider’s website is accessible
- Revoke Tesslate’s access on the provider’s settings page and re-authorize
Import Failed
Import Failed
Cause: Repository is inaccessible, or the clone failed.What to try:
- Verify you have access to the repository (check that it is public or that you are a collaborator)
- Confirm the repository URL is correct
- Re-authorize your provider connection (tokens may have expired)
- For very large repositories, try importing a lighter branch
Push Failed
Push Failed
Cause: No remote configured, authentication expired, or the remote has changes you have not pulled.What to try:
- Verify your provider connection is active
- Pull the latest changes before pushing
- Check that you have write access to the repository
- If force push is needed, use the force option (be cautious as this rewrites remote history)
Merge Conflicts
Merge Conflicts
Cause: The remote has changes that conflict with your local changes.What to try:
- The pull response lists conflicting files in the
conflictsarray - Open each conflicting file in the editor and resolve the conflict markers
- After resolving all conflicts, commit the resolution
- Ask an AI agent for help: “Resolve the merge conflict in src/App.tsx”
Best Practices
Commit After Each Feature
Regular, focused commits create a clear history that is easy to navigate and revert if something goes wrong.
Write Descriptive Messages
Explain the “what” and “why” of each change. Good commit messages make the history useful for you and your team.
Review Before Pushing
Use the diff view to review all changes before pushing to the remote. Verify no secrets, debug logs, or temporary code are included.
Pull Before Starting Work
If you are collaborating with others, pull the latest changes before starting a new feature to minimize merge conflicts.
Next Steps
Creating Projects
Import a repository to start a new project
Code Editor
Edit your code with full IntelliSense
Chat Interface
Use AI agents to generate and modify code
Understanding Projects
Learn about project architecture and container management