【问题标题】:git branch -f and git checkout in one stepgit branch -f 和 git checkout 一步到位
【发布时间】:2017-02-15 08:06:07
【问题描述】:

有时我需要将一个分支移动到我当前的提交中。我有两种方法可以做到:

git checkout foo
git reset --hard HEAD@{1}

我不喜欢这样,因为这样我必须更改工作目录两次。更好的选择是:

git branch -f foo
git checkout foo

这样更好,但我想一步到位,就像我切换到新分支git checkout -b时一样。不幸的是,git checkout -f -b foo 不起作用。

【问题讨论】:

    标签: git git-branch git-checkout


    【解决方案1】:

    别名方法很好,但请注意git checkout -B 与单个原子事务的作用相同:

    如果给定-B,如果不存在则创建; 否则,它被重置。这是交易的等价物

        $ git branch -f <branch> [<start point>]
        $ git checkout <branch>
    

    也就是说,除非“git”,否则不会重置/创建分支 结帐”是成功的。

    (不清楚为什么专门拼写为-B 而不是-f -b,但关键是这个 内置在git checkout 中的。)

    【讨论】:

      【解决方案2】:

      您可以按照 Scott Weldon 的建议进行操作,通过编辑 Git 配置文件来创建别名,但您也可以使用 git config 添加别名:

      git config alias.branchout "! git branch -f $1; git checkout $1; true"
      

      然后以同样的方式使用它:

      git branchout foo
      

      请注意,您始终可以将命令名称 branchout 更改为您想要的任何名称,以缩短键入时间。

      【讨论】:

        【解决方案3】:

        您可以使用别名。将此添加到您的 Git 配置文件中:

        [alias]
          branchout = "! git branch -f $1; git checkout $1; true"
        

        然后使用:

        git branchout foo
        

        【讨论】:

          猜你喜欢
          • 2012-04-17
          • 1970-01-01
          • 2011-12-20
          • 2020-03-05
          • 2021-04-14
          • 1970-01-01
          • 2015-03-24
          • 2018-08-31
          • 2018-06-25
          相关资源
          最近更新 更多