Git(4) 解决Git相关问题的实用技巧
创始人
2024-11-11 02:39:27
0

本文将介绍一些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和验证分支,可以顺利完成代码推送。

相关内容

热门资讯

一分钟教你!广东雀神外 挂(一... 一分钟教你!广东雀神外 挂(一贯真的是有挂)详细透视辅助教程1.广东雀神外 挂 ai辅助创建新账号,...
微扑克辅助器ios!微扑克网页... 微扑克辅助器ios!微扑克网页版辅助,微扑克真的有挂存在(都是真的是有挂);无聊就玩这款微扑克真的有...
重大来袭!都莱罗松(本来真的是... 重大来袭!都莱罗松(本来真的是有挂)详细透视辅助教程1、打开软件启动之后找到中间准星的标志长按。2、...
微扑克辅助软件!微扑克有挂(透... 微扑克辅助软件!微扑克有挂(透明挂)好像是有挂1、微扑克系统规律教程、微扑克辅助透视等服务,为用户提...
玩家必知教程!金州水鱼辅助工具... 玩家必知教程!金州水鱼辅助工具(一贯是真的有挂)详细辅助教程所有人都在同一条线上,像星星一样排成一排...
最新技巧!!福建众娱软件有没有... 最新技巧!!福建众娱软件有没有辅助(透明挂)透明挂透视辅助脚本(2023已更新)(哔哩哔哩);福建众...
科普分享!心悦填大坑总输怎么回... 科普分享!心悦填大坑总输怎么回事(确实有挂)详细透视辅助教程1、心悦填大坑总输怎么回事系统规律教程、...
分享认知!柳州天天爱麻将有挂吗... 分享认知!柳州天天爱麻将有挂吗(透视)透明挂透视辅助脚本(2023已更新)(哔哩哔哩);1、金币登录...
记者揭秘!衢州都莱十三道辅助器... 记者揭秘!衢州都莱十三道辅助器(切实是有挂)详细辅助教程1、衢州都莱十三道辅助器ai机器人多个强度级...
玩家必知教程!!卡农斗牛辅助最... 玩家必知教程!!卡农斗牛辅助最新版本(透视)透视脚本辅助插件(2021已更新)(哔哩哔哩)运卡农斗牛...