让我们说我在branchA
上工作,需要临时提交所有未提交的更改。所以我创建branchB
,然后提交所有内容。
一段时间后,我需要将所有这些更改移回branchA
作为未提交的更改。
(有些更改以前未在回购中跟踪的文件的位置)
我该怎么办?合并+重置?对它有简单的命令吗?
我还可以将这个问题改为:
如何撤消git branch -b branchB; git add。; git commit;吗
答案 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