将分支提交作为对工作目录的未提交更改移动到当前分支?
Move branch commits to current one as uncommitted changes to working directory?
假设我在 branchA
上工作,需要临时提交所有未提交的更改。所以我创建 branchB
,并提交所有内容。
一段时间后,我需要将所有这些更改移回 branchA
作为未提交的更改。
(一些更改了之前未在回购中跟踪的文件位置)
我该怎么做?合并+重置?有简单的命令吗?
我也可以将这个问题改写为:
如何撤消git branch -b branchB; git 添加 .; git 提交; ?
如果您不处理大量文件,只需检查其他分支中的单个文件:
git checkout branchB <filename1>
git checkout branchB <filename2>
这会引入文件,因为它们位于另一个分支的头部。
你可以选择 cherry-pick --no-commit
:
git checkout branchA
git cherry-pick branchB --no-commit
在上文中,我假设所有内容都在一次提交中,但您可以将其扩展为一系列精选。
有关详细信息,请参阅 cherry-pick reference
假设你要扔掉 branchB
,我建议你做 git merge branchB --squash --no-commit
。 --no-commit
选项确保更改仅应用于您的工作目录,而不是提交。 --squash
选项可防止您最终执行的提交成为合并提交。我建议使用该选项的原因是,在合并提交中除了合并本身之外做任何事情都不是一个好主意,而且看起来您想在进行 "real" 提交之前在本地做更多的工作。另外,这可以防止您在 branchB
上的临时提交出现在您的历史记录中。
假设我在 branchA
上工作,需要临时提交所有未提交的更改。所以我创建 branchB
,并提交所有内容。
一段时间后,我需要将所有这些更改移回 branchA
作为未提交的更改。
(一些更改了之前未在回购中跟踪的文件位置)
我该怎么做?合并+重置?有简单的命令吗?
我也可以将这个问题改写为:
如何撤消git branch -b branchB; git 添加 .; git 提交; ?
如果您不处理大量文件,只需检查其他分支中的单个文件:
git checkout branchB <filename1>
git checkout branchB <filename2>
这会引入文件,因为它们位于另一个分支的头部。
你可以选择 cherry-pick --no-commit
:
git checkout branchA
git cherry-pick branchB --no-commit
在上文中,我假设所有内容都在一次提交中,但您可以将其扩展为一系列精选。
有关详细信息,请参阅 cherry-pick reference
假设你要扔掉 branchB
,我建议你做 git merge branchB --squash --no-commit
。 --no-commit
选项确保更改仅应用于您的工作目录,而不是提交。 --squash
选项可防止您最终执行的提交成为合并提交。我建议使用该选项的原因是,在合并提交中除了合并本身之外做任何事情都不是一个好主意,而且看起来您想在进行 "real" 提交之前在本地做更多的工作。另外,这可以防止您在 branchB
上的临时提交出现在您的历史记录中。