Git 将文件隔离到不同的分支中,并保留其历史记录

Git 将文件隔离到不同的分支中,并保留其历史记录,git,git-branch,Git,Git Branch,我正在处理git的一个分支,它有两个文件a.c和B.c 我正在创建一个补丁,它对A.c和B.c 但是现在我希望对B.c所做的所有更改都与此分支隔离,并创建为一个不同的分支,此分支还应该具有B.c的所有历史记录 这看起来是一个明显的用例,因为我们可以在中间确定 B.C./COD>是一个非常关键的文件,所以需要一个不同的分支,因为有些人可能需要对它进行工作。 < P>假设您已经提交了A.C和B.C,您可以: 创建一个新分支 git checkout -b newBranch 最终结果是一

我正在处理git的一个分支,它有两个文件
a.c
B.c

我正在创建一个补丁,它对
A.c
B.c

但是现在我希望对
B.c
所做的所有更改都与此分支隔离,并创建为一个不同的分支,此分支还应该具有
B.c
的所有历史记录


这看起来是一个明显的用例,因为我们可以在中间确定<代码> B.C./COD>是一个非常关键的文件,所以需要一个不同的分支,因为有些人可能需要对它进行工作。

< P>假设您已经提交了A.C和B.C,您可以:

  • 创建一个新分支

    git checkout -b newBranch
    

最终结果是一个新的分支只有
B.c
补丁,Git中
B.c

分支的完整历史记录通常是存储库级别的-也就是说,您通常不会创建一个单独的分支来跟踪特定文件的历史记录。我的意思是,我想创建一个包含B.c的单独分支,它还应该具有该文件的历史记录。我不明白您为什么需要这样做。为什么一个“关键文件”需要自己的分支?这样其他人就可以接管它的开发,并且错误地添加了它,不需要分离,同时需要保留历史记录。重新设置HEAD^,取消存储HEAD^对应的文件,x.c和y.c对应HEAD^,git reset HEAD x.c y.c对应的文件(这将从HEAD的索引中删除x.c和y.c),git add A.c,git commit,在这里添加一个行更改ID:,这将创建一个只有A.c的分支,为创建只有B.c的分支执行类似的操作(类似但不相同的步骤)
git checkout @~1 -- A.c
git commit -m "Keep only B.c changes"