Git使用——问题释疑

一、出现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  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值