如何启动没有祖先的干净分支,然后逐步提交文件?

时间:2012-07-14 22:20:34

标签: git branch

我有一个使用GIT版本的PHP框架,我正计划对其核心进行一些(大幅)更改。

我想要做的是在新分支中开始研究新核心,但由于这种变化可能需要对文件系统进行一些重组,所以我希望尽可能干净地启动这个新分支。

我希望clean分支仅包含核心文件。当我完成更改时,我希望将其余的模块从框架逐个添加到工作目录中,但如果我在master上进行更改,则保持合并的能力。

我该怎么做?

3 个答案:

答案 0 :(得分:89)

没有祖先的分支

您想要 - 孤儿标志。例如:

git checkout master
git checkout --orphan foo

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

将创建一个名为 foo 且没有祖先的新分支,但它会保留当前工作树,无论您在调用命令时所处的分支(在本例中为 master) 分支)。然后,您可以修改您的工作树以适应,然后进行提交以重新开始该分支的历史记录。

文件的增量分段

要对历史记录执行增量添加,请使用git add仅为每次提交暂存所需的文件。 git-add(1)手册页有关于有选择地添加文件的说法:

  

可以给出Fileglobs(例如* .c)来添加所有匹配的文件。还可以给出一个前导目录名称(例如,添加dir / file1和dir / file2的目录)来添加所有文件。   目录,递归。

答案 1 :(得分:-3)

如果你必须使用旧版本的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

答案 2 :(得分:-4)

你可以做的只是转移到一个新的分支,git co -b my_new_branch,清理你的代码并保留你需要的东西,最后提交。该提交是my_new_branch上的第一个提交,然后是 clean