我如何开始一个没有血统的干净的分支,然后逐步提交文件?

我有一个与GIT版本的PHP框架,我正在计划对其核心进行几个(激烈的)变化。

我想要做的就是开始在新的分支上开发新的核心,但是由于这个改变可能也需要在文件系统上进行一些重构,所以我想尽可能干净地开始这个新的分支。

我想干净的分支只包含核心文件。 当我完成我的更改时,我想从框架中将其余的模块逐个添加到工作目录中,但是如果在主服务器上进行更改,请保留合并function。

我怎样才能做到这一点?

没有祖先的分支

你要的是–orphan标志。 例如:

git checkout master git checkout --orphan foo # Unstage all the files in your working tree. git rm --cached $(git ls-files) 

会创build一个没有祖先的新分支foo ,但是当你调用命令(在这个例子中是分支)时,它将保留当前工作树。 然后,您可以修改您的工作树来适应,然后进行提交以重新开始该分支的历史logging。

增量式文件分段

要执行增量添加到您的历史logging,使用git add来分阶段为每个提交所需的文件。 git-add(1)手册页有这个select添加文件的说法:

可以给Fileglobs(如* .c)添加所有匹配的文件。 还可以给出一个主要的目录名称(例如,添加dir / file1和dir / file2的目录)以recursion方式添加目录中的所有文件。

你可以做的只是移动到一个新的分支, git co -b my_new_branch ,清理你的代码,并保持你需要的东西,最后提交。 这个提交, my_new_branch上的第一个,将是一个干净的

如果您必须使用旧版本的git:

  mkdir some_dir cd some_dir git init echo a>some_file; git add some_file; git commit -m 'initial commit' cd .. git fetch ./some_dir/ master:new_independent_branch rm -rf some_dir