63

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

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

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

我怎样才能做到这一点?

4

3 回答 3

129

没有祖先的分支

你想要--orphan标志。例如:

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 的 dir)以递归方式添加目录中的所有文件。

于 2012-07-14T22:52:22.920 回答
-4

如果您必须使用旧版本的 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
于 2014-09-02T06:18:42.297 回答
-5

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

于 2012-07-14T22:44:50.523 回答