将分支提交移动到当前工作目录的未提交更改?

时间:2016-02-15 14:27:03

标签: git git-branch

让我们说我在branchA上工作,需要临时提交所有未提交的更改。所以我创建branchB,然后提交所有内容。

一段时间后,我需要将所有这些更改移回branchA作为未提交的更改。

(有些更改以前未在回购中跟踪的文件的位置)

我该怎么办?合并+重置?对它有简单的命令吗?

我还可以将这个问题改为:

如何撤消git branch -b branchB; git add。; git commit;吗

3 个答案:

答案 0 :(得分:2)

假设你要抛弃branchB,我建议你做git merge branchB --squash --no-commit--no-commit选项确保更改仅应用于您的工作目录,而不是已提交。 --squash选项阻止您最终进行的提交是合并提交。我建议使用该选项的原因是除了在合并提交中合并本身之外做任何事情都不是一个好主意,并且看起来你想在进行“真正”提交之前在本地做更多的工作。此外,这可以防止branchB上的临时提交显示在您的历史记录中。

答案 1 :(得分:1)

如果您没有处理大量文件,只需查看其他分支中的单个文件:

git checkout branchB <filename1>
git checkout branchB <filename2>

这会引入文件,因为它们位于另一个分支的头部。

答案 2 :(得分:1)

你可以去cherry-pick --no-commit

git checkout branchA
git cherry-pick branchB --no-commit

在上面我假设所有内容都在一次提交中,但你可以将其扩展为一系列的挑选。

有关详细信息,请参阅cherry-pick reference