我正在使用命令外壳程序,使用命令git branch -b“ branchname”创建git分支。分支将是空的,没有文件,还是会从master创建分支?当我在文件夹上执行dir时,我会看到文件列表。
谢谢!
答案 0 :(得分:2)
当您运行git branch X
时,分支X
是在当前签出的提交(即HEAD
)上创建的。如果您当前是主管理员,则可能为master
;您可以使用git rev-parse HEAD
进行验证。
请注意,git branch X
不会签出分支。创建分支后,必须使用git checkout X
。要将两者组合成一个命令,可以使用git checkout -b X
。
要在特定的提交处创建分支,请为git branch
或git checkout -b
提供revspec作为第二个参数:
git branch X master
:在master
分支的最新提交时创建分支X。git checkout -b X master
:在master
分支的最新提交时创建并签出分支X。此时X
和master
是相同的:它们都指向相同的提交,因此包含相同的历史记录并在签出时显示相同的文件。
如果要创建一个与现有分支没有任何关系的新分支,则可以使用git checkout --orphan X master
:
--orphan <new_branch>
从
<new_branch>
开始创建一个名为<start_point>
的新孤立分支,然后切换到该分支。在这个新分支上进行的第一次提交将没有父母,这将是与所有其他分支和提交完全脱节的新历史的根源。调整索引和工作树就像以前运行
git checkout <start_point>
一样。这样一来,您就可以轻松运行<start_point>
来进行根提交,从而开始一个新的历史记录,该记录记录了一组类似于git commit -a
的路径。当您要通过提交发布树而不公开其完整历史记录时,这可能很有用。您可能想要执行此操作,以发布项目的开放源分支,该分支的当前树是“干净的”,但是其完整历史记录包含专有的代码或以其他方式妨碍代码的代码。
如果您要启动一个断开的历史记录,该历史记录记录的一组路径与
<start_point>
中的路径完全不同,则应在运行孤儿分支后通过运行{清除索引和工作树{1}}从工作树的顶层开始。然后,您将准备好准备新文件,重新填充工作树,从其他位置复制它们,提取压缩包等。