description |
---|
How do you manage your virtual branches? |
The main interface for Virtual Branches are a series of branch lanes. Each lane represents a scope of work that is different than what your current base branch (ie, origin/master
) looks like. Work that is not yet in production.
This could be a local virtual branch that you're working on, or it could be a virtual branch that was created from a remote branch.
The interface looks something like this:
An example of working on two branches at the same time, while pending upstream changes wait for you to merge them.
The sidebar on the left shows you the stashed virtual branches that you have and the "other" branches that you have available (legacy git branches, remote branches and PRs). All of these branches can be converted into virtual branches by clicking them and then clicking the "Apply" button on the branch view.
The "Trunk" is the view of the base branch that you've set. It will show you essentially a git log
of origin/master
or whatever you set as your base branch, and it will show you if there are any commits upstream that you have not integrated locally yet. We will automatically check for new upstream changes every few minutes, but you can also click the update button to check immediately.
Clicking this will give you the list of applied virtual branches that are in your working directory. It is the main view you will be working in.
Underneath that, we list the "remote" branches that you have. This is a list of Git branches that are ahead of your base branch commit (they have commits on them that your base branch does not have), and can be converted into a virtual branch.
Technically we also list local Git branches here that you may have been working on before using GitButler, so that you can convert them into virtual branches, but mostly this should be coworkers branches on your remote Git server.
The next part shows "Stashed branches", which are the virtual branches that you have available but unapplied. You can click on them to view a preview and then click "Apply" to apply them. This is where virtual branches go when you unapply them.
When you click on "Applied Branches", you will see your main view, which is a list of the virtual branches that are currently applied into your working directory.
Here we have two virtual branches. The first one has a PR open, local work that is not pushed and local work that is not committed.
For each virtual branch lane, there is a list of uncommitted work and committed work. If there is uncommitted work, can type a commit message and commit it locally.
If you are logged in, you can also use our AI helper to generate your commit message automatically from the diffs of your in progress work by clicking the "Generate Message" button.
You can drag the uncommitted files from one lane to another in order to separate the work. You can also drag hunks from within files if you want to split up work in one file into multiple branches.
You can inspect any file change that is uncommitted by clicking on the file path. GitButler will expand a inspector to the right to show you the diff. If you are logged in, our AI system will try to summarize the work in each hunk as well.
Once you have committed work, you will see it at the bottom as a list of commits under a tag that indicates that they are local. If you hit the "Push" button, it will attempt to push these commits to the same remote server that your base branch is on.
If you have authenticated to GitHub, you also have the option to create a Pull Request for that branch automatically.
Any further commits will be marked as local until you push them.
You can always undo your last commit by hitting the "Undo" button on the commit.
If you made a commit and then make another small change and want it to be in your last commit, you can simply drag the file on top of the last commit to amend it.
If you want to squash two commits together, just start dragging one of the commits and the squash targets will light up.