代码之家  ›  专栏  ›  技术社区  ›  Ram Rachum

Git从另一个分支开始分支而不跟踪

git
  •  8
  • Ram Rachum  · 技术社区  · 10 年前

    我想创建一个分支 foo (并将其签出)将在与 origin/bar ,但我目前没有 原点/条 已签出。有没有一条班轮可以做到这一点?

    4 回复  |  直到 10 年前
        1
  •  10
  •   user743382 user743382    10 年前

    您可以在一个命令中完成: git checkout 允许 git branch --no-track 选项。

    git checkout -b foo --no-track origin/bar
    
        2
  •  1
  •   Igal S.    10 年前

    这应该可以做到:

    git branch foo origin/bar
    git checkout foo
    

    如果你坚持使用单线:

    git checkout -b foo origin/bar
    
        3
  •  1
  •   Dan Lowe    10 年前

    这取决于您是否希望新分支跟踪远程 origin/bar .

    要跟踪遥控器:

    git checkout -b foo origin/bar
    

    要不跟踪遥控器:

    git checkout -b foo --no-track origin/bar
    

    (您可以随时稍后添加跟踪关系。)

        4
  •  -1
  •   CodeWizard    10 年前

    Git有一个标志用于创建这样的分支:

    https://git-scm.com/docs/git-checkout/

    --orphan
    创建一个新的孤立分支,名为,从开始并切换到它。在这个新分支上进行的第一次提交将没有父级,它将成为与所有其他分支和提交完全断开的新历史的根。

    索引和工作树将进行调整,就像您以前运行过一样 git checkout <start_point> .

    这允许您开始新的历史记录 记录一组路径,类似于通过轻松运行 git commit -a 以使根提交。

    当您希望从提交中发布树而不公开其完整历史记录时,这将非常有用。您可能希望这样做以发布当前树为的项目的开源分支 clean ,但其完整历史包含专有或以其他方式占用的代码位。

    如果要启动一个断开连接的历史记录,记录一组与的路径完全不同的路径,则应在创建孤立分支后立即运行 git rm -rf . 从工作树的顶层开始。之后,您将准备好准备新文件,重新填充工作树,从其他地方复制它们,提取tarball等。