- 項目背景與目的:在pycharm中配置好git,從而能夠實現將本地代碼文件推送到遠程倉庫(github)
- 重要:你必須有基本的git前置知識,不懂就去B站學!
- 項目環境與軟件版本:pycharm(2024.3.1)+ git(2.47.0)+ 個人github賬户
- 錯誤記錄:記錄配置過程中的bug與debug(確實難繃,配置這個坑踩了個遍)
1.pycharm中配置版本控制工具git
操作步驟如圖:【文件】→【設置】→【版本控制】→【Git】→【測試】
最後點擊測試之後如果顯示git版本,則説明配置成功
2.pycharm中綁定個人github賬户
操作步驟如圖:【文件】→【設置】→【版本控制】→【github】→【點擊+】→【通過github登錄】
接着會打開一個瀏覽器頁面讓你把github授權給pycharm(就是登錄授權那一套)
驗證通過後回到PyCharm中,選擇GitHub賬號,修改連接超時時間,點擊【確定】
3.本地代碼推送至github
該場景有兩種複雜情況,注意區分:
- 我想創建一個全新的項目:此時github還不存在對應的倉庫。此場景開發者使用pycharm遠程往github中新建一個倉庫
- 我想在現有的項目上添磚加瓦:此時github已經有倉庫,此時需要開發者拉取倉庫文件到本地在倉庫文件的基礎上開發;或強行合併本地和遠程倉庫的文件
3.1創建全新項目 | 對應使用pycharm控制github新建一個全新的倉庫
此時github還不存在對應的倉庫。此場景開發者使用pycharm遠程往github中新建一個倉庫
點擊【VCS】→【Import into Version Control】→【Share Project on GitHub】
填寫倉庫名及遠程名,描述可不填寫,若填寫必須是英文,不可出現漢字、空格、符號及換行符,然後點擊【Share】
點擊【Share】後彈出下圖彈窗,可修改提交信息,默認全選即可,點擊【Add】
成功配置Git及GitHub後頁面右上角出現git操作快捷圖標,log中提示GitHub上創建空倉庫成功
提交一段代碼,點擊提交按鈕(快捷鍵Ctrl+K)→勾選需提交的信息→輸入提交內容→點擊【Commit】提交
若上一步並非Commit和push同時進行,則應增加以下步驟點擊push圖標(快捷鍵Ctrl+Shift+K),選擇提交的信息,點擊【Push】
瀏覽器中登錄GitHub查看倉庫中的文件,已經出現push九九乘法表代碼
3.2在現有項目上添磚加瓦 | 對應使用pycharm(其實是git)拉取倉庫到本地
此時github已經有倉庫,此時需要開發者拉取倉庫文件到本地在倉庫文件的基礎上開發;或強行合併本地和遠程倉庫的文件,也就是分支的合併處理
需要注意的是,目前git默認分支是master分支,然而github的默認分支是main分支。因此首先需要將git的默認預設的分支修改為main。否則的話你直接推送就會在main分支的基礎上新建master分支,這不是我們想要的
# 查看當前默認分支名稱
git config --global init.defaultBranch
# 修改默認分支名稱為 main
git config --global init.defaultBranch main
但是如果你已經創建好了master分支怎麼辦?這就需要進行分支合併操作:
默認僅有master分支,點擊右下角master分支,點擊【+New Branch】新建分支
創建分支,輸入分支名稱後點擊【Create】
切換分支,點擊右下角分支名稱,選擇要切換的分支,點擊【Checkout】後,等待分支切換成功
在分支上編寫並提交代碼,提交方式和上文相同,提交頁面左下角及整個頁面右下角會顯示當前分支
分支代碼提交名push後,可合併分支,首先切換到要合併的分支上(此處切到master主線),點擊分支名稱,選擇要被合併的分支,點擊【Merge into Current】,等待合併成功
分支合併後即可刪除分支,刪除分支必須先切換到其它分支,如:共有master和dev分支兩個分支,若要刪除dev,必須先切換到master上,點擊左下角Git,選擇要刪除的遠程和本地分支,點擊刪除圖標即可
4.常見問題
4.1 couldn't kickstart handshaking,無法啓動握手
- 檢查網絡是否正常,在File】→【Settings】→【Version Control】→【GitHub】中修改Connection timeout連接超時時間
- 檢查GitHub中關聯倉庫是否被刪除
以上兩點正常可嘗試重啓PyCharm後檢查是否正常
若是問題依然存在,點擊【File】→【Settings】→【Version Control】,選擇GitHub賬號,點擊【-】號,點擊【reset】,或者點擊【+】重新添加GitHub賬號
4.2 fatal: unable to access ‘https://github.com/.../.git‘: Recv failure Connection was rese,無法連接github
這個問題通常是由網絡連接問題或代理設置不正確導致的
方案一:終端執行以下指令,清除 Git 的代理設置,讓其直接連接網絡進行操作
git config --global --unset http.proxy
git config --global --unset https.proxy
方案二:有時候取消代理設置仍然會出現報錯,這時可以在方案一的基礎上,繼續設置系統代理來解決
打開你的設置,搜索"代理",會出現"代理服務器設置",此時直接找到對應的對應的地址和端口
在終端輸入以下命令,設置 Git 使用本地代理:
git config --global http.proxy http://127.0.0.1:7897
設置完成後,可以通過以下命令檢驗是否設置成功:
git config --global -l
4.3 refusing to merge unrelated histories,本地倉庫和遠程倉庫的對應文件不一致
出現這個問題的最主要原因還是在於本地倉庫和遠程倉庫實際上是獨立的兩個倉庫,由於兩個分支擁有不相關的提交歷史,所以是拒絕合併的。假如我之前是直接clone的方式在本地建立起遠程github倉庫的克隆本地倉庫就不會有這問題了。
https://blog.csdn.net/junruitian/article/details/88361895
https://blog.csdn.net/quhan97/article/details/122726787
如果你的目的是將遠程的代碼同步到本地並解決歷史不一致問題,則可以在執行pull命令時指定一個 --allow-unrelated-histories 的參數,會允許合併不相關的歷史。
git pull origin main --allow-unrelated-histories
然後應該就可以進行推送到遠程倉庫的操作了
4.4 safe.directory ... not absolute,存儲庫不安全
Git 近期進行了版本升級,添加了新的目錄安全限制。造成在進行git常規操作時,或在編輯器如Vs中無法發現.git文件。所以需要設置安全目錄
方案一:哪個目錄裏有git,就通過命令行添加哪個目錄,多個目錄,多次添加
git config --global --add safe.directory D:/www/your-project
git config --global --add safe.directory D:/www/other-project
方案二:可以通過加通配符為*,忽略所有文件夾。該方法適用於只有本人一個用户使用的電腦,確保無其它用户,否則存在安全問題
git config --global --add safe.directory "*"
最後如何確認 safe.directory 配置已生效
git config --global --get-all safe.directory