我必须相信有人以前遇到过这种情况,并希望能对这个问题有所了解。我们公司收购了另一个也使用 Git 的公司。在迁移过程中,用户帐户将使用新格式重命名。问题是,当我们移动 Git 存储库时,存储库中引用的帐户将与新的用户 ID 不匹配。
将 Git 存储库移动到我的服务器时,有没有办法将当前文件和存储库的历史重新映射到更改后的 id?到目前为止,我发现的唯一方法是在从 svn 迁移到 git 时重新映射用户时使用。
我必须相信有人以前遇到过这种情况,并希望能对这个问题有所了解。我们公司收购了另一个也使用 Git 的公司。在迁移过程中,用户帐户将使用新格式重命名。问题是,当我们移动 Git 存储库时,存储库中引用的帐户将与新的用户 ID 不匹配。
将 Git 存储库移动到我的服务器时,有没有办法将当前文件和存储库的历史重新映射到更改后的 id?到目前为止,我发现的唯一方法是在从 svn 迁移到 git 时重新映射用户时使用。
我强烈反对尝试修改历史提交的用户名。您将不得不重写整个历史树,这会给过去曾经克隆过存储库的任何人带来问题(如果没有大量工作,任何东西都不会合并)。
相反,接受过去,让每个人在未来的工作中使用新格式的用户名,然后继续前进。
听起来您在谈论文件所有权。Git 不跟踪文件所有权。它跟踪的唯一模式位是可执行位。文件由创建工作树的任何用户创建。
如果实际上您正在谈论每次提交的作者/提交者信息,那是另一回事。正如 Greg 所说,我不鼓励您尝试重写该信息,因为这将重写存储库的整个历史。如果你真的想这样做,你可以使用一个git filter-branch
命令加上适当的--env-filter
脚本来对作者/提交者信息进行任何你想要的映射。