diff --git a/pkg/commands/git.go b/pkg/commands/git.go index 588cec80e..00ec296de 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -327,8 +327,8 @@ func (c *GitCommand) ResetToCommit(sha string, strength string) error { } // NewBranch create new branch -func (c *GitCommand) NewBranch(name string) error { - return c.OSCommand.RunCommand("git checkout -b %s", name) +func (c *GitCommand) NewBranch(name string, baseBranch string) error { + return c.OSCommand.RunCommand("git checkout -b %s %s", name, baseBranch) } // CurrentBranchName is a function. diff --git a/pkg/commands/git_test.go b/pkg/commands/git_test.go index fabeb6375..779e31f68 100644 --- a/pkg/commands/git_test.go +++ b/pkg/commands/git_test.go @@ -636,12 +636,12 @@ func TestGitCommandNewBranch(t *testing.T) { gitCmd := NewDummyGitCommand() gitCmd.OSCommand.command = func(cmd string, args ...string) *exec.Cmd { assert.EqualValues(t, "git", cmd) - assert.EqualValues(t, []string{"checkout", "-b", "test"}, args) + assert.EqualValues(t, []string{"checkout", "-b", "test", "master"}, args) return exec.Command("echo") } - assert.NoError(t, gitCmd.NewBranch("test")) + assert.NoError(t, gitCmd.NewBranch("test", "master")) } // TestGitCommandDeleteBranch is a function. diff --git a/pkg/gui/branches_panel.go b/pkg/gui/branches_panel.go index 90d8a2758..44cd9415b 100644 --- a/pkg/gui/branches_panel.go +++ b/pkg/gui/branches_panel.go @@ -220,7 +220,10 @@ func (gui *Gui) getCheckedOutBranch() *commands.Branch { } func (gui *Gui) handleNewBranch(g *gocui.Gui, v *gocui.View) error { - branch := gui.getCheckedOutBranch() + branch := gui.getSelectedBranch() + if branch == nil { + return nil + } message := gui.Tr.TemplateLocalize( "NewBranchNameBranchOff", Teml{ @@ -228,7 +231,7 @@ func (gui *Gui) handleNewBranch(g *gocui.Gui, v *gocui.View) error { }, ) gui.createPromptPanel(g, v, message, "", func(g *gocui.Gui, v *gocui.View) error { - if err := gui.GitCommand.NewBranch(gui.trimmedContent(v)); err != nil { + if err := gui.GitCommand.NewBranch(gui.trimmedContent(v), branch.Name); err != nil { return gui.createErrorPanel(g, err.Error()) } gui.refreshSidePanels(g)