ToB企服应用市场:ToB评测及商务社交产业平台

标题: 将仓库下某个模块复制到新仓库并保留提交记录(非子库) [打印本页]

作者: 种地    时间: 2023-5-12 03:24
标题: 将仓库下某个模块复制到新仓库并保留提交记录(非子库)
在Git中,有时候我们需要将一个仓库中的某个模块复制到另一个仓库中,并且还需要保留提交记录。这个时候我们可以使用Git subtree命令来实现。
例如:将本地某个仓库中的design-pattern文件夹下的所有文件拿出来作为一个新仓库
以下是具体操作步骤:
  1. git subtree split --prefix=design-pattern -b dp
复制代码
这个命令会在当前仓库中创建一个名为dp的新分支,并将design-pattern模块的提交记录复制到这个分支中。
  1. git remote add dp_orign git@gitee.com:forxiaoming/design-pattern.git
复制代码
这个命令会将一个名为dp_orign的远程仓库添加到当前仓库中。
  1. git push dp_orign dp
复制代码
这个命令会将dp分支推送到dp_orign远程仓库中。
接下来只需要在新仓库中将 dp分支合并到主分支即可
  1. git pull
  2. #From gitee.com:forxiaoming/design-pattern
  3. # * [new branch]      dp         -> origin/dp
复制代码
这个命令会拉取dp分支中的提交记录到新仓库中。
  1. git fetch origin
复制代码
这个命令会将远程分支的最新提交记录拉取到本地。
  1. git branch
  2. # * master
  3. git branch  -r
  4. #  origin/HEAD -> origin/master
  5. #  origin/dp
  6. #  origin/master
  7. git checkout dp
复制代码
  1. ls
  2. #README.md
  3. # ...
复制代码
  1. git checkout master
复制代码
  1. git merge --allow-unrelated-histories dp
复制代码
这个命令会将dp分支的提交记录合并到主分支中。
在使用 git merge 命令合并两个分支时,如果两个分支的提交记录没有共同的祖先,即它们的提交历史没有交集,那么 Git 会认为这两个分支是不相关的,不能直接合并。这时候会出现以下错误提示:
  1. fatal: refusing to merge unrelated histories
复制代码
为了在这种情况下也能够合并分支,需要使用 --allow-unrelated-histories 参数。这个参数的作用是允许合并两个没有共同祖先的分支,即使 Git 认为它们是不相关的。
  1. git push
复制代码
  1. git branch -d dp
复制代码
  1. git push origin --delete dp
复制代码
这样就完成了将一个仓库中的某个模块复制到另一个仓库中,并且保留了提交记录的操作。
出处: https://www.cnblogs.com/52liming/p/17390829.html </blockquote>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4