Always confirm before pushing the selected branch (#3)

The Branches panel's push keybinding pushed the highlighted branch
immediately, with no confirmation - easy to misclick a different
branch than intended since it targets whatever's selected, not the
checked-out one. Add a confirmation dialog naming the branch before
every push, regardless of upstream state.

Co-authored-by: Khanh Truong <khanh_t@arbin.com>
This commit is contained in:
Trương Duy Khánh 2026-08-10 10:56:01 +07:00 committed by GitHub
parent 2e5667dd80
commit 619bbf71c7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 24 additions and 11 deletions

View file

@ -198,7 +198,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
| `` R `` | Rename branch | |
| `` u `` | View upstream options | View options relating to the branch's upstream e.g. setting/unsetting the upstream and resetting to the upstream. |
| `` <ctrl+t> `` | Open external diff tool (git difftool) | |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` p `` | Pull selected branch | Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` 0 `` | Focus main view | |
| `` <enter> `` | View commits | |

View file

@ -396,7 +396,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
| `` R `` | ブランチ名を変更 | |
| `` u `` | アップストリームオプションを表示 | ブランチのアップストリームに関連するオプションを表示します(例:アップストリームの設定/解除やアップストリームへのリセット)。 |
| `` <ctrl+t> `` | 外部差分ツールを開くgit difftool | |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` p `` | Pull selected branch | Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` 0 `` | メインビューにフォーカス | |
| `` <enter> `` | コミットを表示 | |

View file

@ -230,7 +230,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
| `` R `` | 브랜치 이름 변경 | |
| `` u `` | View upstream options | View options relating to the branch's upstream e.g. setting/unsetting the upstream and resetting to the upstream. |
| `` <ctrl+t> `` | Open external diff tool (git difftool) | |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` p `` | Pull selected branch | Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` 0 `` | Focus main view | |
| `` <enter> `` | 커밋 보기 | |

View file

@ -121,7 +121,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
| `` R `` | Hernoem branch | |
| `` u `` | View upstream options | View options relating to the branch's upstream e.g. setting/unsetting the upstream and resetting to the upstream. |
| `` <ctrl+t> `` | Open externe diff applicatie (git difftool) | |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` p `` | Pull selected branch | Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` 0 `` | Focus main view | |
| `` <enter> `` | Bekijk commits | |

View file

@ -182,7 +182,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
| `` R `` | Zmień nazwę gałęzi | |
| `` u `` | Pokaż opcje upstream | Pokaż opcje dotyczące upstream gałęzi, np. ustawianie/usuwanie upstream i resetowanie do upstream. |
| `` <ctrl+t> `` | Otwórz zewnętrzne narzędzie różnic (git difftool) | |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` p `` | Pull selected branch | Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` 0 `` | Focus main view | |
| `` <enter> `` | Pokaż commity | |

View file

@ -113,7 +113,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
| `` R `` | Renomear branch | |
| `` u `` | View upstream options | View options relating to the branch's upstream e.g. setting/unsetting the upstream and resetting to the upstream. |
| `` <ctrl+t> `` | Abrir ferramenta de diff externa (git difftool) | |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` p `` | Pull selected branch | Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` 0 `` | Focar visualização principal | |
| `` <enter> `` | Ver commits | |

View file

@ -230,7 +230,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
| `` R `` | Переименовать ветку | |
| `` u `` | View upstream options | View options relating to the branch's upstream e.g. setting/unsetting the upstream and resetting to the upstream. |
| `` <ctrl+t> `` | Open external diff tool (git difftool) | |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` p `` | Pull selected branch | Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` 0 `` | Focus main view | |
| `` <enter> `` | Просмотреть коммиты | |

View file

@ -247,7 +247,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
| `` R `` | 重命名分支 | |
| `` u `` | 查看上游选项 | 查看与分支上游相关的选项,例如设置/取消设置上游和重置为上游。 |
| `` <ctrl+t> `` | 使用外部差异比较工具(git difftool) | |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` p `` | Pull selected branch | Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` 0 `` | 聚焦主视图 | |
| `` <enter> `` | 查看提交 | |

View file

@ -306,7 +306,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
| `` R `` | 重新命名分支 | |
| `` u `` | 檢視遠端設定 | 檢視有關遠端分支的設定(例如重設至遠端) |
| `` <ctrl+t> `` | 開啟外部差異工具 (git difftool) | |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` P `` | Push selected branch | Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` p `` | Pull selected branch | Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch. |
| `` 0 `` | Focus main view | |
| `` <enter> `` | 檢視提交 | |

View file

@ -440,7 +440,18 @@ func (self *BranchesController) press(selectedBranch *models.Branch) error {
}
func (self *BranchesController) push(branch *models.Branch) error {
return self.pushBranch(branch)
self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.PushSelectedBranch,
Prompt: utils.ResolvePlaceholderString(
self.c.Tr.PushSelectedBranchPrompt,
map[string]string{"selectedBranchName": branch.Name},
),
HandleConfirm: func() error {
return self.pushBranch(branch)
},
})
return nil
}
func (self *BranchesController) pull(branch *models.Branch) error {

View file

@ -67,6 +67,7 @@ type TranslationSet struct {
PullTooltip string
PushSelectedBranch string
PushSelectedBranchTooltip string
PushSelectedBranchPrompt string
PullSelectedBranch string
PullSelectedBranchTooltip string
PullFailedInOtherWorktree string
@ -1227,7 +1228,8 @@ func EnglishTranslationSet() *TranslationSet {
Push: "Push",
PushTooltip: "Push the current branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch.",
PushSelectedBranch: "Push selected branch",
PushSelectedBranchTooltip: "Push the selected branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch.",
PushSelectedBranchTooltip: "Push the selected branch to its upstream branch, after confirming. If no upstream is configured, you will be prompted to configure an upstream branch.",
PushSelectedBranchPrompt: "Push branch '{{.selectedBranchName}}' to its upstream?",
PullSelectedBranch: "Pull selected branch",
PullSelectedBranchTooltip: "Pull the selected branch's upstream branch into it, via its linked worktree. If no upstream is configured, you will be prompted to configure an upstream branch.",
PullFailedInOtherWorktree: "Switch to this branch's worktree to resolve the problem.",