我如何开始一个没有血统的干净的分支,然后逐步提交文件?
我有一个与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