Repository navigation
Releases: PGshen/vs-idea-gittool
Releases · PGshen/vs-idea-gittool
Release list
v0.4.0
IdeaGitTool 0.4.0
IdeaGitTool brings the IntelliJ / Rebased git client to VS Code: the Git log with its commit graph, the Commit tool window (changelists, Shelf, Stash, Branches), IntelliJ's three-pane merge window, interactive rebase, Local History and the IntelliJ dialogs for push, update, merge and rebase.
This release makes conflict resolution feel like IntelliJ and improves readability in low-contrast themes.
Highlights
Conflicts open where you need them
- When an operation stops with conflicts, the Conflicts dialog opens right away. This covers merge, rebase, cherry-pick, revert, pull, Update Project, checkout, Smart Merge / Smart Checkout, Unstash and Unshelve. A notification only appears if you close the dialog with conflicts left.
- Restored local changes (Smart Merge, Smart Checkout, Update Project) use IntelliJ's wording. For example: "Uncommitted changes that were saved before merge have conflicts with files from feature". Your saved changes are on the left of the merge window.
- Resolve Conflicts… (IdeaGitTool) in the editor title, and as a CodeLens above the first conflict marker of a conflicted file.
- One conflict UI instead of two: on the first conflict in a workspace, IdeaGitTool asks whether it should handle conflicts instead of VS Code's built-in conflict UI.
- It changes nothing without your consent.
- The command Restore VS Code's Built-in Merge Conflict UI puts the original settings back.
- Setting:
ideagittool.merge.handleConflicts(ask/always/never).
Better readability in every theme
- Git log: the selected commit has an accent bar and a stronger selection color, also when the log has no focus. The current-branch highlight is lighter, and like IntelliJ it only shows when the log also contains commits outside the current branch.
- Popup menus (branch actions, context menus) have a visible border, their own shadow and a stronger highlighted item. This applies in themes whose menu matches the sidebar, such as Tokyo Night Storm.
Smaller improvements
- File type icons for Go, Rust, Python, Ruby, PHP, Kotlin, Scala, Dart, Lua, R, Svelte and Elixir.
Behavior changes
- Once all conflicts of a merge are resolved, the merge is committed. Once all conflicts of a rebase are resolved, the rebase continues. This is IntelliJ's behavior. Cherry-pick and revert still wait for you to click Continue.
- Smart Merge no longer tries to restore your local changes in the middle of a conflicted merge, which used to fail with "Merge failed". Your changes are restored after the merge is finished.
Known limitations
- VS Code's own Resolve in Merge Editor button, from the built-in Git extension, still appears in conflicted files. There is no setting that hides it.
- After a restored stash had conflicts, the stash is kept. Delete it yourself once you are done, as in IntelliJ.
Install
- Download
ideagittool-0.4.0.vsixand install it in one of these ways:- In VS Code: Extensions view →
⋯→ Install from VSIX… - From a terminal:
code --install-extension ideagittool-0.4.0.vsix
- In VS Code: Extensions view →
- Requires VS Code 1.90+ and Git 2.25+. Drop / Extract Selected Changes needs Git 2.40+.
Full changelog: see CHANGELOG.md.
IdeaGitTool 0.4.0(中文)
IdeaGitTool 把 IntelliJ / Rebased 的 Git 客户端带到 VS Code,包括:
- 带提交图的 Git 日志;
- Commit 工具窗口(changelist、Shelf、Stash、Branches);
- IntelliJ 的三栏合并窗口和交互式 Rebase;
- Local History;
- Push、Update、Merge、Rebase 等 IntelliJ 对话框。
这一版让冲突处理的体验与 IntelliJ 一致,并改善了低对比度主题下的可读性。
主要更新
冲突处理
- 冲突对话框自动弹出: 操作因冲突停下时,Conflicts 对话框直接弹出。适用于 merge、rebase、cherry-pick、revert、pull、Update Project、签出、Smart Merge / Smart Checkout、Unstash、Unshelve。只有关闭对话框后仍有冲突没解决,才会弹出通知。
- 恢复本地改动时出的冲突: Smart Merge、Smart Checkout、Update Project 恢复本地改动时出现冲突,提示文字与 IntelliJ 一致,例如 "Uncommitted changes that were saved before merge have conflicts with files from feature"。合并窗口左栏是你之前保存的改动。
- 编辑器里的入口: 冲突文件的编辑器标题栏和第一个冲突标记上方,新增 Resolve Conflicts… (IdeaGitTool)。
- 避免两套冲突界面: 每个工作区第一次遇到冲突时,会询问是否由 IdeaGitTool 接管冲突处理,代替 VS Code 自带的冲突界面。
- 未经你同意不会修改任何设置。
- 命令 Restore VS Code's Built-in Merge Conflict UI 可恢复原设置。
- 对应设置:
ideagittool.merge.handleConflicts(ask/always/never)。
各种主题下更清晰
- Git 日志: 选中的提交左侧有强调竖条,选中色更明显,失去焦点时也看得清。当前分支高亮调淡;和 IntelliJ 一样,只有日志中还有不属于当前分支的提交时才显示。
- 弹出菜单: 分支操作菜单、右键菜单有清晰的边框和阴影,高亮项更明显。在菜单颜色和侧边栏一样的主题(如 Tokyo Night Storm)下也能看清。
其他改进
- 新增 Go、Rust、Python、Ruby、PHP、Kotlin、Scala、Dart、Lua、R、Svelte、Elixir 的文件图标。
行为变化
- 自动继续: merge 的冲突全部解决后会自动完成合并提交;rebase 的冲突全部解决后会自动继续。这与 IntelliJ 一致。cherry-pick 和 revert 仍需手动点 Continue。
- 修复 Smart Merge: 以前合并本身有冲突时,Smart Merge 会在合并未完成时恢复本地改动,结果报 "Merge failed"。现在会在合并完成后再恢复。
已知限制
- VS Code 自带 Git 扩展的 Resolve in Merge Editor 按钮仍会出现在冲突文件中,没有设置可以隐藏它。
- 恢复 stash 时出现冲突的话,stash 会保留,处理完后需要自己删除(与 IntelliJ 一致)。
安装
- 下载
ideagittool-0.4.0.vsix,任选一种方式安装:- 在 VS Code 扩展视图点
⋯→ Install from VSIX…; - 或在终端运行
code --install-extension ideagittool-0.4.0.vsix。
- 在 VS Code 扩展视图点
- 需要 VS Code 1.90+ 和 Git 2.25+;Drop / Extract Selected Changes 需要 Git 2.40+。
完整更新记录见 CHANGELOG.md。