如何在使用 "git merge" 时只合并没有提交日志的更改?

How to only merge the change without the commit log when using "git merge"?

我有一个主分支,我检查了一个名为 test_branch 的新分支,用于我的日常 work.I 在 test_branch 中做了很多冗余 "git commit" 所以有很多历史commit log in test_branch.When 我将 test_branch 合并到 master ,我不想将这些历史日志合并到 master.How 我可以只合并源文件吗?

你做到了:

git checkout master
git merge --squash test_branch

这为您提供了 master 上的一个新版本,提交时不会合并。

git merge 命令合并提交。它不合并文件。您 test_branch 上的开发路径将成为您项目历史的一部分。如果您对它不满意,您应该在该分支上执行 rebase -i 并编辑以清理历史记录,使其看起来像您想要的那样,然后合并该分支。如果您不关心历史记录,您可以使用 git merge --squashtest_branch 上的所有提交压缩为对 master 的单个提交。但是,这将破坏细粒度的历史记录,并且不会真正为您带来任何好处。

许多版本控制系统认为分支是与主开发线完全分开的东西,主分支在合并后唯一能看到的就是合并本身。使用git,由于其分支的轻量级特性,合并到主分支的分支的开发历史也将是可见的。

您想 "squash" 或 "rebase" 您的提交。您可以在此处阅读有关如何执行此操作的详细信息:Squash my last X commits together using Git