bug记录
git pull 需要输入账号密码
Ubuntu 下每次 git pull 都需要输入账号密码,太麻烦了。
- 在 Home 目录下执行
git config --global credential.helper store
; - 在工作空间下再执行
git pull
; - 输入账号密码;
- 流程执行完毕后下次再输入
git pull
时就不用输入账号密码了; - 此时查看
~/.gitconfig
文件会看到[credential] helper = store
; - 同时会生成
~/.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 clone Timed out
git clone 的时候发现这个报错:Failed to connect to github.com port 443: Timed out
- 打开 ipaddress,查询
github.com
和github.global.ssl.fastly.net
两个域名,并分别记录下其对应的 ip; - 复制查询后的 ip,然后在 hosts 文件中做出相应地修改(hosts 文件路径:C:\Windows\System32\drivers\etc);
140.82.114.3 github.com
151.101.185.194 github.global.ssl.fastly.net
- 修改后保存退出,在 cmd 命令行执行
ipconfig /flushdns
刷新命令;
ssh 同时连接 github 和 gitee
一台电脑怎么同时通过 ssh 连接 github 和 gitee。
- 进入 .ssh;
- 分别生成两个平台的 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
- 测试 ssh 是否配置完毕;
执行
ssh -T git@gitee.com
首次连接需输入yes
通过,返回success
则表示连接成功,github 通过同样操作测试。
多台电脑使用统一的 ssh 文件
.ssh 文件夹压缩保存,在其他电脑上解压放入对应的目录下; 这里需要注意 id_rsa 和 id_rsa.pub 的权限,id_rsa 的权限是 600,id_rsa.pub 的权限是 644。
如果上述方法不能通过测试,则需要在目标设备先创建好同名的 ssh ,然后用之前的私钥和公钥覆盖掉目标设备上的文件。