很多情况下,我们在本地已经进行了一部分项目的开发工作,完成一个阶段的开发后,我们可能想把代码提交到像github或者gitee这样的远程代码仓库中,这个时候我们一般会在gitee上新建一个仓库。
在gitee中新建仓库时,给我们提供了很多的选项,我们可以选择创建一个完全空的仓库,也可以选择创建仓库的同时,创建gitingore文件、issue模板文件、ReadMe文件等。
1.如果创建了空仓库
如果创建的仓库内完全是空的,那么本地代码上传到已有远程仓库是一件很简单的事情。
cd /你的项目目录
git init
gitadd.git commit -m"Initial Commit"git remote add origin [你的远程仓库地址,一般是https://*******/****.git]git push origin master
2.如果创建的仓库非空
如果远程仓库创建的时候已经有了文件,那么执行到
git push origin master
时就回报错。
此时可以使用如下的方法:
cd /你的项目目录
git init
gitadd.git commit -m"Initial Commit"git remote add origin [你的远程仓库地址,一般是https://*******/****.git]git pull origin master --rebasegit push origin master
如果远程仓库还有其他分支,那么需要现在本地创建同名分支:
git branch develop
git checkout develop
git pull origin develop --rebasegit push origin develop
三.疑难杂症解决:
今天可以说是很无语了,因为某些原因,要把远端仓库完全删除掉,然后将本地的代码重新上传。
依然按照上面的步骤执行,这次却出现了执行
git pull origin master --rebase
时报错的问题。这个目前确实还不知道具体原因,有清楚的大佬可以分享一下。
具体出现的现象是,执行
git pull origin master --rebase
报错,且除了最后一次提交的几个文件,项目中其他文件全部丢失。远程仓库已经删了,本地还没有备份,嫩们知道我当时有多慌吗?
解决办法:
当前已经报错的情况下,执行其他命令仍然报错,原因是rebase还没结束,首先需要中止上次命令的rebase。
执行
git rebase --abort
中止rebase流程。
然后使用
git reflog
找到有完整或者较为完整代码(根据你之前操作的实际情况)的引用历史记录点。
git reflog命令:可以用于查看可引用的历史版本记录,引用日志记录了分支、标签和 HEAD 等引用在过去的操作中所指向的提交记录,例如初始时分支a指向commit1,reflog会记录a指向commit1,你移动了分支a的指向后,会在reflog留下一个新的记录,记录a移动到了commit2。
使用git log命令只可以查看到HEAD指针及其之前的版本信息,如果版本发生过回退操作,则可能会出现,HEAD指针之后仍存在历史提交版本的情况,而这些提交版本信息通过git log命令是看不到的。
这次多谢
git reflog
,让我能过个好节。在git pull报错之后,使用
git log
是看不到之前的提交的,只能看到没push的那次提交。
在
git reflog
的记录中找到要恢复的记录的hash值,比如
beae002
。
然后使用
git checkout beae002
检出记录中的内容。到这一步,丢失的代码应该就已经都回来了。
但是这个时候如果还是直接用
git pull origin master --rebase
来拉取代码,大概率还是会出之前的问题。所以把代码找回来之后我们还要做其他的处理。
首先将项目的远程地址修改为新的远程仓库地址,因为之前的远程仓库已经被删了,远程仓库地址也没用了。
使用命令
git remote set-url origin [git-url]
将远程仓库地址设置为新的仓库地址。
然后执行
git rebase origin/master
,这一步其实就是把远程仓库中的提交和本地的提交捋顺了。
然后再重新执行
git pull origin master --rebase
,应该就不会报错了。
最后执行
git push origin master
就将本地的代码提交到新建的远程仓库中了。
齐活。今天真是刺激啊
Git还是用的不熟啊!!!!!!!!!!!!!!!!!!
版权归原作者 Xeon-Shao 所有, 如有侵权,请联系我们删除。