Git(4) 解决Git相关问题的实用技巧

news2025/1/15 16:29:30

本文将介绍一些Git实用的技巧,实际操作中解决常见的Git问题。

在这里插入图片描述

问题1:将本地项目推送到远程仓库

如何将本地项目推送到远程仓库,包括处理常见错误的方法,并最终将代码推送到 main 分支。

步骤

1. 初始化本地仓库

确保已经在本地仓库中初始化了Git,并进行了初步的提交:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git init
PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git add .
PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git commit -m "init base project"
2. 检查当前分支

使用以下命令检查当前分支状态:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git branch
* master
3. 添加远程仓库

将远程仓库添加到本地仓库中:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git remote add origin git@github.com:28XX/BaseProject.git
4. 验证远程仓库

确保远程仓库添加成功:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git remote -v
origin  git@github.com:28XX/BaseProject.git (fetch)
origin  git@github.com:28XX/BaseProject.git (push)
5. 删除远程 master 分支

如果需要删除远程仓库的 master 分支,可以使用以下命令:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git push origin --delete master
6. 拉取远程 main 分支的更改

为了避免推送时出现非快进错误,需要先将远程 main 分支的更改拉取到本地:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git pull origin main --rebase

如果有冲突,需要解决冲突并继续:

# 解决冲突后
PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git add <冲突解决后的文件>
PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git rebase --continue
7. 推送本地 main 分支到远程
PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git push -u origin main

处理常见错误

错误1:src refspec main does not match any

如果推送到不存在的分支(如main)时,会出现此错误:

error: src refspec main does not match any
error: failed to push some refs to 'github.com:28XX/BaseProject.git'

解决方法是确保推送到正确的分支(如main):

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git push -u origin main
错误2:Permission denied (publickey)

如果没有配置SSH Key,会出现权限错误:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

解决方法是生成SSH Key并配置到GitHub账户中:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> ssh-keygen -t rsa -b 4096 -C "181856x57@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Administrator/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in C:\Users\Administrator/.ssh/id_rsa
Your public key has been saved in C:\Users\Administrator/.ssh/id

_rsa.pub

将生成的公钥添加到GitHub账户中:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3... 181856x57@qq.com

在这里插入图片描述

解除错误的上游关联并设置新的上游分支

如果本地分支与已删除的远程分支存在关联,需要解除这种关联并重新设置:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git branch --unset-upstream
PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git branch -u origin/main

成功推送

完成上述步骤后,再次尝试推送:

PS C:\Users\Administrator\AndroidStudioProjects\BaseProject> git push -u origin main
Enumerating objects: 269, done.
Counting objects: 100% (269/269), done.
Delta compression using up to 24 threads
Compressing objects: 100% (170/170), done.
Writing objects: 100% (269/269), 470.44 KiB | 1.37 MiB/s, done.
Total 269 (delta 38), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (38/38), done.
remote: 
remote: Create a pull request for 'main' on GitHub by visiting:
remote:      https://github.com/28XX/BaseProject/pull/new/main
remote: 
To github.com:28XX/BaseProject.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

问题2:解决Git Push连接失败的问题

在使用Git进行代码管理时,有时候会遇到连接失败的问题,例如在推送代码到远程仓库时出现如下错误:

PS D:\Project_2022\LearnBlog> git push -u origin main
fatal: unable to access 'https://github.com/28XX/LearnBlog.git/': Failed to connect to 127.0.0.1 port 7890 after 2061 ms: Connection refused

这个错误通常是由于代理设置不正确或网络连接问题导致的。以下是几种解决方法,帮助排查和解决这个问题。

1. 检查代理设置

检查的Git代理设置是否正确:

# 查看当前代理设置
git config --global --get http.proxy

# 取消代理设置
git config --global --unset http.proxy

# 如果需要使用代理,可以设置代理
git config --global http.proxy http://127.0.01:7890(举例)

如果不需要使用代理,确保取消代理设置:

git config --global --unset http.proxy

2. 检查网络连接

确保的网络连接正常。可以通过以下方法测试网络连通性:

  • 使用 ping 命令测试网络连通性:
ping github.com

3. 修改Git配置

有时候Git可能会尝试通过错误的IP地址连接,可以强制使用系统的DNS解析:

# 强制使用系统的DNS解析
git config --global http.proxy ""

4. 检查防火墙和安全软件

有时候防火墙或安全软件可能会阻止Git的连接,检查并确保这些软件没有阻止Git的网络访问。

5. 使用SSH连接

如果无法通过HTTPS连接,可以尝试使用SSH连接:

  1. 生成SSH密钥(如果还没有):
