sourcegit-scm / sourcegit

Windows/macOS/Linux GUI client for GIT users
MIT License
610 stars 66 forks source link

[Feature Request] Support multi worktrees #205

Closed prime167 closed 1 week ago

prime167 commented 1 week ago

Manage multiple working trees attached to the same repository.

A git repository can support multiple working trees, allowing you to check out more than one branch at a time.

sourcegit can now open a worktree without any issue. I suggest add Create,Remove and prune worktrees functions worktree 对于多分支开发非常有用,避免频繁切换分支的麻烦。 建议增加 管理 worktee 的功能,包括从本地分支创建一个worktree,删除 worktree,清除无 效worktree

谢谢!

love-linger commented 1 week ago

我提交了一版这一功能的实现。你可下载 https://github.com/sourcegit-scm/sourcegit/actions/runs/9694914222 体验该功能

prime167 commented 1 week ago

辛苦! 我试了一下新建worktree,分支不存在是可以的,已存在的分支不行,提示已存在。 以下是GitExtensions的新建worktree的截图。供参考 图片

love-linger commented 1 week ago

提交了一版新的修改,你可下载 https://github.com/sourcegit-scm/sourcegit/actions/runs/9706084089 测试

prime167 commented 1 week ago

3

还是不行。输入分支名后,不点确定就提示分支存在了。 还是希望把界面再改一改,能够选择已有分支或者新建分支,路径根据主分支路径自动生成

love-linger commented 1 week ago

又又又又提交了一版……

参考你给出的截图,分两种模式:一是使用现有分支 image 一是创建新分支 image

你可下载 https://github.com/sourcegit-scm/sourcegit/actions/runs/9707282033 测试该功能

prime167 commented 1 week ago

谢谢,动作好快!这一版距离我的预想很近了。

我觉得是先选择或创建分支再选路径,路径名根据分支名走。

相比存储路径,大多数人更关心的是分支名。分支可能是公开的、已经创建的,但目录肯定是只有自己知道、关心(其实也没有那么关心,按照统一的规则生成即可,比如下面的用 _ 连接)

Location 最好可以预填充,当然用户可以选择其他目录

如上面所说,比如我的主目录是d:\test

love-linger commented 1 week ago

我觉得是先选择或创建分支再选路径,路径名根据分支名走

在这个软件中,不会这样设计。因为git worktree add命令中只有path是必填项。本地分支名反而是选填参数,缺省时使用路径文件夹名。且如果手动指定本地分支名时,可选两种方式:

该软件会尽量使图形操作与原始命令操作一致

love-linger commented 1 week ago

我现在正在考虑在选择Create New Branch后,会重新使用-b <branch_name>来保证本地没有该名称的分支存在。这样与使用本地已存在分支做出区别。同时也会体现-b-B的差异。

prime167 commented 1 week ago

在这个软件中,不会这样设计。因为git worktree add命令中只有path是必填项。本地分支名反而是选填参数,缺省时使用路径文件夹名

该软件会尽量使图形操作与原始命令操作一致

好的,我的思路更多是从图形界面出发的,也受了其他软件先入为主的影响。

love-linger commented 1 week ago

其实可以在路径中直接填写相对路径,比如:想新建一个名为test的分支并以worktree方式checkout到新的目录。那路径就可以直接填写../test并启用Create New Branch(后面该方式会改为默认选中方式),不需要填写分支名。

prime167 commented 1 week ago

没问题,这样自由度更大一些,也更符合原始命令

我测试了上面的最新版,我比较喜欢的一个功能是如果一个分支已经签出到了一个 worktree,双击会自动在新的标签打开这个分支,否则在当前标签切换分支。Fork 和 GitExtensions 都会报错