Skip to content

postlude/git-tools

 
 

Repository files navigation

git-tools

Marketplace Version Installs Downloads Rating Financial Contributors on Open Collective

Conventional Commits for VSCode.

About

This extension is a customized fork of vscode-conventional-commits with the following additions:

Jira Ticket Support

  • Jira ticket selection: Select Jira tickets from a list (similar to scope selection) or add new ones
  • Settings: Manage tickets in settings.json with conventionalCommits.jiraTickets:
    "conventionalCommits.jiraTickets": [
      { "id": "JIRA-123", "description": "Login feature" },
      { "id": "JIRA-456", "description": "User profile" }
    ]
  • Commit format: When a ticket is selected, the message format is feat: add title (JIRA-123)
  • New ticket flow: Two-step input (ticket number → optional description) when adding new tickets

Stage / Unstage UI (SourceTree-style)

  • Dedicated staging view: Open with Cmd+Shift+G (Mac) or Ctrl+Shift+G (Windows/Linux), or via the Git Staging icon in the Activity Bar
  • File-level operations: Stage, Unstage, Discard (revert) individual files
  • Hunk-level staging: Stage or unstage specific code blocks within a file
  • Bulk actions: Stage All and Unstage All buttons
  • Diff view: SourceTree-style diff with line numbers, add/remove highlighting
  • Clickable filename: Click the filename in the diff view to open the file

Other Customizations

  • Extension name: Renamed to "git-tools"
  • Type order: Commit types (feat, fix, docs, etc.) are displayed in conventional order instead of alphabetical order when using commitlint config

Features

This extension helps you to fill in commit message according to Conventional Commits.

Usage

Demo

You can access git-tools in several ways:

  1. Conventional Commits: Command + Shift + P or Ctrl + Shift + P, enter git-tools, and press Enter. Or click the icon on the Source Control menu.
  2. Stage / Unstage UI: Cmd+Shift+G (Mac) or Ctrl+Shift+G (Windows/Linux), or click the Git Staging icon in the Activity Bar, or run "git-tools: Open Stage / Unstage" from the command palette.

Icon on the Source Control menu

Extension Configuration

name description default
conventionalCommits.autoCommit Control whether the extension should commit files after: forming the message or closing the editor tab.
When #git.enableSmartCommit# enabled and #git.smartCommitChanges# was set to all, It allows to commit all changes when there are no staged changes.
And set #git.postCommitCommand# to sync to run git.sync after commit.
true
conventionalCommits.emojiFormat Specify which format will be shown in the gitmoji. code
conventionalCommits.gitmoji Control whether the extension should prompt for a gitmoji. true
conventionalCommits.lineBreak Specify which word will be treated as line breaks in the body.
Blank means no line breaks.
""
conventionalCommits.promptBody Control whether the extension should prompt for the body section. true
conventionalCommits.promptFooter Control whether the extension should prompt for the footer section. true
conventionalCommits.promptCI Control whether the extension should prompt for skipping CI run. false
conventionalCommits.promptScopes Control whether the extension should prompt for the scope section. true
conventionalCommits.promptJiraTickets Control whether the extension should prompt for a Jira ticket. true
conventionalCommits.scopes Specify available selections in the scope section. []
conventionalCommits.jiraTickets Specify Jira tickets with id and optional description. Format: [{ "id": "JIRA-123", "description": "Ticket description" }] []
conventionalCommits.showEditor Control whether the extension should show the commit message as a text document in a separate tab. false
conventionalCommits.showNewVersionNotes Control whether the extension should show the new version notes. true
conventionalCommits.silentAutoCommit Control that auto commit should be silent, without focusing source control panel. false
conventionalCommits.editor.keepAfterSave Control whether the extension should keep the editor tab open after saving the commit message. false
conventionalCommits.storeScopesGlobally Control whether the extension should store the defined scopes within your user settings. Uncheck to store in workspace settings. false

Commit Workflow

The recommended workflow automatically add, commit and push files by default.

If you want the extension to only fill in the message, disable autoCommit configuration.

The Recommended Workflow

  1. Active the extension.
  2. Type messages.

The extension will automatically add the changed files, perform the commit and push the commit to remote.

How To Configure autoCommit

  1. Enable Settings > conventionalCommits.autoCommit configuration of the extension. The extension enables Settings > conventionalCommits.autoCommit by default.
  2. Enable Settings > git.enableSmartCommit and set Settings > git.smartCommitChanges to all to commit all changes when there are no staged changes.
  3. Set Settings > git.postCommitCommand to sync to run git.sync after commit.
  • body-full-stop
  • body-leading-blank
  • body-max-length
  • body-max-line-length
  • body-min-length
  • footer-leading-blank
  • footer-max-length
  • footer-max-line-length
  • footer-min-length
  • header-case
  • header-full-stop
  • header-max-length
  • header-min-length
  • references-empty
  • scope-enum
  • scope-case
  • scope-empty
  • scope-max-length
  • scope-min-length
  • subject-case
  • subject-empty
  • subject-full-stop
  • subject-max-length
  • subject-min-length
  • type-enum
  • type-case
  • type-empty
  • type-max-length
  • type-min-length
  • signed-off-by

FAQ

Q: How do I add a line break in messages?

A: Set lineBreak configuration to \n. When you're typing, enter \n as a line break.

image

Or \\n in JSON format.

image

Q: How do I resolve repo not found error?

A: See issue discussion #15.

Q: How do I use commitlint in showEditor mode?

A: The extension - vscode-commitlint will helpful!

Troubleshooting

  1. Switch to the VSCode OUTPUT tab, select git-tools.
  2. Copy all the output. Before sharing it, make sure you have removed all private information.

Debug instruction

Contribution

  1. The vscode task needs to install the extension - vscode-tsl-problem-matcher.
  2. The effect of code changes needs to reactivate the extension. Just restart the task.

Team Members

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

Related Projects

About

💬Conventional Commits for VSCode.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 94.3%
  • JavaScript 5.6%
  • Shell 0.1%