一、出现fatal: refusing to merge unrelated histories
在上传文件夹到github的操作过程中,先pull github中的仓库,因为和本地仓是两个项目,执行命令
git pull origin master
出现上面的错误
释疑
在git pull时,这句代码是在git 2.9.2版本发生的,最新的版本需要添加--allow-unrelated-histories
git pull origin master --allow-unrelated-histories
利用Git上传文件、文件夹到github或其他git服务器流程参考:利用git上传本地文件、文件夹到Github
二、fatal: 'remote' does not appear to be a git repository
git pull remote master
报错如下
fatal: 'remote' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决方法:
1. 首先,检查你的起源是设定的运行
git remote -v
2.重命名它,或改变URL,删除它,然后添加正确的一个。
git remote remove orgin
3. 增加一个
git remote add origin https://github.com/fengzhiyugithub/LeetCode.git
4. 重新pull
git pull origin master
三、windows使用git时出现:warning: LF will be replaced by CRLF
windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示。
释疑:
$ rm -rf .git // 删除.git
$ git config --global core.autocrlf false //禁用自动转换
然后重新执行:
$ git init
$ git add .
四、为什么初始化远程仓库要使用git init --bare
释疑:
参考:为什么初始化远程仓库要使用git init --bare
git init 和 git init --bare 的区别
用"git init "初始化的版本库用户也可以在该目录下执行所有git方面的操作。但别的用户在将更新push上来的时候容易出现冲突。
比如有用户在该目录(就称为远端仓库)下执行git操作,且有两个分支(master 和 b1),当前在master分支下。另一个用户想把自己在本地仓库(就称为本地仓库)的master分支
的更新提交到远端仓库的master分支,他就想当然的敲了
git push origin master:master
于是乎出现
因为远端仓库的用户正在master的分支上操作,而你又要把更新提交到这个master分支上,当然就出错了。
但如果是往远端仓库中空闲的分支上提交还是可以的,比如
git push origin master:b1 还是可以成功的
解决办法就是使用”git init --bare”方法创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操
作的话,只会得到下面的错误(”This operation must be run in a work tree”)
这个就是最好把远端仓库初始化成bare仓库的原因。
以下参考:辛星浅析git init中的--bare选项,也就是裸仓库
通常如果一个仓库作为远程仓库使用的时候,我们初始化的时候通常是git init --bare,首先解释一下这个bare,它翻译成汉语即"裸的",他之会生成一类文件,用于记录版本库历史记录的.git目录下面的文件,而不会包含实际项目源文件的拷贝,因此该版本库不能称为工作目录(working tree)。
当不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件,这些版本记录文件就存放在.git目录下,而使用--bare选项时,就不再生成.git目录,而只是生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面。
使用git init初始化的版本库用户也可以在该目录下执行所有git方面的操作,但是别的用户在将更新push上来的时候容易出现冲突。如果远端仓库正在使用某个分支,而我们又要把更新提交到这个分支上,就可能会出错。当然,如果我们是向远程仓库中的空闲分支上提交,还是不会有问题的。
我们通常的解决办法就是使用git init --bare来创建一个裸仓库,之所以叫做裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果我们进行其他操作的话,会得到诸如This operation must be run in a work