我希望能够为脚本执行此操作。我基本上是在Git中重新创建一些代码的整个版本历史记录 - 它目前使用不同的版本控制系统。我需要脚本能够在保留提交的原作者(和日期)的同时将提交添加到Git中。你如何以不同的用户来提交代码?
假设我知道提交作者和更改的日期/时间,是否有Git命令允许我这样做?我假设有,因为git-p4做了类似的事情。我只是要求最好的方式来做到这一点。
我希望能够为脚本执行此操作。我基本上是在Git中重新创建一些代码的整个版本历史记录 - 它目前使用不同的版本控制系统。我需要脚本能够在保留提交的原作者(和日期)的同时将提交添加到Git中。你如何以不同的用户来提交代码?
假设我知道提交作者和更改的日期/时间,是否有Git命令允许我这样做?我假设有,因为git-p4做了类似的事情。我只是要求最好的方式来做到这一点。
检查出git commit
的--author
选项:
从man page:
--author=<author>
覆盖提交作者。使用标准
A U Thor <[email protected]>
格式指定明确的作者 。否则<author>
被假定为 的模式,并用于搜索该作者所提交的现有 (即rev-list --all -i --author=<author>
);首先提交作者从 中复制这样的提交。
我想补充这件事:接受的答案中提到的--author
选项只覆盖了作者,而不是提交者的提交信息。
也就是说在大多数情况下,正确的行为,但如果由于某种原因,你需要手动覆盖提交者信息为好,使用GIT_COMMITTER_NAME
和GIT_COMMITTER_EMAIL
环境变量(有一个GIT_COMMITTER_DATE
为好)。见Git-Internals-Environment-Variables
$ GIT_COMMITTER_NAME="New Name" GIT_COMMITTER_EMAIL="[email protected]" git commit --author="New Name <[email protected]>"
这将使提交看上去像是撰写和指定用户提交。
...并查看区别: 'git log --pretty = fuller' – bluenote10 2015-11-03 20:41:52
完美。这就是我想要的,我从来没有找到git内部手册页。 – ksp 2017-05-17 07:02:40
您是否尝试过使用快速导入? – alternative 2010-09-12 23:03:02
我同意,[fast-import](http://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html)可能是最好的选择。你可以使用* git commit *(或者更合适的底层管道:* hash-object *,* update-index *,* write-tree *,* commit-tree *,* update-ref *等),但是*快速导入*会更快。 – 2010-09-12 23:39:05
我的确在想快速导入,但由于我自己就是git初学者,所以我决定使用基本命令。说实话,我并不完全理解快速导入是如何工作的,因此,直到我更好地理解它,我们才有点犹豫。是的,使用提交会慢很多,但至少我会知道会发生什么 - 特别是在调试时。 – Carl 2010-09-12 23:47:34