1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-08-06 22:33:07 +02:00

Add new command "Checkout previous branch"

This commit is contained in:
kyu08
2025-07-13 00:42:01 +09:00
committed by Stefan Haller
parent 7d92260050
commit 5b1292006d
5 changed files with 66 additions and 0 deletions

View File

@ -497,6 +497,7 @@ type KeybindingBranchesConfig struct {
CopyPullRequestURL string `yaml:"copyPullRequestURL"`
CheckoutBranchByName string `yaml:"checkoutBranchByName"`
ForceCheckoutBranch string `yaml:"forceCheckoutBranch"`
CheckoutPreviousBranch string `yaml:"checkoutPreviousBranch"`
RebaseBranch string `yaml:"rebaseBranch"`
RenameBranch string `yaml:"renameBranch"`
MergeIntoCurrentBranch string `yaml:"mergeIntoCurrentBranch"`
@ -957,6 +958,7 @@ func GetDefaultConfig() *UserConfig {
ViewPullRequestOptions: "O",
CheckoutBranchByName: "c",
ForceCheckoutBranch: "F",
CheckoutPreviousBranch: "-",
RebaseBranch: "r",
RenameBranch: "R",
MergeIntoCurrentBranch: "M",

View File

@ -89,6 +89,11 @@ func (self *BranchesController) GetKeybindings(opts types.KeybindingsOpts) []*ty
Description: self.c.Tr.CheckoutByName,
Tooltip: self.c.Tr.CheckoutByNameTooltip,
},
{
Key: opts.GetKey(opts.Config.Branches.CheckoutPreviousBranch),
Handler: self.checkoutPreviousBranch,
Description: self.c.Tr.CheckoutPreviousBranch,
},
{
Key: opts.GetKey(opts.Config.Branches.ForceCheckoutBranch),
Handler: self.forceCheckout,
@ -483,6 +488,11 @@ func (self *BranchesController) forceCheckout() error {
return nil
}
func (self *BranchesController) checkoutPreviousBranch() error {
self.c.LogAction(self.c.Tr.Actions.CheckoutBranch)
return self.c.Helpers().Refs.CheckoutRef("-", types.CheckoutRefOptions{})
}
func (self *BranchesController) checkoutByName() error {
self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.BranchName + ":",

View File

@ -139,6 +139,7 @@ type TranslationSet struct {
ForceCheckoutTooltip string
CheckoutByName string
CheckoutByNameTooltip string
CheckoutPreviousBranch string
RemoteBranchCheckoutTitle string
RemoteBranchCheckoutPrompt string
CheckoutTypeNewBranch string
@ -1182,6 +1183,7 @@ func EnglishTranslationSet() *TranslationSet {
ForceCheckoutTooltip: "Force checkout selected branch. This will discard all local changes in your working directory before checking out the selected branch.",
CheckoutByName: "Checkout by name",
CheckoutByNameTooltip: "Checkout by name. In the input box you can enter '-' to switch to the last branch.",
CheckoutPreviousBranch: "Checkout previous branch",
RemoteBranchCheckoutTitle: "Checkout {{.branchName}}",
RemoteBranchCheckoutPrompt: "How would you like to check out this branch?",
CheckoutTypeNewBranch: "New local branch",

View File

@ -0,0 +1,51 @@
package branch
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var CheckoutPreviousBranch = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Checkout to the previous branch using the checkout previous branch functionality",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.
CreateNCommits(3).
NewBranch("previous-branch").
EmptyCommit("previous commit").
Checkout("master").
EmptyCommit("master commit")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Branches().
Focus().
Lines(
Contains("master").IsSelected(),
Contains("previous-branch"),
)
// Press the checkout previous branch key (should checkout previous-branch)
t.Views().Branches().
Press(keys.Branches.CheckoutPreviousBranch).
Lines(
Contains("previous-branch").IsSelected(),
Contains("master"),
)
// Verify we're on previous-branch
t.Git().CurrentBranchName("previous-branch")
// Press again to go back to master
t.Views().Branches().
Press(keys.Branches.CheckoutPreviousBranch).
Lines(
Contains("master").IsSelected(),
Contains("previous-branch"),
)
// Verify we're back on master
t.Git().CurrentBranchName("master")
},
})

View File

@ -40,6 +40,7 @@ var tests = []*components.IntegrationTest{
bisect.Skip,
branch.CheckoutAutostash,
branch.CheckoutByName,
branch.CheckoutPreviousBranch,
branch.CreateTag,
branch.Delete,
branch.DeleteMultiple,