我想知道是否有可能在不切换到此分支的情况下提交在单独的本地分支中表示为diff的更改。
把事情放在透视中我们假设我正在努力……
并不是的。您需要切换到其他分支才能应用修补程序/提交。没有办法(在一个本地仓库,以防万一)。
从技术上讲,Git从中提供了新的提交 指数 ,因此您可以将当前索引(通常与当前提交匹配)替换为与其他提交匹配的其他索引内容,然后调整索引内容并使用它进行另一次提交。这样做的问题是(a)它真的很难并且(b)交换索引内容意味着无论如何都要覆盖当前的工作树。
因此,在不进行单独克隆的情况下执行此操作的方法是添加另一个 工作树和索引 ,你可以做 git worktree add ,如果您的Git至少为2.5。 1 这实际上增加了一组三个项目:
git worktree add
HEAD
你现在可以 cd 进入新的工作树,做你喜欢的任何工作, git add 将它们复制回该工作树的索引的文件,以及 git commit 使用该工作树的索引来构建一个新的提交,以更新在该工作树中检出的分支。
cd
git add
git commit
(如果你没有 git worktree ,再做一个克隆。)
git worktree
1 你的Git应该最好至少为2.15,因为有一些重要的错误修复导致2.15。最重要的一点是,在2.5到2.14之间,如果你在一个额外的工作树中工作,然后被打断并离开它14天或更长时间,那么Git可能会破坏你在该工作树中所做的事情。如果您只是快速做某事,那么删除添加的工作树,这些错误不会咬人。