GitHub有两个项目Pro1和Pro2,现打算将Pro2整个项目移动到Pro1,并保留2个项目的commit记录。
移动前Pro1目录结构为:文件Pro1.txt、文件Pro123、文件README.md、文件夹pro1dir/,项目 Pro2类似。
移动后目录结构为Pro/Pro1/*;pro/Pro2/*(Pro1重命名为pro)。
建议新建测试项目Pro1、Pro2熟悉一下流程,或者备份原有项目,避免误操作产生意料之外的效果。
1、clone项目Pro1到本地
git clonehttps://github.com/zxiaofan/Pro1.git
cd Pro1
2、在Pro1项目根目录新建文件夹Pro1,并将原Pro1项目所有文件移动至Pro1/下(如果不需要完全区别两个项目可忽略)
mkdir Pro1
cd Pro1
vi pro1.txt 输入描述信息(move Pro1 to new dir)
如果时github网页创建新文件,则create new file》文件名框中输入文件夹名Pro1/(有个斜杠),在输入文件名即可。
# 移动所有文件(夹)到新文件夹Pro1
cd ..
mv Pro123 README.md pro1dir/ Pro1
3、提交所有变更到github
# 将文件的修改、删除、新建添加到暂存区
(注意区别:git add -u:将文件的修改、文件的删除,添加到暂存区;git add .:将文件的修改,文件的新建,添加到暂存区)
git add -A
git status
git commit -m "move Pro1 all files to new dir"
git push (可能会输入用户名密码)
4、移动项目Pro2的所有内容到Pro1
# 将新项目添加到旧项目中
git remote add Pro2https://github.com/zxiaofan/Pro2.git
# 校验是否添加成功
$ git remote -v
Pro2 https://github.com/zxiaofan/Pro2.git (fetch)
Pro2 https://github.com/zxiaofan/Pro2.git (push)
origin https://github.com/zxiaofan/Pro1.git (fetch)
origin https://github.com/zxiaofan/Pro1.git (push)
# 获取新项目内容
git fetch Pro2
# 合并新项目Pro2到本地项目Pro1
git merge Pro2/master
Note 如果报错:fatal: refusing to merge unrelated histories
此错误出现在2.9.0版本后,在命令后添加执行参数--allow-unrelated-histories即可
git merge Pro2/master --allow-unrelated-histories
会提示你输入merge信息:比如输入:mergee Pro2 to Pro1
参考操作2,将Pro2的所有内容移动到新建文件夹Pro2中。
5、参考操作3,提交所有变更到github
6、项目重命名
前往github官网,在项目Pro1的Settings中重命名Pro1为Pro。
Note:Pro1重命名为Pro后,原Pro1的地址将重定向到新的Pro项目的地址。
至此2个github项目合并完毕。
可参考本人合并后的项目:https://github.com/zxiaofan/springStudy,该项目是有SpringBootStudy、SpringDataStudy两个项目合并到chapter(合并后更名为SpringStudy)项目,保留了原有的所有commit记录。
欢迎个人转载,但须在文章页面明显位置给出原文连接;
未经作者同意必须保留此段声明、不得随意修改原文、不得用于商业用途,否则保留追究法律责任的权利。
【 CSDN 】:csdn.zxiaofan.com
【GitHub】:github.zxiaofan.com
如有任何问题,欢迎留言。祝君好运!
Life is all about choices!
将来的你一定会感激现在拼命的自己!