Git 实用指南及踩坑记录

483 阅读2分钟

1. git 配置用户名、邮箱、SSH公钥

git 设置 用户名和邮箱:

git config --global user.name "xxx"
git config --global user.email "xxx"

如果不加 --global 则只设置当前仓库的用户名和邮箱

git 查看 用户名和邮箱:

git config user.name
git config user.email

为了避免每次提交时输入密码,应该把本地的 ssh 公钥放在远程 git 服务中。
怎么查看电脑的 ssh 公钥:

  1. ssh-keygen 生成 ssh 公钥和私钥,路径默认为 ~/.ssh,密码可不输直接回车。(如果电脑已经有 .ssh 目录可省略这一步)
  2. cd ~/.ssh 进入 .ssh 目录
  3. id_rsa 是私钥;id_rsa.pub 是公钥,把公钥内容复制到远程 git 服务器中

2. git clone 时提示权限错误

报错信息:

$ git clone ssh://git@gitee.xxx.com/express-mock.git
Cloning into 'express-mock'...
git@gitee.xxx.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

解决方案:

这是因为 OpenSSH 的版本问题,具体解决步骤:

  1. 重新配 ssh 公钥,如果公钥已经配过且没有过期,此步可省略
cd ~ // 进入根目录
rm -rf .ssh // 递归强制删除目录
git config --global user.name "xxx" // 配置用户名
git config --global user.email "xxx" // 配置邮箱
git config --list // 查看配置列表
ssh-keygen // 重新生成 ssh key

然后把公钥配置在远程仓库中,公钥位置: ~/.ssh/id_rsa.pub

  1. 关键一步,更改 ssh 的配置文件,在 ~/.ssh/config 中加上如下配置:
    Host gitee.com 
    HostkeyAlgorithms +ssh-rsa 
    PubkeyAcceptedAlgorithms +ssh-rsa

参考文档:gitee.com/help/articl…

3. 以 ssh 方式 git clone 时出现报错

报错信息:

fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

解决方案:

此时可以以 http 的方式 clone 仓库:

git clone http://gitee.xxx.com/xxx.git

然后进入仓库,更改远程地址:

git remote set-url origin ssh://git@gitee.xxx.com/xxx.git
git remote -v // 查看是否更改成功

还是不要更改远程地址为 ssh 的了,因为改完之后 git pull 会报错:
fatal: protocol error: bad pack header
就先用 http 的方式吧

3. 更改 clone 仓库的用户名密码

对于 Windows 系统,打开 凭据管理器,点击 Windows 凭据,把目标仓库的记录删除或编辑即可。

b5796969ffd54025852338bf57a7c397.png