git clone
案例一
- 問題 trace :
fatal:Authentication failed for '...' - 原因分析一:
使用ssh協(xié)議下載代碼,賬戶認(rèn)證失敗, git 賬號,郵箱等信息錯(cuò)誤。 - 解決方法一:
重新配置用戶信息
使用以下命令查詢用戶信息是否配置正確。git config --global user.name [username] git config --global user.email [email]git config --list - 原因分析二:
使用了http協(xié)議下載代碼,密碼輸入錯(cuò)誤。 - 解決方法二:
輸入正確的密碼進(jìn)行登錄。 - 擴(kuò)展:
如果是在 push 時(shí)報(bào)錯(cuò)這個(gè)錯(cuò)誤,解決方法為git config –system –unset credential.helper,之后再次 push 會(huì)提示輸入名稱及密碼。
案例二
- 問題 trace :
Permission denied(publickey) - 原因分析:
沒有貼公鑰,或者公鑰貼錯(cuò)了代碼服務(wù)器;在服務(wù)器上的公鑰不是操作環(huán)境(如本機(jī)、虛擬機(jī)或編譯服務(wù)器等)上的公鑰;公鑰損壞或者意外刪除。 - 解決方法:
將公鑰貼到要下載的 git 服務(wù)器的賬號下。
案例三
- 問題 trace :
error:unable to create file XXXX:file name too long - 原因分析:
項(xiàng)目中某個(gè)文件的名字太長。 - 解決方法:
git config --global core.longpaths true git clone XXX #在克隆一次即可
案例四
- 問題 trace :
ssh: Could not resolve hostname XXXX : Name or service not known - 原因分析:
無法解析域名。 - 解決方法:
添加域名解析即可。
windows環(huán)境,添加到c:/windows/system32/drivers/etc/hosts文件中;
Linux環(huán)境,添加到/etc/hosts文件中。格式為IP地址 域名。
案例五
- 問題 trace :
ssh:connect to host XXX port 22: Connection refused fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. - 原因分析:
git 服務(wù)器的 ssh 端口不是 22 - 解決方法:
在 ~/.ssh文件夾下,新建 config文件,并輸入以下內(nèi)容,保存。Host <IP> HostName <host_name> Port <port> PubkeyAuthentication yes
git push
案例一
- 問題 trace :
fatal: Unpack error, check server log ... ! [remote rejected] HEAD -> refs/heads/master (n/a (unpacker error)) - 原因分析:
默認(rèn)情況下 git push 會(huì)在向服務(wù)器推送時(shí)進(jìn)行優(yōu)化,以將所發(fā)送的包降低到最小。 做法是發(fā)送時(shí)忽略本地倉庫和遠(yuǎn)端倉庫中共有的部分.。即 git push 默認(rèn)是采用–thin選項(xiàng)的。在這個(gè)問題上,疑似某個(gè) git 對象和服務(wù)器不一致了,故需要去掉這個(gè)參數(shù)。 - 解決方法:
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 - 原因分析:
當(dāng)遠(yuǎn)程服務(wù)器是 gerrit 時(shí),下載代碼出現(xiàn)這個(gè)錯(cuò)誤,則是因?yàn)闆]有在網(wǎng)頁上選擇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界面下,不要操作,執(zhí)行:wq退出 git log -2 #可以查看Change-Id是否補(bǔ)全 git push origin
git pull
案例一
- 問題 trace :
There is no tracking information for the current branch - 原因分析:
本地分支沒有跟遠(yuǎn)程分支相關(guān)聯(lián)。 - 解決方法:
git branch --set-upstream-to=origin/<遠(yuǎn)程分支> <本地分支>
案例二
- 問題 trace :
unable to unlink old…………………..(Permisson denied) - 原因分析:
文件被占用,沒有釋放進(jìn)程。 - 解決方法:
關(guān)閉占用文件的 IDE ,再操作 git 。
案例三
- 問題 trace :
warning:remote HEAD refers to nonexistent ref, unable to checkout. - 原因分析:
本地沒有對應(yīng)的遠(yuǎn)程分支。 - 解決方法:
先通過$git branch -a;查看分支情況,然后再使用$git checkout -b <本地分支名> origin/<遠(yuǎn)程分支名>(兩個(gè)分支的名字需要相同)切換到需要的分支上。
持續(xù)更新中。。。