旁注:章鱼合并和章鱼分支点场景非常不同。请记住,提交的 DAG(有向无环图)中的指针从子(较新提交)指向父或父。所以在章鱼合并的情况下,你有提交(提交对象),它有两个以上的父母;在“章鱼分支点”的情况下,您只需有几个提交指向与其父级相同的提交。
章鱼合并:
1 <---- M
2 <----/ |
3 <------|
章鱼分支点:
P <----- 1
^-------- 2
^-------- 3
所以我认为这个问题的命名是完全错误的
答案
现在,如果您要做的是在不同分支之间拆分工作区域中的修改,将每个功能放在单独的主题分支中,您可以在 Git 中使用显式暂存区域(也称为索引)。
假设您修改了两个文件“a”和“b”,并且您希望对文件“a”的修改转到分支“A”,并将文件“b”中的修改转到分支“B”。让我们假设您当前所在的分支,您想要作为您想要创建的许多分支的基础的分支点,被命名为“master”。
首先,让我们创建分支'A'
$ git checkout -b A master
Git 回复:
M a
M b
Switched to a new branch "A"
“M”表示文件“a”和“b”相对于您基于分支“A”的点(“master”分支)进行了修改。(下面,我将简单地将 git response 放在命令行调用下面,而不是单独注明什么是回复。)
让我们将文件“a”的内容添加到暂存区(索引)。
$ git add a
请注意,如果您只想将文件“a”中的某些更改子集添加到分支“A”,则可以使用“git add --interactive”(缩写为“-i”)或“git gui”来执行 per-对暂存区和其他此类操作进行大量更改。
现在我们将更改提交到分支“A”
$ git commit
Created commit 35d0061: Commit description...
1 files changed, 1 insertions(+), 0 deletions(-)
请注意,我们没有使用 '-a' 选项来 git-commit!
顺便说一句,如果您想在从暂存区提交之前测试更改,您可以使用“git stash save --keep-index”将工作区恢复到您使用“git commit”提交的状态,测试更改,然后使用“git stash pop --index”(或“git stash pop”;我不记得你在这里需要哪一个)回到以前的状态。
现在我们基于分支'master'创建另一个分支,分支'B'
$ git checkout -b B master
M b
Switched to a new branch "B"
您可以很容易地看到您为分支“B”留下的更改(您没有提交到分支“A”的更改)转到了新创建的分支“B”。无需删除文件或删除更改。无需知道其他分支中的内容。一切都是自动的。
再次将文件“b”的内容添加到暂存区(索引),并在分支“B”上提交:
$ git add B
$ git commit
您可以根据需要经常重复此操作,并且新分支不会变得更难。
高温高压