GitHub上的版本和本地版本冲突的解决方法
这是自己曾经遇到过的问题,分享给大家,也方便自己下次查找
问题描述
在github上创建项目,在本地运行:
| 1 | git init | 
而忘记git pull -f --all导致github上的版本里有readme文件和本地版本冲突,git弹出以下错误:
| 1 | Username for 'https://github.com': XXXX | 
解决方法
参考了xwdreamer以及他文章中提及的文章(详见参考文献2、3),其实最简单的解决方法就是一句话:
| 1 | git push -u origin master -f | 
意思是:使用本地的文件强制覆盖已有的分支,因此可能会造成git上文件的修改丢失。使用强制覆盖前记得检查本地和git上文件的修改进度和情况。
终极解决方法
删除项目内的.git文件夹,一切重新来过。哈哈。注意,GitHub上的版本记录可能会全部丢失。
以下内容也适合第一次提交到GitHub
准备工作
- 你要有个GitHub账号和仓库(废话)
- 电脑安装了Git或类似的软件(也算是废话):Git for Windows or 其它
- 进入你的本地仓库(就是需要上传的项目文件夹内)
开始工作
| 1 | git init | 
仓库有两种操作方式,一种是使用https,另一种是SSH,这里仅介绍SSH的方式。
两者的区别主要有:
(1)使用Https可以克隆任意GitHub上的项目;而用SSH的话,必须是项目的拥有者或管理员,或使用SSH Key,否则会无法克隆。
(2)Https每次push都需要输入用户名和密码,而使用SSH则可以不需要,使用密匙匹配,直接git push。
(3)SSH传输的数据是经过压缩的,可以加快传输的速度,安全性与速度都更优。
添加SSH Key操作
上述第二步执行后,默认会在C:\Users\用户名\.ssh中的文件中生成SSK Key(如果没有输入,一路回车的话,生成的文件是id_rsa.pub ,以及默认无密码)
完成后会提示已经生成成功了。

上传Key到Github
- 打开 id_rsa.pub 文件,复制文件中的 key,粘贴到 GitHub 网站 Account Settings 中的 SSH keys,Add SSH key 中。如图:

- 验证配置是否成功,在git中输入 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19- ssh -T git@github.com 
 #以下是返回的信息
 #成功的情况
 The authenticity of host 'github.com (IP ADDRESS)' can't be established.
 RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
 Are you sure you want to continue connecting (yes/no)?
 #键入yes
 yes
 #配置成功
 Hi username! You've successfully authenticated, but GitHub does not
 provide shell access.
 #失败的情况
 The authenticity of host 'github.com (IP ADDRESS)' can't be established.
 RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
 Are you sure you want to continue connecting (yes/no)?
 #这种情况需回去检查密匙是否复制错了,不匹配,或检查GitHub上是否成功上传。重新操作一遍试试
- 设置用户名和email - 1 
 2- git config --global user.name "your username" 
 git config --global user.email "your email@youremail.com"
- 添加项目 - 1 
 2
 3- git remote add origin git@github.com:XXX/XXX.git #可以直接复制项目页面“Clone or download”中的地址 
 git config branch.master.remote origin #设置分支为origin
 git config branch.master.merge refs/heads/master
- 提交文件 - 1 
 2- git add -A #添加文件夹内所有文件 
 git commit -m "填写注释"
其他git命令备忘
- 新建目录,将其初始化成Git代码库 - 1 - git init "newfolder" 
- 下载某个项目及其历史 - 1 - git clone url 
- 分支操作 - 1 
 2
 3
 4
 5
 6- git branch 
 git branch -r
 git branch new_branch # 创建本地分支,注意新分支创建后不会自动切换为当前分支
 git checkout new_branch # 切换分支
 git checkout new_branch # 创建新分支并立即切换到新分支
 git push origin master:newmaster # origin是远程主机,master是当前分支,newmaster是新分支
- 修改配置 - 1 
 2
 3
 4- git config --list 
 git config -e --global
 git config --global user.name "username"
 git config --global user.email "email address"
- 删除文件 - 1 
 2- git rm file1 # 删除file1,并将删除记录放入暂存区 
 git rm --cached file1 # 停止追踪file1,该文件会保留在工作区