1

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 分支指向的目录树所替换,但是工作区不受影响。

云溪
58 声望3 粉丝