git常见问题指北
2020-11-12 本文已影响0人
Eroc
git clone
案例一
- 问题 trace :
fatal:Authentication failed for '...'
- 原因分析一:
使用ssh
协议下载代码,账户认证失败, git 账号,邮箱等信息错误。 - 解决方法一:
重新配置用户信息
使用以下命令查询用户信息是否配置正确。git config --global user.name [username] git config --global user.email [email]
git config --list
- 原因分析二:
使用了http
协议下载代码,密码输入错误。 - 解决方法二:
输入正确的密码进行登录。 - 扩展:
如果是在 push 时报错这个错误,解决方法为git config –system –unset credential.helper
,之后再次 push 会提示输入名称及密码。
案例二
- 问题 trace :
Permission denied(publickey)
- 原因分析:
没有贴公钥,或者公钥贴错了代码服务器;在服务器上的公钥不是操作环境(如本机、虚拟机或编译服务器等)上的公钥;公钥损坏或者意外删除。 - 解决方法:
将公钥贴到要下载的 git 服务器的账号下。
案例三
- 问题 trace :
error:unable to create file XXXX:file name too long
- 原因分析:
项目中某个文件的名字太长。 - 解决方法:
git config --global core.longpaths true git clone XXX #在克隆一次即可
案例四
- 问题 trace :
ssh: Could not resolve hostname XXXX : Name or service not known
- 原因分析:
无法解析域名。 - 解决方法:
添加域名解析即可。
windows
环境,添加到c:/windows/system32/drivers/etc/hosts
文件中;
Linux
环境,添加到/etc/hosts
文件中。格式为IP地址 域名
。
git push
案例一
- 问题 trace :
fatal: Unpack error, check server log ... ! [remote rejected] HEAD -> refs/heads/master (n/a (unpacker error))
- 原因分析:
默认情况下 git push 会在向服务器推送时进行优化,以将所发送的包降低到最小。 做法是发送时忽略本地仓库和远端仓库中共有的部分.。即 git push 默认是采用–thin
选项的。在这个问题上,疑似某个 git 对象和服务器不一致了,故需要去掉这个参数。 - 解决方法:
git push --no-thin origin HEAD:refs/head/<分支名>
案例二
- 问题 trace :
invalid committer
- 原因分析:
先提交生成的 committer 与后来更改的提交 email 地址不匹配,无效提交,需要更改邮箱名和用户名。 - 解决方法一:
git commit --amend --author='Your Name <邮箱地址>'#修改邮箱名和用户名
- 解决方法二(推荐):
git config --global --unset user.name git config --global --unset user.email git config --global user.name [username] git config --global user.email [email] git commit --amend --reset-author
案例三
- 问题 trace :
mising Change-Id in commit message footer
- 原因分析:
当远程服务器是 gerrit 时,下载代码出现这个错误,则是因为没有在网页上选择clone with commit-msg hooks
。 - 解决方法:
gitdir=$(git rev-parse --git-dir); scp -p -P ${port_id} ${uer_id}@${hostname}:hooks/commit-msg ${gitdir}/hooks/ #其中${gitdir}里面为具体的仓库名称 #注意hooks路径是否正确 #注意分支是否正确 git commit --amend #在弹出来的vim界面下,不要操作,执行:wq退出 git log -2 #可以查看Change-Id是否补全 git push origin
git pull
案例一
- 问题 trace :
There is no tracking information for the current branch
- 原因分析:
本地分支没有跟远程分支相关联。 - 解决方法:
git branch --set-upstream-to=origin/<远程分支> <本地分支>
案例二
- 问题 trace :
unable to unlink old…………………..(Permisson denied)
- 原因分析:
文件被占用,没有释放进程。 - 解决方法:
关闭占用文件的 IDE ,再操作 git 。
案例三
- 问题 trace :
warning:remote HEAD refers to nonexistent ref, unable to checkout.
- 原因分析:
本地没有对应的远程分支。 - 解决方法:
先通过$git branch -a
;查看分支情况,然后再使用$git checkout -b <本地分支名> origin/<远程分支名>
(两个分支的名字需要相同)切换到需要的分支上。
持续更新中。。。