Git遇到的常見錯誤

前言

最近在使用git還是遇到了不少的問題,自己整理了部分問題以及解決辦法,後續繼續進行完善。

裏面有部分資料來源於網絡,具體的連接忘了,如侵必刪!

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

出現這樣的問題是 ssh key  有問題了

1、首先我得重新在git設置一下身份的名字和郵箱

git config --global user.name "yourname"

git config --global user.email“[email protected]"

注:yourname是你要設置的名字,your@email是你要設置的郵箱。

2、刪除.ssh文件夾(直接搜索該文件夾)下的known_hosts(手動刪除即可,不需要git)

3、git輸入命令

$ ssh-keygen -t rsa -C "[email protected]"(請填你設置的郵箱地址)

4.找到ssh位置   C:\Users\用戶名\.ssh
一般位置如上所示,找到id_rsa.pub文件用記事本打開復制到github ssh key中

2.git提交代碼到github衝突解決

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

解決方法

1.強制推送( **會覆蓋衝突以這次爲準,不建議 ** )

$ git push -f 

2.正常解決

git fetch origin 

git merge origin/master

3. Failed to connect to 127.0.0.1 port 1080: Connection refused拒絕連接錯誤

參考文章

git.png

4.git回退

方法1: git reset –hard HEAD ^ ( ^ 表示回到上一個版本,如果需要回退到上上個版本的話,將HEAD^改成

HEAD^^, 以此類推。那如果要回退到前100個版本,這種方法肯定不方便,我們可以使用簡便命令操作:

git reset –hard HEAD~100 );

#在window中執行的時候需要加上 git reset –hard HEAD ‘’^ ‘’

eg: git reset –hard HEAD ^

方法2 :git reset –hard 版本號 ,但是現在的問題是加入我已經關掉了命令行或者第三個版本的版本號,我並不知道?那麼要如何知道第三個版本的版本號吶。可以通過如下命令獲取到版本號: git reflog 找到commit的ID

小技巧 使用gitk 有驚喜呦

UTOOLS1585099894053.png

eg: git reset –hard 40f1d78

5.git Push需要輸入密碼

github上的工程clone到本地後,修改完代碼後想要push到github,但一直會有提示輸入用戶名及密碼

原因分析

出現這種情況的原因是我們使用了http的方式clone代碼到本地

也是使用http的方式將代碼push到服務器。

解決辦法

將http方式改爲ssh方式即可。

1.查看當前方式

git remote -v

2.把http方式改爲ssh方式。先移除舊的http的origin

git remote rm origin

3.添加新的ssh方式的origin:

git remote add origin [email protected]:VincentBlog/JavaBlog.git

4.改動完之後直接執行git push是無法推送代碼的,需要設置一下上游要跟蹤的分支,與此同時會自動執行一次git push命令,此時已經不用要求輸入用戶名及密碼啦!

git push --set-upstream origin master

git.png


6.合併git代碼 Pull is not possible because you have unmerged files…

解決方法:
1.pull代碼的時候會進行git merge操作導致衝突,需要將衝突的文件先resolve掉,再進行git add -u, git commit之後才能成功git pull。
2.如果想放棄本地的文件修改,可以使用git reset --hard FETCH_HEAD,FETCH_HEAD表示上一次成功時git pull之後形成的commit點。後面就可以成功git pull.
ps:git merge會形成MERGE-HEAD(FETCH-HEAD) 。git push會形成HEAD這樣的引用。HEAD代表本地最近成功push後形成的引用。

7.git項目不顯示綠色圖標或者紅色圖標解決辦法

1.win+r,regedit.exe,打開註冊表 按照文件的層次關係依次找到

HKEY_LOCAL_MACHINE–>SOFTWARE–>Microsoft–>Windows–>CurrentVersion–>Explorer–>ShellIconOverlayIdentifiers”這一項

或者編輯–>查找–>輸入ShellIconOverlayIdentifiers

將Tortoise相關的項都提到靠前的位置(重命名,在名稱之前加幾個空格)

Windows會使用掉4項默認排序,另外還有11項是供應用程序配置的,如果排在11項之後,可能導致應用程序的配置無效

排到靠前位置後 ,重啓資源管理器即可(任務管理器–>資源管理器(重新啓動))

tort.png


8. fatal:Unable to create index.lock File exists 錯誤。

暫存代碼時非法中止了操作,結果再次提交的時候一直報錯。

解決辦法:在項目根目錄下找到.git文件夾,刪掉裏面的index.lock文件即可。

官方對index.lock文件的解釋
在進行某些比較費時的git操作時自動生成,操作結束後自動刪除,相當於一個鎖定文件,目的在於防止對一個目錄同時進行多個操作。有時強制關閉進行中的git操作,這個文件沒有被自動刪除,之後你就無法進行其他操作,必須手動刪除。

9.從git中刪除文件而不從文件系統中刪除它**

如果你在git add 時操作不慎,最終可能會添加你不想提交的文件。 但是,git rm會將它從暫存區域以及文件系統中刪除,這可能不是你想要的。在這種情況下,確保只刪除暫存版本,並將文件添加到.gitingore以避免再次出現同樣的錯誤:

git reset filename          # or git remove --cached filename
echo filename >> .gitignore # add it to .gitingore to avoid re-adding it

10. 解決git clone 子模塊沒下載全的問題

git submodule update --init --recursive

11.代碼可以pull卻不能push Access denied. fatal: The remote end hung up unexpectedly

1.使用了git clone http://xxx的形式,這是以只讀的方式來獲取代碼的。需要重新拉取代碼。git clone git@xxx。這就是爲什麼git提供了http和ssh兩種類型的鏈接的原因。
2.公鑰加錯地方了,項目公鑰是隻讀屬性,你要把它刪除,加到個人公鑰裏面

12.其他分支可以合併,當合並master代碼時候遇到 You are not allowed to push code to protected branches on this project

解決方法:遇到這種情況多是master分支被設置爲保護分支了,需要有管理員身份的賬號可以合併,如果想非管理賬號也想合併,需要將master去除保護分支的設置

13.Authentication failed for 修改密碼後遇到的坑

最近修改過git密碼,修改完後發現git無法獲取代碼

操作步驟:控制面板=》憑據管理器=》Windows憑據 =》普通憑據=》刪除/更新密碼

032601.png

參考文章:

Git 遇到的坑

使用Git過程中經常會遇到的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章