<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yair Treister</title>
    <description>The latest articles on DEV Community by Yair Treister (@ytreister).</description>
    <link>https://dev.to/ytreister</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3615326%2F3ae4e5ff-96e6-4cc5-b781-4dc14ddb1f07.png</url>
      <title>DEV Community: Yair Treister</title>
      <link>https://dev.to/ytreister</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ytreister"/>
    <language>en</language>
    <item>
      <title>🚀 Announcing gibr: A CLI that auto-generates clean, consistent Git branch names</title>
      <dc:creator>Yair Treister</dc:creator>
      <pubDate>Mon, 17 Nov 2025 12:49:32 +0000</pubDate>
      <link>https://dev.to/ytreister/announcing-gibr-a-cli-that-auto-generates-clean-consistent-git-branch-names-475f</link>
      <guid>https://dev.to/ytreister/announcing-gibr-a-cli-that-auto-generates-clean-consistent-git-branch-names-475f</guid>
      <description>&lt;p&gt;If your team’s Git branches look anything like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fixstuff
jon-branch
1234
testing123
final-FINAL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and you’ve wished your team’s branches were consistently named and made it clear who created them and why…&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://github.com/ytreister/gibr" rel="noopener noreferrer"&gt;&lt;strong&gt;gibr&lt;/strong&gt;&lt;/a&gt; to solve exactly that.&lt;/p&gt;

&lt;p&gt;Check out the repo: &lt;a href="https://github.com/ytreister/gibr" rel="noopener noreferrer"&gt;https://github.com/ytreister/gibr&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 What is &lt;strong&gt;gibr&lt;/strong&gt;?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;gibr&lt;/strong&gt; is a small command-line tool that automatically creates clean, consistent, descriptive Git branch names by pulling metadata from your issue tracker.&lt;/p&gt;

&lt;p&gt;No more manually typing branch names.&lt;br&gt;
No more deciding between &lt;code&gt;feature/123-add-user&lt;/code&gt; vs &lt;code&gt;feat/add-user-123&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gibr 123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and it will create a branch like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ENG-123-add-user-search&lt;/code&gt;&lt;br&gt;
Branch name is customizable via the &lt;code&gt;.gibrconfig&lt;/code&gt; template.&lt;/p&gt;

&lt;p&gt;Or you can use the Git alias:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git create 123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can set that up with &lt;code&gt;gibr alias&lt;/code&gt; command&lt;/p&gt;

&lt;h2&gt;
  
  
  🔌 Supported issue trackers
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;gibr&lt;/strong&gt; currently integrates with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;li&gt;GitLab&lt;/li&gt;
&lt;li&gt;Jira&lt;/li&gt;
&lt;li&gt;Azure DevOps&lt;/li&gt;
&lt;li&gt;Linear&lt;/li&gt;
&lt;li&gt;Monday.dev&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It fetches the issue title, type, and assignee, then generates a branch based on your configuration settings.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 Initial setup
&lt;/h2&gt;

&lt;p&gt;Run the interactive initializer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gibr init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will create a &lt;code&gt;.gibrconfig&lt;/code&gt; file in your project root which is how &lt;strong&gt;gibr&lt;/strong&gt; knows which issue tracker, project, your team's preferred naming conventions, etc.  Setup is a breeze:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ gibr init
Welcome to gibr setup! Let’s get you started 🚀

Which issue tracker do you use?
1. AzureDevOps
2. GitHub
3. GitLab
4. Jira
5. Linear
6. Monday.dev
7. Forgejo (coming soon)
8. YouTrack (coming soon)

Select a number (1, 2, 3, 4, 5, 6, 7, 8) [1]: 2

GitHub selected.

GitHub repository (e.g. user/repo): ytreister/gibr
Environment variable for your GitHub token [GITHUB_TOKEN]:
🎉  Found GitHub token in environment (GITHUB_TOKEN)
.gibrconfig already exists. Overwrite? [y/N]: y
✅  Created .gibrconfig with GitHub settings
You're all set! Try: `gibr issues`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🎯 Why I built this
&lt;/h2&gt;

&lt;p&gt;I worked at a company where we used Gitlab for our repository, but Jira for issue tracking.  I wanted to reduce as much friction as I could with creating branches, changing issue status, linking issues to Gitlab (branches and merge requests).  I built a tool at my company specifically to automate all of this.  When I left the company, I decided to rewrite the tool, but in a more plugin-oriented fashion to support any number of issue trackers, not just Jira.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 How it works
&lt;/h2&gt;

&lt;p&gt;You run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gibr &amp;lt;issue-number&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Determines which issue tracker to use based on your configuration&lt;/li&gt;
&lt;li&gt;Fetches the issue and its metadata via API&lt;/li&gt;
&lt;li&gt;Determines the branch name based on your configuration and the issue metadata&lt;/li&gt;
&lt;li&gt;Creates + checks out the branch&lt;/li&gt;
&lt;li&gt;Optionally pushes it&lt;/li&gt;
&lt;li&gt;All fully configurable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧠 Multiple branches for the same issue
&lt;/h2&gt;

&lt;p&gt;What if you started working an issue in a branch, and wanted to start over without deleting your existing branch?  What if you just merged a branch, and realized you forgot one small thing and you want to create a quick follow-up branch based on your issue you just merged?  &lt;strong&gt;gibr&lt;/strong&gt; reduces the friction in doing this!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ gibr issues
|   Issue | Type   | Title                                   | Assignee   |
|---------|--------|-----------------------------------------|------------|
|      50 | issue  | Add support for YouTrack                |            |
|      44 | issue  | Add support for Forgejo                 |            |
|      39 | issue  | Add dry run flag                        |            |
|      38 | issue  | Add support for issue types from labels |            |
$ gibr 39
Generating branch name for issue #39: Add dry run flag
Branch name: 39-add-dry-run-flag
⚠️  Branch '39-add-dry-run-flag' already exists locally.
Would you like to create a new branch with a suffix? [Y/n]: Y
Enter suffix [take2]: take2
ℹ️  Creating new branch '39-add-dry-run-flag-take2' instead.
✅  Created branch '39-add-dry-run-flag-take2' from main.
✅  Checked out branch: 39-add-dry-run-flag-take2
✅  Pushed branch '39-add-dry-run-flag-take2' to origin.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  📦 Try it out
&lt;/h2&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;gibr
&lt;span class="c"&gt;# or if you use uv:&lt;/span&gt;
uv tool &lt;span class="nb"&gt;install &lt;/span&gt;gibr
&lt;span class="c"&gt;# install optional tracker extras if needed:&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;gibr[github,jira]
&lt;span class="c"&gt;# or&lt;/span&gt;
uv tool &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--with&lt;/span&gt; github &lt;span class="nt"&gt;--with&lt;/span&gt; jira gibr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  💬 Looking for feedback
&lt;/h2&gt;

&lt;p&gt;I'd love to hear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does consistent branch naming matter for your team?&lt;/li&gt;
&lt;li&gt;Does your team use different systems for repo vs issue tracking?&lt;/li&gt;
&lt;li&gt;Would you be interested in seeing &lt;strong&gt;gibr&lt;/strong&gt; automate more than just naming, creating and pushing branches? Think pull requests, merge requests, changing issue status, auto-assigning unassigned issues that you start working with gibr, etc.&lt;/li&gt;
&lt;li&gt;Any pain points you'd like &lt;strong&gt;gibr&lt;/strong&gt; to solve?&lt;/li&gt;
&lt;li&gt;Any issue trackers you'd like supported?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading — happy to answer questions!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>git</category>
      <category>opensource</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
