- 项目背景与目的:在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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。