我的项目由两个文件夹组成,每个文件夹都有自己的存储库:
project/
|--frontend/
|--|--.git
|--backend/
|--|--.git
到目前为止,我一直在本地工作。现在我想为我的项目创建一个全局存储库,将其推送到远程,同时保存其中的两个历史记录。正确的做法是什么?
project/
|--.git - has entire history of project (both folders)
|--frontend/
|--|--.git - can be deleted if method requires it
|--backend/
|--|--.git - can be deleted if method requires it
我想你可以通过移动每个路径并将一个合并到另一个
来做到这一点这假设需要将前端添加到后端存储库中,尽管这可能不适合您—如果创建新存储库,请重复每个步骤
警告我还没有测试
备份您的存储库
cp -r project project.bak # FIXME targz
检出自定义分支(在后端)
(frontend)% git checkout -b custom-move-frontend
(backend)% git checkout -b custom-move-backend
更新远程,使它们成为同一个存储库的一部分
从每个
获取远程(frontend)% git remote -v # display remote URL
(backend)% git remote -v
更新后端远程
(backend)% git remote set-url origin "$FRONTEND_REMOTE"
将每个目录的内容移动到其未来名称
(frontend)% git mv . ./frontend
(frontend)% git add .
(frontend)% git commit -m "MY UPDATE TEXT FRONTEND"
(frontend)% git push # original URL
(backend)% git mv . ./backend
(backend)% git add .
(backend)% git commit -m "MY UPDATE TEXT BACKEND"
(backend)% git push # branch is pushed to frontend's URL
加入不相关的历史记录
分支不共享一个共同的历史
Git拒绝合并不相关的历史记录
(frontend)% git pull
(frontend)% git checkout -b custom-merge-merge # from custom-move-frontend
(frontend)% git merge --allow-unrelated-histories origin/custom-move-backend
存储库现在被合并了
额外我强烈建议添加一个文件,记录发生的事情和具体的提交
用一个唯一的字符串作为提交的前缀可以帮助你以后找到它们