我想创建一个名为foo
的分支(并将其检出),它将从与origin/bar
相同的提交开始,但我目前没有检出origin/bar
。是否有一行命令可以实现这个目标?
我想创建一个名为foo
的分支(并将其检出),它将从与origin/bar
相同的提交开始,但我目前没有检出origin/bar
。是否有一行命令可以实现这个目标?
您可以用一个命令完成这个操作:git checkout
允许直接指定 git branch
的 --no-track
选项。
git checkout -b foo --no-track origin/bar
--track
有什么不同吗? - MarkHu`git checkout -b foo origin/bar --no-track`
或者使用下面的命令:`git switch -c foo origin/bar --no-track`
- Honza这取决于您是否希望您的新分支跟踪远程 origin/bar
。
要跟踪远程分支:
git checkout -b foo origin/bar
git checkout -b foo --no-track origin/bar
git branch foo origin/bar
git checkout foo
如果您坚持一行写:
git checkout -b foo origin/bar
https://git-scm.com/docs/git-checkout/
--orphan
创建一个名为的新孤立分支,从开始,并切换到它。在这个新分支上进行的第一次提交将没有父级,它将是一个与所有其他分支和提交完全断开连接的新历史记录的根。索引和工作树会被调整,就好像您之前运行了
git checkout <start_point>
一样。这使您能够开始一个新的历史记录,记录类似于的一组路径,只需轻松运行
git commit -a
即可进行根提交。当您想要发布某个提交的树而不暴露其完整历史记录时,这可能非常有用。您可能希望这样做,以发布项目的开源分支,其当前树为
clean
,但其完整历史记录包含专有或受限制的代码片段等。如果您想要开始记录与完全不同的一组路径的断开历史记录,则应该在创建孤立分支后立即清除索引和工作树,方法是从工作树的顶层运行
git rm -rf .
。之后,您将准备好通过从其他地方复制文件、提取tarball等来准备您的新文件,重新填充工作树。
origin/bar
作为检出,因为它不是(常规的、本地的)分支。你可以检出远程跟踪分支所指向的提交。通常你想要使用--no-track
,就像hvd已经回答的那样。 - torek