git - 如何 merge 分支并保留作者身份

标签 git

假设我的同事 John 创建了一个名为“john”的分支。 John 有 10 次提交。当涉及到 merge 回 master 时,他们要求我进行 merge 。

我就是这样

git checkout -b john origin/john
git rebase master
git checkout master
git merge john --squashed
git add .
git commit -m 'merged branch john'

但是现在发生的是我的 id 反对 merge 提交。后来有人问我为什么改了某部分代码。

我如何将 john 分支中的所有提交 merge 为一个提交,以便 John 是作者。我想 git commit interactive 可以提供帮助,但不太理解。

最佳答案

这里的问题是 git merge --squash将应用与正常 merge 相同的更改,但不保留 merge 信息。然后,当您提交时,它与您所做的任何提交相同:它归因于您。您可以使用 git commit --author="Original Author <email@server>" 更改提交的作者信息.参见 git-commit(1)有关 --author 的更多信息开关。

但我的问题是:为什么要压缩 merge ?为什么不只进行非压缩 merge ?如果有人做了 git blame , 它将适本地归因于原作者的提交。

关于git - 如何 merge 分支并保留作者身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3305218/

相关文章:

git - 标签与 Git 中的分支有何不同?我应该在这里使用哪个?

Git:如何在特定提交之前删除历史记录

git - 如何附加分支名称并提交到 git 存档输出文件?

git - 如何使用文件路径减少 git bisect 运行?

git - 排除子模块的子模块

GitLab CI GIT STRATEGY=克隆作业不起作用

sql - Azure ASP.Net MVC 数据库部署最佳实践

svn - git-svn merge 2 个 svn 分支

git - 使用 git 会干扰 bixby IDE 吗?

git - 在 filter-branch 之后将每个人重新定位到更改的 git 历史记录