2012-01-08 58 views
1

两次在git中,我打算从master分支,但是不小心从我当前的分支中分支出来。这意味着我的第二个分支的请求包括第一个分支中的所有提交,这些提交还没有被合并。避免从git中的分支跳转

有没有一种方法可以在从非主分支分支之前再次检查确认?

回答

7

为什么不提供第二个参数来git checkout -b

$ git checkout -b newbranch master 

第二个参数是从哪里分支。

+0

+1。直截了当,利用现有机制,切中要害。 – fge 2012-01-08 17:22:19

0

如果您运行

git branch 

你得到的东西是这样的:

branch1 
    branch2 
* master 

和分支在您当前所在的星痕。

+0

是的,我知道 - 事情是我只是在不考虑它的情况下运行'git checkout -b'。我想要一个自动警告在从分支退房时闪烁。 – 2012-01-08 09:46:32

+0

啊,对不起。 – BananaNeil 2012-01-08 12:33:29

0

你可以编写bash脚本,而不是git。

在创建新分支时,它会检查你是否在主人。 如果没有,它就会停止(或请您继续),如果是,它会执行真正的Git

例如,你可以把它称呼gitcheckout

2

假设你正在使用Unix类型的外壳,这就是你能适应一个简单的函数:

function git() { 
    if [ $# -eq 3 -a "$1" = "checkout" -a "$2" = "-b" ] ; then 
     curbranch=$(git name-rev --name-only HEAD) 
     if [ "$curbranch" != "master" ] ; then 
      echo "You're on branch $curbranch." 
      echo "Confirm new branch creation? [yn]" 
      read a 
      if [ "$a" != "y" ] ; then 
       echo Aborted. 
       return 1 
      fi 
     fi 
    fi 
    /usr/bin/git [email protected] 
} 

只会在git checkout -b one_other_param触发。

注意:如果您处于“分离头部”状态,这可能无法按预期工作。我相信git name-rev不会提供正确的信息。

+0

不错。当然,你也可以修改它,这样它只会在当前分支!= master时提示。 – Avi 2012-01-08 12:36:28

1

$(__git_ps1)添加到您的命令提示符(您的shell rc文件中的PS1变量),并且您将始终看到您当前的分支是什么。