ssh-keygen -t rsa -b 4096 -C "181856x57@qq.com"
  1. 添加SSH密钥到SSH代理:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
  1. 将生成的公钥添加到GitHub账户中的SSH keys:
cat ~/.ssh/id_rsa.pub
  1. 修改远程仓库的URL为SSH格式:
git remote set-url origin git@github.com:28XX/LearnBlog.git
  1. 尝试使用SSH进行推送:
git push -u origin main

示例代码

假设不需要代理,以下是取消代理设置并推送代码的示例:

# 取消代理设置
git config --global --unset http.proxy

# 尝试推送代码
git push -u origin main

技巧1:修改远程仓库的URL为SSH格式

在遇到连接错误时,尝试将远程仓库的URL修改为SSH格式,这可以避免HTTP代理的问题。

git remote set-url origin git@github.com:28XX/LearnBlog.git

技巧2:恢复误删的.git/index文件

如果误删了.git/index会导致git status无法正常工作,可以先备份修改,然后使用git reset恢复。

# 备份修改

# 恢复.git/index
git reset

技巧3:查看提交的详细变更

使用git log命令查看每个提交的详细变更。

git log -p -- kernel/arch/arm64/boot/dts/rockchip/xxx-evb3568-v1b-hdmi.dts

比较最近两个提交的差异:

git diff HEAD^ HEAD kernel/arch/arm64/boot/dts/rockchip/xxx-evb3568-v1b-hdmi.dts

技巧4:忽略文件模式的更改

如果不想通过git status看到文件模式的更改,可以使用git config配置来忽略文件模式变化。

git config core.filemode false

总结

通过上述步骤,成功将本地项目推送到GitHub远程仓库的 main 分支中。在实际操作过程中,常常会遇到一些权限或分支错误,通过正确配置SSH Key和验证分支,可以顺利完成代码推送。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1968320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

类和对象的深入了解6

