在 Github 中将特定文件从一个分支移动到另一个分支

Move Specific Files from One Branch to Another Branch in Github

我对分支 feature/branch-30 上的一些文件进行了更改,然后意识到其中一些更改应该在 feature/branch-31 上。我知道我们可以使用 stash 和 pop 命令将所有文件从一个分支移动到另一个分支,但我的要求是我只需要将特定文件从 feature/branch-30 移动到 feature/branch-31。我怎么做?我真的很感激任何帮助。谢谢!

git stash 仅适用于暂存区以建立提交。一旦更改被提交,它就没有位置了。如果要将已提交的更改移至某些文件,则需要仅对这些更改进行新提交。

从现在开始,我将把 branch-30 称为“source”,将 branch-31 称为“dest”。

我假设您希望通过“移动”从源中删除更改并将它们添加到目标。有很多方法可以做到这一点。需要考虑的重要一点是因为 dest 可能也更改了文件,如果我们试图将 source 中的更改移动到 dest 可能会发生冲突。 Git 有一个工具可以处理这个,合并!

首先,我们将通过伪合并获得从源到目标的变化。 git merge -n 将执行合并而不提交它们。

git checkout dest
git merge -n source

现在您拥有所有未提交的合并。使用 git restore 删除您不想要的任何更改,并照常修复任何冲突。然后隐藏更改,因为我们实际上不想合并,所以中止合并:git merge --abort.

现在应用并将你的存储提交到 dest。

git stash pop
git commit

这是将更改添加到 dest 排序,现在我们需要从源中删除它们。这是一种类似的方法,但不是通过合并来获取更改,而是使用 git restore 将所有文件恢复为原始主版本,但不提交它们。

git checkout source
git restore --source master .

再一次,您有一个充满变化的暂存区。同样,删除所有不需要的更改。然后提交它们。

大功告成。

git rm --cached path/to/file 删除文件但将其保留在工作目录中。检查另一个分支并添加现在未跟踪的文件。