不得不吐个槽,网上关于git的资料实在是太乱了,为了解决一个问题,结果掉到了又一个坑里!哎,赶紧自己把坑填起来,以免下次又掉进去!!
问题起源——以前在github上面创建了一个仓库,后来项目写的差不多了,想要提交到这个远程仓库上面!
然后执行下面步骤:
1.在项目根目录下打开git bash: git init
2.创建忽略上传文件清单(主要是忽略node modules): touch .gitignore
编辑器打开生成的 .gitignore 文件,加入:
node_modules
/以及其他你想要忽略的文件或文件夹/
3.把文件添加到仓库:git add .
4.把文件提交到仓库:git commit -m ‘版本001’
5.关联到远程仓库:git remote add origin 你的git仓库ssh地址。
6.把本地库的所有内容推送到远程库上:git push -u origin master
按照以上步骤执行之后,你就会发现报错了!!!
error: failed to push some refs to ‘git@github.com:Silent-Jude/saving_onekey.git’
错误产生原因,大概是因为你在最初创建远程仓库时,添加了readme文件,可以参考该文章:
https://blog.csdn.net/uotail/article/details/80211897
因为官方是推荐创建readme的,结果很多人都被这个给坑了!!
为了不踩坑,建议不要创建 readme,保持远程仓库空空的状态。
可是。。。像我这样已经创建了,又不想重新换仓库的人该怎么办呢?
还是有办法的 !
先运行git pull origin master,尝试将远程库中的文件下载,然后再git push -u origin master.
git pull origin master
git push -u origin master.
为什么说是尝试呢?因为我按照这样操作根本行不通嘛,我不知道其他人有没有成功,反正我是没有成功!因为会报一个隐秘的错误!为什么说是隐秘呢?因为它这个报错不是红字提示,英语渣以为是正常结果。。。。然后百思不得骑姐(…)。
查下单词就知道,fatal是致命的意思,这句话的意思是 “致命的错误:拒绝 合并一个不相干的记录”。
翻译成人话就是:“我不认识你,不要与你合体!”…mmp
这是因为远程仓库已经存在代码记录了,并且那部分代码没有和本地仓库进行关联。
你会问远程仓库我没有写代码呀…是不是哪里搞错了?很遗憾,readme文件也算代码!!!
那应该怎么办呢? 这里出现了2个分支,一个方法比较简单,虽然我不认识你,但是我还是要强制与你合体!(......)
1.强推…不,强制合体!
使用 --allow-unrelated-histories 允许pull未关联的远程仓库旧代码:
git pull origin master --allow-unrelated-histories
Auto-merging README.md ,意思是自动合并 README.md文件。
网上有些教程到这里就结束了,说再执行git push -u origin master.但是我尝试了之后,依然报错!
还是熟悉的味道,还是熟悉的报错!
然后我再次 git pull origin master
git pull origin master
发现报错结果居然不一样了!
致命:由于未解决的冲突而退出
打开vscode,打开readme.md ,会发现文件保存了2份readme中的内容!鼠标移到最顶端,选择保留当前的内容还是传入的内容!这里我已经选好了,所以无法再演示了。大家看着选好了。保存完了之后!
重新执行添加,提交操作。
1.把文件添加到仓库:git add .
2.把文件提交到仓库:git commit -m ‘版本001’
3. git pull origin master
4.git push -u origin master
发现已经不报错了!
最后 git push -u origin master,终于同步到远程仓库了!填坑完毕。
还有种方法是百度经验中使用的方法 :git pull --rebase origin master,但是这样之后就无法commit了,不知道为什么 。最后只能使用 git rebase --abort终止才行。希望有大佬知道指导下