在已有代码基础上创建Git仓库
- 背景
- 方法
- 处理问题
背景
- 先进行了代码编写,后续想放入仓库方便大家一起合作开发,此时需要在已有代码的基础上建立仓库。
方法
- 首先在Gitee或者GitHub上创建仓库,这里以Gitee为例。
- 创建完后,我们可以拿到仓库的链接
- 然后,打开ide,以idea为例,
这里可能是VCS或者Git,点击展开下拉,点击创建Git仓库,就会在本地代码项目里创建本地仓库。
这里顺便讲一下其他选项的含义,
1、share project on xxx是将本地项目发到gitee或者github上,这不就是咱们的初衷吗?但这里之所以没采用,是因为可选项很少
一对比就可以看到后者的可选项是很多的。所以不采用share的方式。
2、从版本控制中获取,
这里会显示出你gitee里的远程仓库,然后克隆到本目录,显然和咱们的需求不符。 - 好,言归正传,创建好【本地仓库】之后,我们发现标题栏的VCS变成了Git,点击下拉里的【管理远程】
将刚才的链接添加进去就可以了
此时就将【本地仓库】和【远程仓库】联系起来了。
处理问题
但是,这么做其实是会有一些问题,我们接着往下看。
- 现在我们已经联系好了远程和本地仓库,我们的想法是fetch一下,然后将远程分支merge到本地分支(因为远程分支可能有readme啥的,需要先合入本地分支),然后在push上去,然而这里merge会报错
refusing to merge unrelated histories
- 出现这个问题的最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库。假如我之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了。
- 查阅了一下资料,发现可以在pull命令后紧接着使用–allow-unrelated-history选项来解决问题(该选项可以合并两个独立启动仓库的历史)。
解决:
$git pull origin master –allow-unrelated-histories
以上是将远程仓库的文件拉取到本地仓库了。
紧接着将本地仓库的提交推送到远程github仓库上,使用的命令是:
$ git push <远程主机名> <本地分支名>:<远程分支名>
也就是
$git push origin master:master
提交成功。
git pull origin master –allow-unrelated-histories之后就可以merge和push啦!至此,成功将本地和远程联系起来。