自学内容网 自学内容网

使用ssh推送项目到github

要通过 SSH 将本地项目推送到 GitHub,请按照以下步骤操作:


第一步和第二步可以看我的另一个博客

github配置ssh连接

1. 确保已生成 SSH 密钥

如果你还没有 SSH 密钥,请先按照以下命令生成:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

将公钥(~/.ssh/id_rsa.pub)添加到 GitHub:

  1. 复制公钥:
    cat ~/.ssh/id_rsa.pub
    
  2. 登录 GitHub,进入 SettingsSSH and GPG keysNew SSH key
  3. 将公钥粘贴到 Key 字段中,保存。

验证 SSH 连接:

ssh -T git@github.com

如果看到 Hi username! You've successfully authenticated...,说明配置成功。


2. 在 GitHub 上创建远程仓库

  1. 登录 GitHub,点击 New repository
  2. 填写仓库名称,选择公开或私有,点击 Create repository
  3. 创建完成后,记下仓库的 SSH 地址(如 git@github.com:username/repo-name.git)。

3. 初始化本地项目

如果本地项目还未初始化为 Git 仓库,运行以下命令:

cd /path/to/your/project
git init

在这里插入图片描述

但是现在我们的本地的分支为master,远程仓库的是main,所以最好我们将本地的名字改为main

在这里插入图片描述

4. 将本地项目与远程仓库关联

使用 GitHub 提供的 SSH 地址关联远程仓库:

在这里插入图片描述

git remote add origin git@github.com:username/repo-name.git

验证是否关联成功:

git remote -v

在这里插入图片描述

5. 添加文件并提交

将项目文件添加到 Git 暂存区并提交:

git add .
git commit -m "Initial commit"

在这里插入图片描述
在这里插入图片描述

补充:拉取远程修改(可选)

在推送本地修改之前,建议先拉取远程仓库的最新更改,以避免冲突:

git pull origin main
  • 如果有冲突,解决冲突后重新提交
git add .
git commit -m "解决冲突"

6. 推送到 GitHub

将本地代码推送到远程仓库:

git push -u origin main
  • -u:将本地分支与远程分支关联,以后可以直接使用 git push
  • main:默认分支名称(可能是 master,具体取决于仓库设置)。

在这里插入图片描述

7. 完成

推送成功后,刷新 GitHub 页面,即可看到项目文件。


总结

  1. 生成 SSH 密钥并添加到 GitHub。
  2. 在 GitHub 上创建远程仓库。
  3. 初始化本地项目并关联远程仓库。
  4. 提交代码并推送到 GitHub。

如果遇到问题,请检查 SSH 配置或网络连接。

出现的问题

由于我先前提交了,但是没有合并,所以我的远程的origin存在提交,所以我在push的时候出现了矛盾

在这里插入图片描述

遇到的错误是因为 Git 检测到本地仓库和远程仓库的历史记录不相关(unrelated histories)。这种情况通常发生在以下场景:

  • 你本地初始化的仓库和远程仓库没有共同的提交历史。
  • 远程仓库是一个全新的仓库,或者你本地仓库是一个全新的仓库。

Git 默认会拒绝合并不相关的历史记录,以避免意外覆盖或丢失数据。不过,你可以通过以下方法解决这个问题。


解决方法:

方法 1:允许合并不相关的历史记录

如果你确定需要合并本地和远程仓库的历史记录,可以使用 --allow-unrelated-histories 选项强制合并:

git pull origin main --allow-unrelated-histories

这会将远程仓库的历史记录与本地仓库的历史记录合并。如果有冲突,Git 会提示你解决冲突。

方法 2:强制覆盖本地历史记录

如果你希望完全使用远程仓库的内容,丢弃本地的所有更改和历史记录,可以执行以下操作:

  1. 备份当前分支(可选):
    git branch backup-main
    
  2. 重置本地分支以匹配远程分支:
    git fetch origin main
    git reset --hard origin/main
    
    这会强制将本地 main 分支的内容和提交历史与远程 main 分支完全同步。
方法 3:强制覆盖远程历史记录

如果你希望完全使用本地的内容,丢弃远程仓库的所有更改和历史记录,可以执行以下操作:

  1. 强制推送本地分支到远程仓库:
    git push -u origin main --force
    
    这会覆盖远程仓库的 main 分支,使其与本地分支完全一致。

注意事项:

  • 数据丢失风险:强制合并或强制推送可能会导致历史记录或数据丢失,请确保你了解这些操作的影响。
  • 备份:在执行这些操作之前,建议备份当前分支或仓库,以防万一。

推荐操作:

如果你不确定如何处理,推荐使用 方法 1,即允许合并不相关的历史记录:

git pull origin main --allow-unrelated-histories

然后解决可能的冲突,并提交合并结果。

由于我并不想要远程的数据,想直接覆盖,所以我采用的是第三种方法:

在这里插入图片描述


原文地址:https://blog.csdn.net/weixin_74850661/article/details/145279064

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!