1.当输入 git push -u origin master
的时候,提示:origin does not to be a git repository
如何解决?
原因:本地仓库和远程仓库没有相关联。
解决方案:先关联本地仓库和远程仓库,再重新push就可以啦~使用下面的命令
git remote add origin git@github.com:yourusername/test.git
git push origin master
2.当push代码git push -u origin master
时出现The authenticity of host 'github.com ' can't be established
,如何解决?
一般有下面两个原因:
- 原因一:github上的远程仓库没有和本地仓库关联(是不是发现很眼熟~对的,和问题一属于同一款)
-
原因二:ssh 不对
针对上面的两个原因,分别给出解决方案:
解决方案:
- 方案一:不厌其烦再来一遍
git remote add origin git@girhub.com:yourusername/test.git
-
方案二:ssh解决思路分为三步走
步骤一:查看ssh是否是自己的,若不是自己的,说明是ssh的问题,若是,则为远程关联问题。查看命令为:
cat ~/.ssh/id_rsa.pub
步骤二:若是ssh的问题,则在git仓库同目录删除.ssh文件夹(隐藏文件夹),使用查看命令查看是否删除成功
cat ~/.ssh/id_rsa.pub
若出现
No such file or directiory
字样,说明删除成功步骤三:重新创建ssh,使用下面的命令
ssh-keygen -t -rsa -C "your_email@exmaple.com"
然后一路回车~
创建好新的ssh后,将pub文件中的内容复制,在github上新建一个ssh链接吧~
3.使用git pull origin master
提示refusing to merge unrelated histories
如何解决?
原因:远程仓库和本地仓库在没有关联之前,是两个单独的项目,所以需要项目合并
解决方案:pull的时候先合并
git pul -allow-unrelated-histories
合并完之后在git pull origin master
就ok啦~
4.附上经典Git原理图(摘自廖学峰的git教程)
- 工作区:就是直接包含本地代码文件的文件夹。
- 暂存区:是暂存add进来的代码,也称为stage或index。
它实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区。
在这个虚拟工作区的目录树中,记录了文件名、文件的状态信息(时间戳、文件长度等)。
但文件的内容并不存储其中,而是保存在Git对象库(.git/objects)中,里面包含了创建的各种对象及内容。
当add文件到暂存区时,暂存区的目录树会被更新(index文件更新),同时工作区修改(或新增)的文件内容被写到对象库(.git/objects)的一个新对>象中,而该对象的ID被记录在暂存区的文件索引中。
stage区和本地仓库均存储在.git文件夹内。
- 版本库:当前仓库下,如果没有任何的提交,那么版本库就是对应上次提交后的内容。commit之后合并到本地仓库的分支(如master)。
HEAD 实际是指向 master 分支的一个"游标"。
当执行git reset HEAD
命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。