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:
@ -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",
|
||||
|
@ -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 + ":",
|
||||
|
@ -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",
|
||||
|
51
pkg/integration/tests/branch/checkout_previous_branch.go
Normal file
51
pkg/integration/tests/branch/checkout_previous_branch.go
Normal 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")
|
||||
},
|
||||
})
|
@ -40,6 +40,7 @@ var tests = []*components.IntegrationTest{
|
||||
bisect.Skip,
|
||||
branch.CheckoutAutostash,
|
||||
branch.CheckoutByName,
|
||||
branch.CheckoutPreviousBranch,
|
||||
branch.CreateTag,
|
||||
branch.Delete,
|
||||
branch.DeleteMultiple,
|
||||
|
Reference in New Issue
Block a user