Git
Git 的妙用
有时候想要下载 Github 上的库,但是因为母亲对于我们的保护,下载速度往往只有 10k/s 左右,我们可以选择在 Gitee 上同步此库,然后在 Gitee 上下载,最后几秒就搞定啦!
如果是自己的库需要关联的话,可以这样做
- 先用 git 把库从 Gitee 上 clone 下来
- 然后 删除库目录中的. git 文件夹
- [创建 SSH 秘钥](# 创建 SSH 秘钥) , 使用 SSH 密钥连接本地仓库和 github 远程仓库
- 然后 用 git 把本地库与远程库关联起来
1
git remote add origin git@github.com: 你的用户名 / 你的库名. git
创建 SSH 秘钥
在 GitHub 上,一般都是通过 SSH 来授权的,而且大多数 Git 服务器也会选择使用 SSH 公钥来进行授权,所以想要向 GitHub 提交代码,首先就得在 GitHub 上添加 SSH key 配置。
此时是没有 SSH 加密文件的, 需要我们手动添加, 首先使用命令:
1 | # 填写你自己的 github 注册邮箱 |
指定 RSA 算法生成密钥,然后敲三次回车键,期间不需要输入密码,之后就会生成两个文件,分别为 id_rsa 和 id_rsa.pub,即密钥 id_rsa 和公钥 id_rsa.pub.
对于这两个文件,其都为隐藏文件,默认生成在以下目录:
- Linux 系统:~/.ssh
- Mac 系统:~/.ssh
- Windows 系统:C:\Documents and Settings\username.ssh
- Windows 10 ThinkPad:C:\Users\think.ssh
密钥和公钥生成之后,我们要做的事情就是把公钥 id_rsa.pub 的内容添加到 GitHub,这样我们本地的密钥 id_rsa 和 GitHub 上的公钥 id_rsa.pub 才可以进行匹配,这样后就可以像 GitHub 上提交代码。

如上图所示,我们只需要将公钥 id_rsa.pub 的内容粘贴到 Key 处的位置(Titles 的内容不填写也没事),然后点击 Add SSH key 即可.
在我们添加完 SSH key 之后,也没有明确的通知告诉我们绑定成功啊!
不过我们可以通过在 Git Bash 中输入 ssh -T git@github.com 进行测试:
1 | ssh -T git@github.com |

问题归纳
Git 报错:index.lock File exists
Git 提交(commit 或 discard, remove 等)时,报错,显示错误如:
1 | fatal: Unable to create 'XXXXXX/.git/index.lock': File exists. |
解决方案:
根据提示找到对应文件
index.lock,删除即可。
强制拉取覆盖本地
在使用 git 管理代码时,我们总会遇到在本地修改了一通,结果发现忒乱了想重新来过,本能地尝试本地删除然后重新 git pull,结果发现没用,文件根本拉取不下来。那行吧,咱直接从远程仓库拉取代码覆盖本地就行了。
1 | git fetch --all |
合并在一起就是
1 | git fetch --all && git reset --hard origin/master && git pull |
git fetch 指令是下载远程仓库最新内容,不做合并
git reset 指令把 HEAD 指向 master 最新版本
git 强制提交本地分支覆盖远程分支
1 | git push origin master --force |
运行结果:
1 | Total 0 (delta 0), reused 0 (delta 0) |
Git 远程仓库 clone 时 密码输错了 如何修改
当输错时 ,就没有再次提供给我输入密码的机会,直接报错,如图:

查了下原因,原来是 Windows 的凭据管理器里面保存了你刚才输错的账号信息
去这里修改你刚才的账号密码,再次 clone,OK!!!

应该还有其他的方法,欢迎留言
自动合并失败
问题:
1 | error: You have not concluded your merge (MERGE_HEAD exists). |
出现这个问题的原因可能是在以前 pull 下来的代码自动合并失败。
解决方案一:
保留本地的更改,中止合并 -> 重新合并 -> 重新拉取
1 | git merge --abort |
git pull 之后然后重新解决冲突,再 push,(记得需要稍微跟自己 push 的要有一点区别,要不然又会造成这样的情况)
解决方案二:
解决方案二:舍弃本地代码,远端版本覆盖本地版本(慎重)
1 | git fetch --all |
to be continued…