Git 拉取时重写提交消息
我正在将多个回购合并为一个。为此,我使用Git 拉取时重写提交消息,git,git-pull,Git,Git Pull,我正在将多个回购合并为一个。为此,我使用git add…添加每个原始回购协议,然后运行git pull--无编辑--安静--允许不相关的历史记录… 我的问题是是否可以同时重写提交消息,以便我可以向提交主题添加标签或向提交主体添加预告 编辑: 为了澄清,我想用更改重写所有提交消息,而不是pull的merge消息。任何提交的任何部分都不能更改,因此从这个意义上说,答案是否定的 git pull命令本质上包括运行git fetch,然后运行git merge或git rebase。rebase命令的工
git add…
添加每个原始回购协议,然后运行git pull--无编辑--安静--允许不相关的历史记录…
我的问题是是否可以同时重写提交消息,以便我可以向提交主题添加标签或向提交主体添加预告
编辑:
为了澄清,我想用更改重写所有提交消息,而不是pull的merge消息。任何提交的任何部分都不能更改,因此从这个意义上说,答案是否定的
git pull
命令本质上包括运行git fetch
,然后运行git merge
或git rebase
。rebase命令的工作原理是将现有的提交复制到新的(和不同的,可能是改进的)提交,因此从这个意义上讲,有一种方法可以获得您想要的东西。但是,git pull
运行的rebase只复制您的提交,而不是获取的提交;您似乎希望使用不同的哈希ID将获取的提交复制到新的和改进的提交
要做到这一点,您必须分离您的操作。停止使用git pull。运行:
,以获取新提交;然后git fetch
- 您选择的将这些复制到新的和改进的提交的方法;然后
,如果需要,或者任何其他需要的命令(可能没有)git merge
一般来说,每当你尝试做一些新奇的事情时,关于如何使
git-pull
do-it的问题的答案就是“停止使用git-pull
” 拉取提交时不能更改提交消息
这决不是故意的。当您更改提交消息时,此提交的哈希将更改。只有提交消息不同的两个相同的提交将具有不同的哈希。所以Git总是认为这样的提交是两个不同的提交。< /P>
pull
应该将远程存储库中的更改合并到本地存储库中。如果在拉过程中重写提交消息,它将更改这些提交的哈希值。从git的角度来看,您最终将在本地回购中获得另一个历史记录。这意味着合并没有完成,你应该再拉一次
因此,在拉取提交时不能更改提交消息。但您可以在拉取后重写提交消息。您可以使用with--msg filter
选项重写提交消息
我建议您在下一个订单中这样做:
git过滤器分支
重写此存储库中的提交。(这一次,您的历史记录中只有类似“#nnn”的链接,因此您可以轻松地将它们更改为“首次回购url/nnn”)删除
--no edit
。--no edit
用于在拉取时添加的合并消息,我想更改拉取时出现的所有提交消息,如果在合并不相关的历史记录后仍要保留合并提交,则它们是百分之一百,您可以重新设置所有提交的基础并重新写入它们。@Mcm通过更改所有提交消息,git filter branch
或git-rebase-i
会有所帮助。但是他们重写了整个历史记录。重写历史记录不是问题,但我只想重写我要合并的特定存储库的提交,这样我就可以将诸如“#nnn”之类的链接更改为“”。每个回购都有一个不同的链接谢谢,最后我使用了你的建议,git filter branch--msg filter“perl-pe的,([\(]|)?([\)]),\$1mycompany/myproject/\$2\$3,g'
work@Mcm我很高兴这有帮助