This is super exciting! Being able to quickly undo a commit and dragging and dropping is huge. Much more intuitive, esp for beginner users. Can't wait to check it out when it's on Windows!
Over the past 6 months I've accumulated 40 stashes on my current project, ranging from redundant deployed code to critical fixes I've completely forgotten about. An hour playing around with git butler made cleaning all of those up super easy. One (pretty simple) feature request would be to automate the process of converting git stashes to gitbutler stashes. It was just a lot of stash apply, generate branch name, git butler unapply, stash delete.
@@dustin6336 I think the difference is that gitbutler allows to integrate these changes in a single working directory, while still keeping them in different (virtual) branches.
This is really cool! I like how you covered very realistic scenarios that I would encounter in my day to day. I don’t know that I’ll be making the switch from CLI to gitbutler, but I’ll certainly give it a go!
i have seen git ui clients come and go, but i think, i prefer to stick to the terminal. in the end, the cumbersomeness of handling git in the terminal, makes you think more about the consequences your actions have, and thus improve the overall quality of the versions and history of your project.
I'm with you here, a lot of tools like this try to reduce friction but often friction helps you slow down your thinking and make better judgements in the long run.
i think this is a really nice way to work pragmatically like in trunk-based development while still keeping things as organized/pedantic as feature branch
This has the potential to replace my git worktrees workflow. I’m excited to try this out and see. My main concern/question is how it’ll handle different versions of package.json dependencies across branches & how much friction that adds when unapplying new versions to focus on a fix burtual branch before jumping back to feature work.
That looks super cool! How does this surface/handle merge conflicts if you want to reorder/apply patches in different order? (I have been using Stacked Git for this type of thing)
Currently we don't let you reorder commits by drag/drop, but when we do we simply won't allow you to do it. There are a lot of interesting use cases around changing history - folding, splitting, reordering, etc - and we want to be simple and clear when we allow it. We allow you to do squashing, undoing, amending, but those are pretty clear operations. We'll get to more fun stuff soon!
the virtual branch concept is really nice. not a big git GUI proponent bcs I've seen so many devs avoid ever learning git well and the risk of something like this is that entire generations will have no idea how to use git without something like this. but excited to see what the cli implementation of virtual branching looks like
How about specific brand names? We start our branches with the project tag/ticket id: i.e: XX-1234-whatever-the-ticket-says. Commit messages I personally do: tag/ticket id: type of change: short message. XX-1234: feat: add detail page to event Are custom messages/branch names supported?
@GitButler does the tool support stacking branches? For example, if I want to split feature changes into part 1 and part 2 branches, and base the part 2 branch on the part 1 branch?
I think you should make clear case for your license. I think it's a great compromise (not-quite-open (no compete) for 2 years, truly open (MIT) afterwards), but it can still be confusing if people hear your code is open and confuse it for simply MIT all the time. I'm personally a little unsure if the 2 years counts from each commit, release, or for the entire project (probably each commit but this isn't spelled out clearly enough). On another note, I love the tasteful use of Serif in the UI.
We tried very hard to not use the term "open source" in this video. There is a confusion in the industry today between the OSI-definition-aware people who understand it to mean an OSI approved license that sufficiently satisfies the 10 OSDs and the rest of the world who thinks it generally means what OSI would term "source available". We're trying to be clear, but since our license is a little new and the terminology is muddled (it's _very_ clear to one party and the other party has no idea there is a definition) we tried to toe the line with "our code is now open". It was very specific phrasing to avoid saying "open source". For a more insane rabbit hole to go down, you can read the FSL issue on terminology that we're currently trying to participate constructively in: github.com/getsentry/fsl.software/issues/2
What do the changes in the remote repo look like? (maybe I missed it) In other words, is there provenance, or an audit trail, on the repo for these discrete changes?
Amazing product, cant wait for enterprise version - I know a lot of folks at work who would prefer such approach to a regular "oh I'm sorry I created a PR with 10 structural decisions, but I need to go so please merge" . Q:Is it a local LLM creating generated messages?
This is unlike anything else I've seen. Are there any plans to add the ability to pick individual lines within a file for commit? Sometimes multiple changes are made to a single file for a variety of reasons, or you might be creating a pull request for an upstream repo.
Careful about creating a branch automagically because they may not be off of trunk, main, develop, or whatever main branch is called as sometimes new work should be derived off a feature or release branch. Otherwise, looks very exciting.
Used it now for about 3 weeks. While I really like the concept it seem like a pretty unfinished product at the moment. Difficult to point out anything specific but overall using it is not always so smooth. But for the most basic flows it works. Also would definitely prefer a CLI over the UI.
Seems amazing, but it's a standalone (local) tool? I do a lot of work on remote workstations (VS Code SSH/Dev Containers) where it's more involved to use local tools. Any plans to make a VS Code extension or similar?
Super sorry about that. We're almost there, but there are some bundling issues with OpenSSL for libgit2 on Windows that we need to figure out. Hopefully soon!
So, it looks like automation, where you have a local brach with a mess of commits, but when you push to a remote branch it do auto squash. Is it correct, or am I missing something?
If a rebase creates a non linear changeset, it'd be great if this tool could move everything to a new branch, and supercede the existing one to avoid force pushes. Immutable branches in git wouldn't be hard if git butler already owns the creation and management of them.
Technically you can do that with GitButler. If we rebase something or change the history because of an action of the user, we show you that we would have to force push it. If you don't want to, all you have to do is change the target branch name. You only have to force push if you want to overwrite a branch. If you want to just create a v2 or whatever, force pushing is not technically needed.
Multi-branch! Yes! I love drag and drop to manage commits and squash them. It's a better `git rebase -i` Now make branch-on-branch easier. In my experience, this has always been a brittle and error-proned workflow. Aka, don't accidentally merge onto the wrong branch!
Isn't this nearly identical to changelists in IntelliJ IDEs? I can already split out changes into separate changesets without changing the current branch using that mechanism.
I mostly work on a remote machine (university cluster) using VS Code. Is it possible to use GitButler for this kind of setup? Maybe a VSC extension or SSH capabilities inside GitButler? Great tool anyways, I will probably use it for my local git repos
We're looking into it. VS Code has a really interesting remote plugin execution architecture. None of us have had to use that yet, but we're looking into what that might entail. It might be a little difficult, since we have a filesystem watcher that we rely on for some operations (and we'll probably rely on more as we try to optimize speed) but perhaps it's possible.
Hi Scott, I love this concept and the idea that it takes care of all the stuff so that I don't have to take care of it and more importantly make any silly mistake But as a developer who is used to writing commands on the terminal, gitbutler seems like too much use of the mouse. Can you tell me if these features are accessible from the keyboard too, shortcuts maybe? Also, I personally would like it more if it's an extension on my code editor rather than another app on the device(one of the reasons I hate the GitHub desktop) Waiting for more such demos And best of luck❤
IntelliJ's changelists are very nice. There are a few issues that we cover (in our view) a little more nicely. The biggest thing of course is that you have to use IntelliJ. With us you can use any editor you want (or even multiple editors - sometimes I use VS Code mostly and then nvim on the command line for quick fixups). The other is that changelists are not saved until you commit. We sync your progress all the time so most every change is recoverable. One big thing is that you cannot collaborate on features with Changelists. With virtual branches you can commit, push and update upstream changes within a vbranch, all independently. Changelists are cool, but we would like to argue that vbranches are good at everything you would use them for and better at many other things additionally. Plus I think our UI is much easier to use than the IntelliJ changelist option.
I CANT WAIT to work with a team that have no idea how git works. What’s a branch? What’s the rebase thing you keep talking? How do we swipe left inside our CI pipeline? 😅
Neet. There's business value here since I run into people every day that can't be bothered to learn git, despite it being prereq No. 1 for becoming a dev. :p
We're all seasoned Git pros (even the guy who wrote Pro Git) and we find it pretty useful. We're hoping it's useful to long tooths and newbies alike. :)
Probably, but it's not simple to have a good VS Code integration. Right now we update the index in a way that makes VS Code at least report correctly which files are modified and whatnot, even though it cant report which vbranch this or that change is in.
This was amazing, please do more demos like this to showcase other things GitButler can do
I am crying with joy and want to kiss you people whoever is responsible!!!❤❤❤
really?
This is super exciting! Being able to quickly undo a commit and dragging and dropping is huge. Much more intuitive, esp for beginner users. Can't wait to check it out when it's on Windows!
github desktop already does the quick undo thing
Over the past 6 months I've accumulated 40 stashes on my current project, ranging from redundant deployed code to critical fixes I've completely forgotten about. An hour playing around with git butler made cleaning all of those up super easy.
One (pretty simple) feature request would be to automate the process of converting git stashes to gitbutler stashes. It was just a lot of stash apply, generate branch name, git butler unapply, stash delete.
This sounds more like a PEBKAC to me but okay..
I might be missing something, but couldn’t you have done the exact same thing natively? Such as, stash apply; create branch; stash delete?
@@dustin6336 I think the difference is that gitbutler allows to integrate these changes in a single working directory, while still keeping them in different (virtual) branches.
I have the feeling that this would make git way more accessible to normal people (in the sense of not tech savvy people)
Great work!
Wonderful workflow! ❤
Love this, especially with feature branch and bugfix, cant wait to try it!!
This is a very, very, very, very, very useful tool. thank you for the great explanation to demonstrate the work that goes into the tool. ❤❤❤❤❤❤
This is really cool! I like how you covered very realistic scenarios that I would encounter in my day to day. I don’t know that I’ll be making the switch from CLI to gitbutler, but I’ll certainly give it a go!
this is actually really usefull. also a really good demo.
i will definetely use this. downloading it now.
good stuff , subscribed and excited to tryout the product
We really need this on Windows, guys!
use WSL2
doesnt it work on wsl?
Seems like Wondows support is coming soon.
It's out on Windows too now :)
Love this so much!
Interesting product and you just get started. I will watch its evolution. Thanks.
looks very cool, 3:18 is where it all clicked for me. excited to try this out
Subscribed, joined the Discord and all alerts on active. Can't wait to get my hands on this beauty for Windows.
Very nice! Recently stopped using sourcetree to vscode but I miss the GUI. Going to try this out today.
amazing presentation and very good product
Nice work guys, love the demo and the tool, please keep the snot-green background for your conference!
i have seen git ui clients come and go, but i think, i prefer to stick to the terminal.
in the end, the cumbersomeness of handling git in the terminal, makes you think more about the consequences your actions have, and thus improve the overall quality of the versions and history of your project.
This is for a different type of person
@@jerbear7952 what kind of person would that be? a person that uses git, i would assume...
I'm with you here, a lot of tools like this try to reduce friction but often friction helps you slow down your thinking and make better judgements in the long run.
I want early access rn! Absolutely amazing
This sounds great!
Soooooo promising!
For sure I will try it
Wondering how it manages conflicts
i think this is a really nice way to work pragmatically like in trunk-based development while still keeping things as organized/pedantic as feature branch
Seems grate! going to check it out.
Very curious to see what it does with overlapping changes. This looks great!
using git manually is gonna feel silly after this. awesome demo! from someone who normally shuns Git UIs
this is revolutionary!!
Amazing cant wait when it hit on windows 💯
This feels like it would make version control and such much accessible to non technical people. (Book authors for example)
Superb!🎉
Cool stuff. Will give it a go
Yooo, thats so cool. Will try this
This has the potential to replace my git worktrees workflow. I’m excited to try this out and see. My main concern/question is how it’ll handle different versions of package.json dependencies across branches & how much friction that adds when unapplying new versions to focus on a fix burtual branch before jumping back to feature work.
Amazing ❤❤
thank you so much~
this looks excellent
This was the happy path, what about when the changes conflict?
Looks quite intereesting ... will be playing with it soon
すばらしいです!ありがとう
5:16 love that cut away at the end!
was not expecting that.. what a view! what mountain range is that?
You had me at squash
This is incredibly based. I love it
the question is do i really need a separate product as i like to do all this from my ide
Nice, hope you add azure support!
That looks super cool! How does this surface/handle merge conflicts if you want to reorder/apply patches in different order? (I have been using Stacked Git for this type of thing)
Currently we don't let you reorder commits by drag/drop, but when we do we simply won't allow you to do it. There are a lot of interesting use cases around changing history - folding, splitting, reordering, etc - and we want to be simple and clear when we allow it. We allow you to do squashing, undoing, amending, but those are pretty clear operations. We'll get to more fun stuff soon!
Really cool!
the virtual branch concept is really nice. not a big git GUI proponent bcs I've seen so many devs avoid ever learning git well and the risk of something like this is that entire generations will have no idea how to use git without something like this.
but excited to see what the cli implementation of virtual branching looks like
How about specific brand names? We start our branches with the project tag/ticket id: i.e: XX-1234-whatever-the-ticket-says.
Commit messages I personally do: tag/ticket id: type of change: short message.
XX-1234: feat: add detail page to event
Are custom messages/branch names supported?
They are. In the dropdown menu, you can set the remote branch name specifically. If you don't, however, we'll figure out one for you.
That seems to have some potential 👀
@GitButler does the tool support stacking branches? For example, if I want to split feature changes into part 1 and part 2 branches, and base the part 2 branch on the part 1 branch?
Sublime Merge feels better. I feel more in control.
super cool!
Awesome!
Welp, let's see how this goes! 🚀🚀🚀
Amazing :)
I think you should make clear case for your license. I think it's a great compromise (not-quite-open (no compete) for 2 years, truly open (MIT) afterwards), but it can still be confusing if people hear your code is open and confuse it for simply MIT all the time. I'm personally a little unsure if the 2 years counts from each commit, release, or for the entire project (probably each commit but this isn't spelled out clearly enough).
On another note, I love the tasteful use of Serif in the UI.
We tried very hard to not use the term "open source" in this video. There is a confusion in the industry today between the OSI-definition-aware people who understand it to mean an OSI approved license that sufficiently satisfies the 10 OSDs and the rest of the world who thinks it generally means what OSI would term "source available". We're trying to be clear, but since our license is a little new and the terminology is muddled (it's _very_ clear to one party and the other party has no idea there is a definition) we tried to toe the line with "our code is now open". It was very specific phrasing to avoid saying "open source". For a more insane rabbit hole to go down, you can read the FSL issue on terminology that we're currently trying to participate constructively in: github.com/getsentry/fsl.software/issues/2
Also, the answer is a rolling 2 year window from each commit.
Hooray 🙌 🚀
What do the changes in the remote repo look like? (maybe I missed it)
In other words, is there provenance, or an audit trail, on the repo for these discrete changes?
Amazing product, cant wait for enterprise version - I know a lot of folks at work who would prefer such approach to a regular "oh I'm sorry I created a PR with 10 structural decisions, but I need to go so please merge" . Q:Is it a local LLM creating generated messages?
Exciting product! ♥
Awesome, need it as a vscode extension
We would love to do this someday.
This is unlike anything else I've seen. Are there any plans to add the ability to pick individual lines within a file for commit? Sometimes multiple changes are made to a single file for a variety of reasons, or you might be creating a pull request for an upstream repo.
Nice, I like it. I’d love it more with a NeoVim plugin, where you can do mouseless switching and toggling of virtual branches.
We would love to standardize an API or local server where we could enable plugins like this. You're right, it would be very cool.
Careful about creating a branch automagically because they may not be off of trunk, main, develop, or whatever main branch is called as sometimes new work should be derived off a feature or release branch. Otherwise, looks very exciting.
Can’t wait for a windows version, hope it isn’t too far out!
Working on it!
i'm installing gitbutler
Used it now for about 3 weeks. While I really like the concept it seem like a pretty unfinished product at the moment. Difficult to point out anything specific but overall using it is not always so smooth. But for the most basic flows it works. Also would definitely prefer a CLI over the UI.
I dound the gui really appealing
Real people never leave terminal, stupid whine about ui
Seems amazing, but it's a standalone (local) tool? I do a lot of work on remote workstations (VS Code SSH/Dev Containers) where it's more involved to use local tools. Any plans to make a VS Code extension or similar?
This is sick aff, but sad its not in windows yet. The tech stack is really mind blowing.
Super sorry about that. We're almost there, but there are some bundling issues with OpenSSL for libgit2 on Windows that we need to figure out. Hopefully soon!
@@gitbutlerapp I'd love this to be on windows!!
This is awesome
Thanks! We think you're awesome too.
Nice tool!
Thanks!
I am impressed. Waiting for Windows version to try out.
We are working on it, but git2/openssl on Windows is being a little bit of a pain. Soon!
@@gitbutlerapp Cant wait! Is there somewhere I can subscribe to get email updates on this?
So, it looks like automation, where you have a local brach with a mess of commits, but when you push to a remote branch it do auto squash. Is it correct, or am I missing something?
If a rebase creates a non linear changeset, it'd be great if this tool could move everything to a new branch, and supercede the existing one to avoid force pushes. Immutable branches in git wouldn't be hard if git butler already owns the creation and management of them.
Technically you can do that with GitButler. If we rebase something or change the history because of an action of the user, we show you that we would have to force push it. If you don't want to, all you have to do is change the target branch name. You only have to force push if you want to overwrite a branch. If you want to just create a v2 or whatever, force pushing is not technically needed.
Multi-branch! Yes! I love drag and drop to manage commits and squash them. It's a better `git rebase -i`
Now make branch-on-branch easier. In my experience, this has always been a brittle and error-proned workflow. Aka, don't accidentally merge onto the wrong branch!
Isn't this nearly identical to changelists in IntelliJ IDEs? I can already split out changes into separate changesets without changing the current branch using that mechanism.
I was about to say the same, i used it for years
I was about to say the same. I guess a lot of other products strangely do not have this feature.
It looks good but... what happens if the fix requires changes in the same file that has local modifications?
when is the windows support?
I mostly work on a remote machine (university cluster) using VS Code. Is it possible to use GitButler for this kind of setup? Maybe a VSC extension or SSH capabilities inside GitButler? Great tool anyways, I will probably use it for my local git repos
We're looking into it. VS Code has a really interesting remote plugin execution architecture. None of us have had to use that yet, but we're looking into what that might entail. It might be a little difficult, since we have a filesystem watcher that we rely on for some operations (and we'll probably rely on more as we try to optimize speed) but perhaps it's possible.
Hi Scott, I love this concept and the idea that it takes care of all the stuff so that I don't have to take care of it and more importantly make any silly mistake
But as a developer who is used to writing commands on the terminal, gitbutler seems like too much use of the mouse.
Can you tell me if these features are accessible from the keyboard too, shortcuts maybe?
Also, I personally would like it more if it's an extension on my code editor rather than another app on the device(one of the reasons I hate the GitHub desktop)
Waiting for more such demos
And best of luck❤
Good intro
This is exactly the workflow I have with IntelliJ's changelists. Not sure if another tool worth the learning effort.
IntelliJ's changelists are very nice. There are a few issues that we cover (in our view) a little more nicely.
The biggest thing of course is that you have to use IntelliJ. With us you can use any editor you want (or even multiple editors - sometimes I use VS Code mostly and then nvim on the command line for quick fixups).
The other is that changelists are not saved until you commit. We sync your progress all the time so most every change is recoverable.
One big thing is that you cannot collaborate on features with Changelists. With virtual branches you can commit, push and update upstream changes within a vbranch, all independently.
Changelists are cool, but we would like to argue that vbranches are good at everything you would use them for and better at many other things additionally.
Plus I think our UI is much easier to use than the IntelliJ changelist option.
This looks awesome! Can't wait till it comes to Windows.
Us too. Working on it.
This seems more suitable for web based development. How about C or C++ project which needs to compile to take effect?
Any plans for support to Bitbucket?
Would love to see a comparison with Graphite!
The simple version is that Graphite seems to advocate stacked branches whereas we try to facilitate parallel branches so they are not dependent.
Take my money for a windows version!
Ayyyyyy
I CANT WAIT to work with a team that have no idea how git works. What’s a branch? What’s the rebase thing you keep talking? How do we swipe left inside our CI pipeline? 😅
You should put links to your stuff in the video description and in the channel description
Loved it on my mac. Unfortunately, we use Windows at work. I really hope that a windows release comes soon!
We're working hard on the port. There are some openssl/git2 issues that don't seem to play well out of the box. We'll hopefully get there soon.
maybe i dont quite get it - but isnt this kind of close to git worktree?
Is it in RC ?
Neet. There's business value here since I run into people every day that can't be bothered to learn git, despite it being prereq No. 1 for becoming a dev. :p
We're all seasoned Git pros (even the guy who wrote Pro Git) and we find it pretty useful. We're hoping it's useful to long tooths and newbies alike. :)
How about us snaggletooths?
Cool and many of these I can already do with Jetbrains' built-in tooling.
Do you also auto fetch the repos or is it more a „pre-fetch“ only?
We actually auto-fetch them and update the refs/remotes references.
@@gitbutlerapp yeah ,)
what if a feature and a bug fix is in the same file?
are there plans to integrate this into vscode/cursor IDE?
Probably, but it's not simple to have a good VS Code integration. Right now we update the index in a way that makes VS Code at least report correctly which files are modified and whatnot, even though it cant report which vbranch this or that change is in.