Skip to main content

bug记录

git pull 需要输入账号密码

Ubuntu 下每次 git pull 都需要输入账号密码,太麻烦了。

  1. 在 Home 目录下执行 git config --global credential.helper store
  2. 在工作空间下再执行 git pull
  3. 输入账号密码;
  4. 流程执行完毕后下次再输入 git pull 时就不用输入账号密码了;
  5. 此时查看 ~/.gitconfig 文件会看到 [credential] helper = store
  6. 同时会生成 ~/.git-credentials,可查看自己的账号密码,形式是: https://domain:password@username

Windows 下换行问题

Windows 平台下使用 git add 文件时,经常出现“warning: LF will be replaced by CRLF”的提示。

其实,这是因为在文本处理中,CR(CarriageReturn)和 LF(LineFeed)是不同操作系统上使用的换行符。

  • Dos 和 Windows 平台: 使用回车(CR)和换行(LF)两个字符来结束一行,回车+换行(CRLF),即“\r\n”;
  • Mac 和 Linux 平台:只使用换行(LF)一个字符来结束一行,即“\n”;

因此,许多 Windows 上的编辑器会悄悄把行尾的换行(LF)字符转换成回车(CR)和换行(LF),或在用户按下 Enter 键时,插入回车(CR)和换行(LF)两个字符。

这样带来的问题就是

  • Unix/Mac 系统下的文件在 Windows 里打开的话,所有文字会变成一行;
  • Windows 里的文件在 Unix/Mac 下打开的话,在每行的结尾可能会多出一个 ^M 符号。
  • Linux 保存的文件在 Windows 上用记事本看的话会出现黑点;

这些问题都可以通过一定方式进行转换统一,例如,在 Linux 下,命令 unix2dos 是把 Linux 文件格式转换成 Windows 文件格式,命令 dos2unix 是把 Windows 格式转换成 Linux 文件格式。

情况一,代码不会跨系统开发。可以选择关掉自动转换的功能,但是如果你和你的合作者用不同的系统进行开发时,关掉这个自动转换的功能可能会导致代码显示异常。

# 关闭自动转换(当前仓库)
git config core.autocrlf false

# 关闭自动转换(全局仓库)
git config --global core.autocrlf false

情况二,代码需要跨系统开发。可以在 Windows 系统上设置为 true,在 Linux 和 Mac 上设置为 input

# 提交时转换为 LF,检出时转换为 CRLF(Windows)
$ git config --global core.autocrlf true

# 提交时转换为 LF,检出时不转换(Linux)
$ git config --global core.autocrlf input

参考 git 配置中的 core.autocrlf 和 core.safecrlf

撤销 git add

如何不小心执行了 git add . 操作,但是又不能提交所有的文件,因为对应不同的分支,现在怎么样可以将 git add 撤销回来,只需要三步。

# 版本回退
git reset --hard 版本号

# 绿字变红字(撤销 add)
git reset HEAD

# 红字变无 (撤销没 add 修改)
git checkout -- 文件

参考撤销 git add

git clone Timed out

git clone 的时候发现这个报错:Failed to connect to github.com port 443: Timed out

  1. 打开 ipaddress,查询 github.comgithub.global.ssl.fastly.net 两个域名,并分别记录下其对应的 ip;
  2. 复制查询后的 ip,然后在 hosts 文件中做出相应地修改(hosts 文件路径:C:\Windows\System32\drivers\etc);
140.82.114.3 github.com
151.101.185.194 github.global.ssl.fastly.net
  1. 修改后保存退出,在 cmd 命令行执行 ipconfig /flushdns 刷新命令;

ssh 同时连接 github 和 gitee

一台电脑怎么同时通过 ssh 连接 github 和 gitee。

  1. 进入 .ssh;
  2. 分别生成两个平台的 key;
$ ssh-keygen -t rsa -C "xxxx@email.com" -f "github_id_rsa"
$ ssh-keygen -t rsa -C "xxxx@email.com" -f "gitee_id_rsa"

完成后,会在 C:\Users\Administrator\.ssh 文件夹下生成 github 和 gitee 的私钥和公钥文件; 3. 把公钥文件 gitee_id_rsa.pub 中的 key 复制到 github 和 gitee 网页端的 ssh 公钥中; 4. 创建 config 文件解决 ssh 冲突,在 .ssh 下添加 .config 文件;

# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
  1. 测试 ssh 是否配置完毕; 执行 ssh -T git@gitee.com 首次连接需输入 yes 通过,返回 success 则表示连接成功,github 通过同样操作测试。

多台电脑使用统一的 ssh 文件

.ssh 文件夹压缩保存,在其他电脑上解压放入对应的目录下; 这里需要注意 id_rsa 和 id_rsa.pub 的权限,id_rsa 的权限是 600,id_rsa.pub 的权限是 644。

如果上述方法不能通过测试,则需要在目标设备先创建好同名的 ssh ,然后用之前的私钥和公钥覆盖掉目标设备上的文件。