Git的妙用

有时候想要下载Github上的库,但是因为母亲对于我们的保护,下载速度往往只有10k/s左右,我们可以选择在Gitee上同步此库,然后在Gitee上下载,最后几秒就搞定啦!

如果是自己的库需要关联的话,可以这样做

  1. 先用 git 把库从 Gitee 上 clone 下来
  2. 然后 删除库目录中的.git文件夹
  3. 创建SSH秘钥 ,使用 SSH 密钥连接本地仓库和 github 远程仓库
  4. 然后 用 git 把本地库与远程库关联起来
    1
    git remote add origin git@github.com:你的用户名/你的库名.git

创建SSH秘钥

在 GitHub 上,一般都是通过 SSH 来授权的,而且大多数 Git 服务器也会选择使用 SSH 公钥来进行授权,所以想要向 GitHub 提交代码,首先就得在 GitHub 上添加 SSH key配置。

此时是没有 SSH 加密文件的,需要我们手动添加,首先使用命令:

1
2
# 填写你自己的github注册邮箱
ssh-keygen -t rsa -C "youremail@example.com"

指定 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上提交代码。

GitHub绑定SSH

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

1
ssh -T git@github.com

SSH验证

问题归纳

Git报错:index.lock File exists

Git 提交(commit 或 discard, remove等)时,报错,显示错误如:

1
2
3
4
5
fatal: Unable to create 'XXXXXX/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

解决方案:

根据提示找到对应文件 index.lock ,删除即可。

强制拉取覆盖本地

在使用git管理代码时,我们总会遇到在本地修改了一通,结果发现忒乱了想重新来过,本能地尝试本地删除然后重新git pull,结果发现没用,文件根本拉取不下来。那行吧,咱直接从远程仓库拉取代码覆盖本地就行了。

1
2
3
git fetch --all
git reset --hard origin/master
git pull //可以省略

合并在一起就是

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
2
3
4
5
Total 0 (delta 0), reused 0 (delta 0)

To https://bitbucket.org/jnj_edg/akg-solution.git

+ f20ec88...d2128f5 master -> master (forced update)

Git 远程仓库clone时 密码输错了 如何修改

当输错时 ,就没有再次提供给我输入密码的机会,直接报错,如图:

查了下原因,原来是Windows的凭据管理器里面保存了你刚才输错的账号信息

去这里修改你刚才的账号密码,再次clone,OK!!!

应该还有其他的方法,欢迎留言

自动合并失败

问题:

1
error: You have not concluded your merge (MERGE_HEAD exists).

出现这个问题的原因可能是在以前pull下来的代码自动合并失败。

解决方案一:
保留本地的更改,中止合并->重新合并->重新拉取

1
2
3
git merge --abort
git reset --merge
git pull

 git pull之后然后重新解决冲突,再push,(记得需要稍微跟自己push的要有一点区别,要不然又会造成这样的情况)

解决方案二:
解决方案二:舍弃本地代码,远端版本覆盖本地版本(慎重)

1
2
3
git fetch --all
git reset --hard origin/master
git fetch

to be continued…