1.初始化列表 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"成员变量"后面跟一个放在括 号中的初始值或表达式。 class Date { public:Date(int year, int month, int day): _year(year), _month(month),…

Cellpress|单细胞文章|单细胞转录和大队列食管癌免疫治疗

新辅助免疫检查点阻断 (ICB) 在可手术食管鳞状细胞癌 (ESCC) 中显示出希望&#xff0c;但缺乏可用的疗效生物标志物。该文章对接受新辅助 ICB 的 ESCC 患者的肿瘤进行单细胞 RNA 测序&#xff0c;发现一组表达SPRY1 (CD8 Tex-SPRY1) 的耗竭 CD8 T 细胞亚群&#xff0c;其显示…

72.结构体变量直接赋值

目录 一.结构体变量直接赋值 二.视频教程 一.结构体变量直接赋值 通过上节课的学习得出了一个结论&#xff1a;俩个相同类型的结构体变量直接可以只用赋值号进行赋值。 像这样&#xff1a; struct test {int a;int b; };int main(void) {struct test x {1,2};struct test …

反序列化靶机实战serial(保姆级教程)

一.信息收集 靶机地址下载&#xff1a;https://download.vulnhub.com/serial/serial.zip 打开靶机&#xff0c;在kali虚拟机中进行主机存活探测 可以知道靶机ip地址为192.168.133.171 然后扫描端口 可以发现有一个22端口跟80端口 然后接下来用kali扫描它的目录 可以发现有一…

10年仓库管理经验:“管、存、发、盘”一文搞定!

前段时间去一家仓储设备公司交流学习&#xff0c;和一位有着10年经验的老仓管聊了个痛快&#xff0c;从他那儿学到了不少仓库管理的实践方法。 回来自己整理了一套仓库管理高效的实用方法&#xff0c;现在就来跟大家伙儿聊聊仓库管理中那些常见问题&#xff0c;以及我是怎么琢…

vite构建vue3项目hmr不生效问题踩坑记录

vite构建vue3项目hmr不生效问题踩坑记录 hmr的好处 以下是以表格形式呈现的前端开发中HMR&#xff08;热模块替换&#xff09;带来的好处&#xff1a; 好处描述提升开发效率允许开发者在不刷新整个页面的情况下实时更新修改的代码&#xff0c;减少等待时间保持应用状态在模块…

技术分享| 前端性能优化——虚拟滚动(Virtual Scroll)

前端遇到大量数据&#xff08;尤其是大数据表&#xff09;的DOM 渲染时&#xff0c;通常会卡顿&#xff0c;需要考虑优化性能问题&#xff0c;这里针对DOM 渲染引出“虚拟滚动”方案&#xff0c; 详细请在以下各文章中详细了解&#xff1a; vue插件 vue-virtual-scroll-list解决…

C语言| 文件操作详解(二)

目录 四、有关文件的随机读写函数 4.1 fseek 4.2 ftell 4.3 rewind 五、判定文件读取结束的标准与读写文件中途发生错误的解决办法 5.1 判定文件读取结束的标准 5.2 函数ferror与feof 5.2.1 函数ferror 5.2.2 函数feof 在上一章中&#xff0c;我们主要介绍了文件类型…

鸿蒙系统开发【事件订阅】网络

事件订阅 介绍 本示例通过ohos.telephony.observer等接口订阅网络状态、信号状态、蜂窝数据、sim状态等事件&#xff0c;并获取状态变化返回的结果。 效果预览 使用说明 1.打开应用&#xff0c;开启所有订阅事件开关。 2.开关一次移动网络&#xff0c;触发网络状态变化。 …

Linux-4:Shell编程——基础语法(50%-100%)

目录 前言 一、数组 1.数组定义 2.关联数组 3.数组长度 二、运算符 1.算术运算符 2.关系运算符 3.布尔运算符 4.逻辑运算符 5.字符串运算符 6.文件测试运算符 三、read命令 1.接收用户输入 2.开启转义 3. -p 输入提示 4. -s 静默模式 -t 设置超时时间 5.读取…

Spark Steaming有状态转换实验

创建一个streaming目录 mkdir streaming 一、运行网络版的WordCount 1. 连接虚拟机后利用sudo打开hosts后加入红色方框内语句并保存&#xff1a; sudo vim /etc/hosts Netcat是一个用于TCP/UDP连接和监听的Linux工具, 主要用于网络传输及调试领域。先下载&#xff1a; sudo…

简明中医辨证施治小程序

这是一款学习中医辨证施治的好工具&#xff0c;将中医内科、妇科、儿科常见疾病的辨证施治进行整理&#xff0c;各种疾病的辨证分型、症状、治法、方剂选用等均编辑成简明的条目&#xff0c;一目了然&#xff0c;另外内含方剂学及中药学&#xff0c;内容包括常用方剂的出处、组…

GO goroutine状态流转

Gidle -> Grunnable newproc获取新的goroutine&#xff0c;并放置到P运行队列中 这也是go关键字之后实际编译调用的方法 func newproc(fn *funcval) {// 获取当前正在运行中的goroutinegp : getg()// 获取调用者的程序计数器地址&#xff0c;用于调试和跟踪pc : getcallerp…

量化小白也能自动化挖掘出6万+因子

最近逛某乎&#xff0c;碰到了这个问题&#xff1a;如何看待量化交易WorldQuant世坤大赛北大牛人提交了6万因子&#xff1f; 我的第一直觉&#xff0c;这肯定不是纯手工挖出来的&#xff0c;6w个因子&#xff0c;一天挖一个&#xff0c;节假日都不休息的话&#xff0c;需要164年…

轻松入门Linux—CentOS,直接拿捏 —/— <6>vim集合

一、Vim操作详解 1、linux彩蛋 输入命令python会启动Python解释器&#xff0c;允许你输入和执行Python代码。然后&#xff0c;输入import this会导入this模块&#xff0c;它是Python的一种彩蛋&#xff08;Easter egg&#xff09;&#xff0c;然后得到下列结果 选中这段结果复…

Nacos安装教程(全网最靠谱,最简单~)

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 本文将详细介绍 Nacos 的安装及使用。 官方网址&#xff1a;Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方…

3.7.物体检测算法

物体检测算法 1.R-CNN ​ 首先使用启发式搜索算法来选择锚框&#xff0c;使用预训练模型对每个锚框抽取特征&#xff0c;训练一个SVM来对类别分类&#xff0c;最后训练一个线性回归模型来预测边缘框偏移。 ​ R-CNN比较早&#xff0c;所以使用的是SVM 1.1 兴趣区域(RoI)池化…

【Qwen2微调实战】LLaMA-Factory框架对Qwen2-7B模型的微调实践

系列篇章&#x1f4a5; No.文章1【Qwen部署实战】探索Qwen-7B-Chat&#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验&#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B&#xff1a;通过FastApi框架实现API的部署与调用4【Q…

【数据结构进阶】手撕红黑树

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; C || 数据结构 目录 &#x1f308;前言&#x1f525;红黑树的概念&#x1f525;手撕红黑树红黑树结点的定义红黑树主体需要实现的成员函数红黑树的插入findEmpty和Size拷贝构造析构函数和…