Git合并但保持未提交的更改

4

假设我的当前分支是feature-foo,并且工作目录为空(没有修改过的文件)。 我通过以下命令合并另一个分支feature-bazgit merge feature-baz

我希望将分支feature-baz的所有更改应用于当前分支的文件,但不应发生合并提交。 因此,当我运行git status时,我应该看到所有修改过的文件仍处于未暂存状态。

Git是否支持这种操作? 如果可以,请问如何实现...

我想这样做是因为这样,我就可以在代码审查过程中进行代码更改。 然后手动提交而不是由Git自动执行的合并提交。

谢谢


1
https://git-scm.com/docs/git-merge - tkausl
2个回答

5

使用git merge命令时,加上--no-commit--no-ff选项:

$ git merge --no-commit --no-ff feature-baz

--no-ff的作用是即使可以快进合并,也会创建一个提交。 --no-commit会更新您的工作目录,但在创建合并提交之前停止。


1
请注意,更新的文件将被暂存(除了任何可能会强制使用“--no-commit”的冲突文件)。 - torek

0

在使用git merge合并后,只需使用git reset HEAD^即可。

重要的是,您需要先进行合并(这将创建合并提交,如您所知),然后再使用git reset HEAD^ - HEAD^将导致“还原”到当前分支上最后一次提交之前的提交,也就是合并提交之前的提交。

如果您使用git reset --soft HEAD^,则所有来自该提交的更改都将被移动到索引中(显示为已添加);如果您使用git reset --medium HEAD^,则所有更改都将完全取消暂存(显示为未暂存);如果您使用git reset --hard HEAD^,则更改将被彻底从GIT和磁盘中删除,因此您不希望这样做。

附注:--medium是默认选项,因此您可以省略它。

因此,您需要执行以下操作:

git merge feature-baz
git reset HEAD^

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接