当前位置: 首页 > news >正文

2025年最新版 Git和Github的绑定方法,以及通过Git提交文件至Github的具体流程(详细版)

文章目录

  • Git和Github的绑定方法与如何上传至代码仓库
    • 一. 注册 GitHub 账号
    • 二.如何创建自己的代码仓库:
      • 1.登入Github账号,完成登入后会进入如下界面:
      • 2.点击下图中红色框选的按钮中的下拉列表
      • 3.选择New repostitory
      • 4.进入创建界面后,按照下图所示操作,完成操作后点击绿色的Create repository按钮
      • ✅ 1. `Initialize this repository with a README`
        • 具体作用:
        • 几乎所有项目都应有一个 README,可以当成项目的名片+使用手册
      • ✅ 2. `.gitignore` 文件
        • 具体作用:
        • 示例(Python 项目):
        • 推荐不设置 `.gitignore`,很容易把一些不该提交的文件误上传,引发冲突或体积变大。GitHub 提供了各种语言的模板,一键搞定,建议勾选!
      • ✅ 3. `License`(许可证)
        • 具体作用:
        • 常见许可证类型:
        • 推荐理由:
      • 📌 总结建议:
    • 三.Git绑定Github的方法
      • 1. 将Git绑定到Github的作用
      • 2. 下载Git并完成安装
      • 3. 打开Git bash
        • 输入指令:
        • 引号中需要为Github账号所绑定邮箱
          • **A. Generating public/private rsa key pair.**
          • **B. Enter file in which to save the key (/c/Users/23370/.ssh/id_rsa):**
          • **C. Enter passphrase for "/c/Users/23370/.ssh/id_rsa" (empty for no passphrase): 请输入登入密码**
          • **D. Enter same passphrase again:请你确定登入密码(再次输入)**
          • **E. 最终生成的文件:**
      • 4. 前往当前设备的密匙保存路径,比如``/c/Users/23370/.ssh`` , 打开生成的ssh key文件id_rsa.pub并复制key字符串
      • 5.点击Github中的头像,点击侧边栏中的Settings,按照 GitHub → Settings → SSH and GPG keys → New SSH key(绿色按钮)的步骤操作
        • 🛠️ Authentication Key vs Signing Key 的区别
        • 🎯 最简单理解:
        • 📌 小例子
          • 不设置 Signing Key 时:
          • 配置了 Signing Key 后:
      • 6. 在Git bash上验证是否绑定成功
        • (1)输入指令: ssh -T git@github.com,回车后输入刚才设置的密匙密码(注意密码是看不见的)
        • (2)设置username和email,输入如下指令:
        • git config --global user.name "xxx"
        • git config --global user.email "xxxx@xxx.com"
        • **这里需要注意一点:因为 GitHub 上每一条提交记录(commit)都和邮箱绑定。**所以在git config --global user.email "xxxx@xxx.com"中填写的必须是Github绑定的邮箱
      • ✅ `git config --global` 设置**一次就永久生效**
        • 如何检查一下你现在的 git 配置是否正确,直接输入如下指令:
        • 如果以后你想检查自己当前的 `user.name` 和 `user.email` 配置,可以用:
        • (3)设置git的本地仓库
          • 1、直接在需要上传的文件目录下右键点击打开git bash
          • 2、 创建本地git仓库的方法:在git bash终端输入指令git init
          • 3、 上传文件到Github的方式
          • 解释:
          • 为什么会出现这个警告:
          • 解决方法:
          • **如果你希望 Git 始终保持一致的行结束符**:
          • 记住重要的一点:
      • 🏅 小tip:**这种方式只适用于已经被 Git 管理的文件,新文件还是需要 `git add`。**
      • 总结流程
        • (4)本地仓库与github远程仓库关联
          • 1、查看Github代码仓库地址
          • 2、 在Git bash上执行关联操作,输入如下指令(引号为代码仓库的地址信息)
          • 为什么需要绑定仓库?
          • **在 GitHub 上创建一个新的仓库**(假设你已经在 GitHub 上创建了一个名为 `my-repo` 的仓库)
          • 将远程 GitHub 仓库绑定到本地仓库**
          • **验证远程仓库是否绑定成功**
          • 3、 🎯 **在多个 GitHub 仓库中选择目标仓库**
          • **切换远程仓库**:
          • 3.1 `git remote add` 的作用
          • 3.2 origin vs 自定义远程名
          • 3.3 推送到不同的远程
          • 3.4 如何查看和管理已有远程
          • 具体解释:
          • 例子:
      • 查看所有远程仓库:
      • 小结:
          • 4、 在Git bash上输入如下指令,将文件从本地上传到Github
          • 1. **把本地的 `master` 分支推送到远程的 `origin` 仓库上**
          • 2. **建立本地分支和远程分支的关联(Tracking)**
          • 总结一句话:
          • 小补充一下:
        • (4)在Github上查看提交信息:
        • (5)克隆Github代码仓库到本地(git@github.com:xxx此处使用的是代码仓库的地址)

Git和Github的绑定方法与如何上传至代码仓库

一. 注册 GitHub 账号

  • 所有团队成员都需要各自注册一个 GitHub 账号:https://github.com/join
  • 注册完成后,建议:
    • 配置好自己的头像、昵称
    • 绑定常用邮箱
    • 开启双因素认证(2FA,安全性更高)

二.如何创建自己的代码仓库:

1.登入Github账号,完成登入后会进入如下界面:

在这里插入图片描述

图1.1 Github官网界面

2.点击下图中红色框选的按钮中的下拉列表

在这里插入图片描述

图1.2 创建代码仓库的按钮所在位置

3.选择New repostitory

在这里插入图片描述

图1.3 选择新建仓库的选项(New repostitory)

4.进入创建界面后,按照下图所示操作,完成操作后点击绿色的Create repository按钮

在这里插入图片描述

图1.4 填写新建仓库的各项具体信息

✅ 1. Initialize this repository with a README

💡作用:创建一个初始的 README.md 文件,用来介绍这个项目

具体作用:
  • 项目说明的门面,通常包括:
    • 项目简介
    • 安装/运行方法
    • 使用示例
    • 作者和联系方式
  • 一旦有这个文件,仓库就不是“空仓库”,可以直接 clone 或 pull(不然初始仓库 clone 会报错)
  • 会在 GitHub 页面上直接显示内容,美观又实用
几乎所有项目都应有一个 README,可以当成项目的名片+使用手册

✅ 2. .gitignore 文件

💡作用:告诉 Git 哪些文件不应该提交到版本库

具体作用:
  • 忽略本地临时文件、不必要的环境文件、防止“脏数据”污染仓库
  • 通常用于排除:
    • 编译生成的中间文件(如 .pyc, dist/
    • 编辑器配置(如 .vscode/, .idea/
    • 依赖库(如 node_modules/, .venv/
    • 系统文件(如 .DS_StoreThumbs.db
示例(Python 项目):
gitignore复制编辑__pycache__/
*.pyc
*.pyo
*.pyd
.venv/
.env
.idea/
.vscode/
推荐不设置 .gitignore,很容易把一些不该提交的文件误上传,引发冲突或体积变大。GitHub 提供了各种语言的模板,一键搞定,建议勾选!

✅ 3. License(许可证)

💡作用:告诉别人你这个代码允许别人怎么用

具体作用:
  • 没有许可证 = 默认 保留所有权利,别人不能合法地复制、修改、使用你的代码
  • 加上许可证 = 明确允许他人使用、修改、转载,但可能有条件
常见许可证类型:
许可证开源?可商用?要注明作者?要开源修改?特点
MIT非常宽松,适合开源又希望推广
Apache 2.0保护专利权,适合商业项目
GPL必须开源修改后的代码
无许可证默认“版权保留”,不能用
推荐理由:
  • 如果你是开源项目:建议选 MIT 或 Apache 2.0
  • 如果你不希望别人随便用,就不要加 license 或声明专有协议
  • 如果是私有仓库,license 可选,但加一个也有规范感

📌 总结建议:

选项是否建议勾选说明
README.md✅ 必勾选项目说明文件,增强可读性,避免空仓库
.gitignore✅ 必勾选忽略无用文件,保持仓库整洁
License✅ 可视情况勾选建议开源项目选择 MIT/Apache,私有项目可略过

三.Git绑定Github的方法

1. 将Git绑定到Github的作用

本地 Git 仓库可以同步到 GitHub。

其他成员可以 clone、pull、push 同一个远程仓库,一起协作开发

GitHub 上还能:

  • 创建 issue(任务追踪)
  • 提交 Pull Request(代码审核)
  • 做 CI/CD(自动测试部署)
  • 备份代码,防止丢失
  • 显示项目进度和文档(README、Wiki)

2. 下载Git并完成安装

git安装教程

3. 打开Git bash

在这里插入图片描述

输入指令:
ssh-keygen -t rsa -C "xxxx@xxx.com"
引号中需要为Github账号所绑定邮箱

会有如下显示:

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/23370/.ssh/id_rsa):
Enter passphrase for "/c/Users/23370/.ssh/id_rsa" (empty for no passphrase):
Enter same passphrase again:
A. Generating public/private rsa key pair.

🔹 系统正在帮你生成一对新的密钥(RSA算法,安全性很高)。

B. Enter file in which to save the key (/c/Users/23370/.ssh/id_rsa):

🔹 让你指定密钥文件保存的位置,默认存到:

/c/Users/23370/.ssh/id_rsa

​ 通常直接回车就行,用默认路径没问题

C. Enter passphrase for “/c/Users/23370/.ssh/id_rsa” (empty for no passphrase): 请输入登入密码

🔹 让你为私钥文件设置一个密码(叫做 passphrase)。

  • 如果你输入密码,以后用这个 SSH 密钥连接时,每次需要输入这个密码。
  • 如果你直接回车(留空),就不用密码,连接会更快(但稍微没那么安全)。
D. Enter same passphrase again:请你确定登入密码(再次输入)
E. 最终生成的文件:
文件内容用途
id_rsa私钥自己保存,绝不能泄露
id_rsa.pub公钥上传到 GitHub 等服务器

4. 前往当前设备的密匙保存路径,比如/c/Users/23370/.ssh , 打开生成的ssh key文件id_rsa.pub并复制key字符串

在这里插入图片描述

图 1.5 保存当前密匙的文件界面

5.点击Github中的头像,点击侧边栏中的Settings,按照 GitHub → Settings → SSH and GPG keys → New SSH key(绿色按钮)的步骤操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

图 1.6 将`id_rsa.pub` 的内容复制进去,再点击Add SSH key绿色按钮进行创建
🛠️ Authentication Key vs Signing Key 的区别
项目Authentication Key(认证密钥)Signing Key(签名密钥)
主要用途用来登录 GitHub,比如 git push用来给提交(commit)做签名,证明是你本人提交
Git 操作影响✅ git push、pull、clone 必须靠它🚫 不影响推拉,只管提交签名
是否必需✅ 必须有一把🔸 可选(签名是提升可信度用的)
配置位置(GitHub)Settings → SSH and GPG keys → “Authentication Key”Settings → SSH and GPG keys → “Signing Key”
本地配置额外操作?否,只关联 remote 就好是,需要告诉 Git 用哪把 Key 来签名提交
使用感受连接 GitHub必需,最基础提交更专业/可信,但新手可暂时不管

🎯 最简单理解:
  • Authentication Key:登录 GitHub 的门禁卡 🛂
  • Signing Key:每次提交(commit)的时候,在提交记录上盖一个你的私人印章 🪪
📌 小例子
不设置 Signing Key 时:
git commit -m "Fix bug"
#提交成功,但是 commit 记录上没有认证标识
配置了 Signing Key 后:
git commit -m "Fix bug"
#提交成功,GitHub上显示 "Verified" 绿色小盾牌

这样别人一看,就知道这是你本人提交的,不是别人伪造的。

在这里插入图片描述

图 1.7 成功创建的效果图(配置成功的SSH key)

6. 在Git bash上验证是否绑定成功

(1)输入指令: ssh -T git@github.com,回车后输入刚才设置的密匙密码(注意密码是看不见的)

在这里插入图片描述

PS: 第一次输入的时候会遇到如下显示:(请输入yes)

ssh -T git@github.com The authenticity of host 'github.com (20.205.243.166)' can't be established. ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?

第一次连接某个服务器(这里是 GitHub)时,SSH 客户端不知道对方的身份,所以它提醒你:

⚠️ “我第一次遇到 github.com,这台机器的指纹是这个(SHA256:xxx),你要不要信任它?”

​ 这相当于确认“你信得过 GitHub 的服务器”

​ 如果你输入 yes,SSH 会把 GitHub 的身份保存下来(记录在你的 known_hosts 文件里),以后再连 GitHub,就不会再问你了。

随后会有如下显示:

Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Enter passphrase for key '/c/Users/23370/.ssh/id_rsa': 
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.

🔹 系统告诉你:

  • 已经把 GitHub 的服务器信息(它的身份指纹)记录到本地了。
  • 下次连接 GitHub 时,不需要再问你了。
  • 存在文件里:~/.ssh/known_hosts

(✅ 正常现象,没任何问题。)


Enter passphrase for key '/c/Users/23370/.ssh/id_rsa':

🔹 这里问你要SSH私钥的密码(passphrase)。

这是因为:

  • 你在一开始生成 SSH 密钥的时候,设置了passphrase(私钥保护密码)。
  • 现在要用这把私钥去连接 GitHub,所以系统要你输入密码来解锁私钥

👉 只要输入你当时设置的密码就行(输入的时候不会显示星号 *,正常的)。

显示 Hi Ac157OL! You’ve successfully authenticated, but GitHub does not provide shell access.即为连接成功

Hi Ac157OL!:GitHub 跟你打招呼,确认你的账号(Ac157OL)已经通过了身份验证。

You’ve successfully authenticated:你的 SSH 密钥验证通过了,已经可以正常连 GitHub。

but GitHub does not provide shell access:GitHub 只是用来托管代码的,它不会给你一个远程终端(shell),所以你不能像登录服务器一样直接操作。

(2)设置username和email,输入如下指令:
git config --global user.name “xxx”
git config --global user.email “xxxx@xxx.com”

即使已经在Github完成了SSH key的绑定,但是依旧需要设置username和email这两个参数,原因如下:

项目说明
SSH连GitHub只是让你的电脑可以连上GitHub服务器,身份验证通过了。
git config --global user.name/user.email是告诉 Git:以后每次你提交(commit)代码时,署名用哪个名字和邮箱。
  • SSH连接 = “门禁卡”
    → 你刷卡进公司了
  • git config 设 username/email = “在文件上签名”
    → 你在公司提交的每一份文件上,都要签上你的名字和邮箱,告诉别人这是谁写的

👉 不设 username/email,git commit 也能做,但提交记录上就没有明确署名或者是默认的,很乱很丑。

**这里需要注意一点:因为 GitHub 上每一条提交记录(commit)都和邮箱绑定。**所以在git config --global user.email "xxxx@xxx.com"中填写的必须是Github绑定的邮箱
  • 如果你设置了正确的邮箱(和 GitHub 账号里的邮箱对应),GitHub 提交记录上会显示你的头像和链接到你的 GitHub 账号。
  • 如果乱填一个邮箱(比如打错了),GitHub会显示一个小问号 ❓,无法正确关联到你的账号。

邮箱才是 GitHub 识别身份的关键不是靠 SSH名字

设置项要求说明
git config --global user.name随便填(当然建议和GitHub用户名一样,看起来正规一点)只是一个“提交署名”的显示名字,不影响 GitHub 识别身份。
git config --global user.email必须和你 GitHub 账户绑定的邮箱一致GitHub靠邮箱来识别你的提交归属,邮箱错了,GitHub认不出来。

git config --global 设置一次就永久生效

  • --global 代表:这个配置是全局配置只要在你电脑上,用Git提交,都会默认用这个name和email
  • 只需要执行一次,以后不用每次提交都再写。
如何检查一下你现在的 git 配置是否正确,直接输入如下指令:
git config --global --list

就能看到现在生效的 user.nameuser.email

如果以后你想检查自己当前的 user.nameuser.email 配置,可以用:
git config --global user.name
git config --global user.email

Git会直接告诉你现在生效的是哪一组设置。

(3)设置git的本地仓库
1、直接在需要上传的文件目录下右键点击打开git bash

在这里插入图片描述

2、 创建本地git仓库的方法:在git bash终端输入指令git init

在这里插入图片描述

内容意思
git init你执行了初始化命令
Initialized empty Git repositoryGit告诉你:“仓库已经创建好了,当前是空的。”

Git 就会在这个文件夹下,悄悄建一个隐藏目录 .git,用来记录所有的版本变化、提交记录、分支信息

  • 🔹 没有 git init,Git 是不会管你文件怎么改的。
  • 🔹 一旦 git init,这里所有变化 Git 都能追踪、记录。

如果你想验证一下 .git 真的在,可以在 Git Bash 里敲:

ls -a

它会列出所有文件(包括隐藏文件),你应该能看到一个 .git/ 文件夹。

3、 上传文件到Github的方式

Git是分两步提交的

3.1 将文件添加到 Git 暂存区:用 git add 把你指定的文件,标记为"准备好要提交",放到 Git 的“暂存区(staging area)”。

git add README.md
git add ./*
  • git add README.md 是只添加 README.md 一个文件。
  • git add ./ 是把当前目录下所有文件都添加进去(相当于:全都准备好要提交了)。

3.2 正式提交到本地仓库

git commit -m "本次提示信息" (这里的提示信息填写什么都可以,可以说明修改的部分)

把刚刚 git add 过的文件,真正记录到 Git 仓库历史中
并且用 -m "提示信息" 给这次提交写一个小备注,告诉自己和别人:“这次提交是干了啥”。

  • 例子:git commit -m "初始化项目"
  • 例子:git commit -m "添加了登录模块"

commit是一次"快照"保存,给未来版本回滚提供依据

git add:把文件添加到暂存区

git commit:将暂存区的文件提交到本地 Git 仓库,并生成一条提交记录。

PS:如果文件名中有空格,你可以将整个文件名用引号包裹起来(单引号或双引号都可以),这样 Git 就能正确识别路径。

例如:

git add 'AI Agent-V10'

或者:

git add "AI Agent-V10"

如果你不想使用引号,也可以使用反斜杠 \ 来转义空格。这样可以确保空格不会被分开:

git add AI\ Agent-V10

如果出现如下信息

$ git add 'AI Agent-V10'
warning: in the working copy of 'AI Agent-V10/AI Agent/test_model.py.code-workspace', LF will be replaced by CRLF the next time Git touches it
解释:
  • LF (Line Feed)CRLF (Carriage Return + Line Feed) 都是行结束符,用来标识一行的结束。
    • LF (\n) 是 Unix 和 Linux 系统中使用的行结束符。
    • CRLF (\r\n) 是 Windows 系统中使用的行结束符。
  • Git 的默认行为是根据你的操作系统来管理文件的行结束符。在 Windows 上,Git 会将文件中的 LF(Unix 样式行结束符)转换为 CRLF(Windows 样式行结束符),当 Git 操作这些文件时,会自动进行转换。
  • 警告信息提醒你,下次 Git 在处理这个文件时,会把文件中的 LF 转换成 CRLF
为什么会出现这个警告:
  1. 你的文件在本地工作区(working directory)中使用了 LF 作为行结束符。
  2. Git 会在下次操作这个文件时将其转换为 CRLF,以符合 Windows 系统的行结束符标准。
解决方法:

这个警告本身并不会导致提交失败。它只是告诉你,Git 会在下一次触摸这个文件时,自动将行结束符转换成 CRLF。

如果你不想看到这个警告或希望 Git 以特定方式处理行结束符,可以调整 Git 的配置。

如果你希望 Git 始终保持一致的行结束符

你可以使用以下命令来配置 Git 处理行结束符:

git config --global core.autocrlf true

这个设置会让 Git 在提交时自动将 LF 转换为 CRLF,而在检出(checkout)时自动将 CRLF 转换回 LF,适用于 Windows 系统。

记住重要的一点:

没有 git add,提交会失败,因为 Git 不知道你想提交哪些文件。

git commit 是在提交之前对暂存区的文件进行确认和打包(这时才会把你之前用 git add 加入的文件提交)。

git commit 不会“重新”添加文件,它仅仅是提交暂存区的内容,并且会生成一条提交记录。如果没有使用 git add,则没有任何文件被加入提交

🏅 小tip:这种方式只适用于已经被 Git 管理的文件,新文件还是需要 git add

如果忘记加 git add,提交时可以加 git commit -a,它会自动把所有已经跟踪的文件(已被 Git 管理的文件)加到暂存区,再提交:

git commit -a -m "提交所有修改"

总结流程

步骤命令解释
1git init把这个文件夹变成 Git仓库(开始版本管理)
2git add 文件名git add ./把文件放入"准备提交"的暂存区
3git commit -m "备注"真正提交到本地仓库,写一条变更记录

你可以用下面的命令查看提交记录(验证成功了没):

git log

可以看到每一次 commit 的 ID、作者、提交时间和备注。

(4)本地仓库与github远程仓库关联
1、查看Github代码仓库地址

在这里插入图片描述

2、 在Git bash上执行关联操作,输入如下指令(引号为代码仓库的地址信息)
git remote add origin “git@github.com:xxxx"
为什么需要绑定仓库?
  • 本地仓库只是你的代码保存在本地的地方,而**远程仓库(如 GitHub)**才是真正托管你的代码的地方。
  • 当你提交(git commit)时,Git 只会保存在本地仓库,它并不会自动上传到 GitHub。
  • 为了将提交推送到远程 GitHub 仓库,你需要明确告诉 Git 要推送到哪个远程仓库

需要使用 git remote add 命令将本地仓库与 GitHub 上的仓库进行绑定,具体步骤如下:

在 GitHub 上创建一个新的仓库(假设你已经在 GitHub 上创建了一个名为 my-repo 的仓库)
  • 假设进入 GitHub,点击“New repository”按钮,创建一个新的仓库,命名为 my-repo
将远程 GitHub 仓库绑定到本地仓库**

在本地仓库的 Git Bash 中,使用以下命令绑定 GitHub 仓库:

git remote add origin https://github.com/你的用户名/my-repo.git
  • origin 是 Git 默认的远程仓库名称。
  • https://github.com/你的用户名/my-repo.git 是你 GitHub 仓库的 URL,你可以在 GitHub 仓库页面找到它。
验证远程仓库是否绑定成功

你可以使用以下命令检查绑定情况:

git remote -v

如果绑定成功,会显示类似:

origin  https://github.com/你的用户名/my-repo.git (fetch)
origin  https://github.com/你的用户名/my-repo.git (push)
3、 🎯 在多个 GitHub 仓库中选择目标仓库

如果你有多个远程仓库,你可以使用 不同的名字 来区分这些远程仓库。例如,如果你有两个 GitHub 仓库 repo1repo2,你可以这样设置:

git remote add repo1 https://github.com/你的用户名/repo1.git
git remote add repo2 https://github.com/你的用户名/repo2.git

然后,推送到指定的远程仓库

git push repo1 master  # 推送到 repo1
git push repo2 master  # 推送到 repo2
切换远程仓库

你还可以随时查看、删除或修改绑定的远程仓库:

  • 查看远程仓库:git remote -v
  • 删除远程仓库:git remote remove origin
  • 修改远程仓库 URL:git remote set-url origin 新的仓库地址

绑定本地仓库和 GitHub 仓库:必须通过 git remote add origin <GitHub仓库URL> 来绑定。

推送到指定仓库:如果有多个仓库,可以在 git push 时明确指定仓库名,如 git push repo1 master

查看远程仓库:使用 git remote -v 查看已经绑定的远程仓库。

3.1 git remote add 的作用
git remote add <远程名> <仓库URL>
  • <远程名>:给这个远程仓库起的一个本地“别名”,方便后面引用。例如 originrepo1backupupstream……
  • <仓库URL>:你在 GitHub(或其他托管平台)上创建的那个仓库的地址。

3.2 origin vs 自定义远程名
  • origin

    • 这是 Git 默认的远程名,几乎所有教程里把主仓库都叫 origin
    • 当你 git clone 一个仓库时,Git 会自动把源 주소 设为 origin
  • 自定义(repo1、repo2、backup……)

    • 如果你还想推送到第二个、第三个仓库,就可以再 git remote add 一个新的远程名:

      git remote add repo1 https://github.com/你的用户名/repo1.git
      git remote add repo2 https://github.com/你的用户名/repo2.git
      
    • 这里的 repo1repo2 只是一种示例命名,完全可以换成任何你能一眼看出用途的名字,比如 originmirrorbackup


3.3 推送到不同的远程
  • 如果你只有一个远程(origin),那就:

    git push origin master
    
  • 如果你绑定了两个远程:

    push repo1 master   # 把 master 分支推到 repo1
    git push repo2 master   # 把 master 分支推到 repo2
    
  • 这样,同一份代码、同一个分支,可以同步推送到多个远程仓库。

3.4 如何查看和管理已有远程
  • 查看

    git remote -v
    
  • 修改 URL

    git remote set-url repo1 新的地址
    
  • 删除

    git remote remove repo2
    

**注意:git remote add origin 只能为 本地仓库 添加 一个主远程仓库

而这个 origin 通常是你最初推送或克隆时默认绑定的仓库。

具体解释:
  • origin 是 Git 中的一个默认远程仓库名,当你克隆一个仓库时,Git 会自动将这个远程仓库命名为 origin,并将其作为默认的推送和拉取源。
  • 每个本地仓库只能有 一个 origin,但是你可以通过 git remote add 命令为一个本地仓库添加 多个其他远程仓库,这些远程仓库的名字可以是自定义的(如 repo1, repo2, backup, staging 等)。
例子:

假设你有一个本地仓库,你想同时推送到 GitHub 和 GitLab:

  1. 首先添加 GitHub 仓库(作为 origin

    git remote add origin https://github.com/你的用户名/your-repo.git
    

    这里的 origin 是默认的远程仓库名。

  2. 再添加 GitLab 仓库(可以使用自定义名字)

    git remote add gitlab https://gitlab.com/你的用户名/your-repo.git
    

查看所有远程仓库:

git remote -v

输出会类似于:

origin    https://github.com/你的用户名/your-repo.git (fetch)
origin    https://github.com/你的用户名/your-repo.git (push)
gitlab    https://gitlab.com/你的用户名/your-repo.git (fetch)
gitlab    https://gitlab.com/你的用户名/your-repo.git (push)

小结:

  • origin 是默认的远程仓库名,且每个本地仓库只能有一个 origin
  • 你可以为同一个本地仓库添加多个远程仓库,只要它们的名字不同(例如 originrepo1repo2 等)。
  • origin 并不限制你只能添加一个仓库,其他自定义的远程仓库名没有限制
4、 在Git bash上输入如下指令,将文件从本地上传到Github

当你在本地仓库里执行这条指令:

git push -u origin master

它做了两件事情:


1. 把本地的 master 分支推送到远程的 origin 仓库上
  • origin 是你本地设置的远程仓库名(通常指向 GitHub 上那个仓库地址)。
  • master 是你要推送的本地分支名字(现在有些仓库默认是 main,但如果你本地分支叫 master,就写 master)。
  • 这一步会真正把你的代码文件上传到 GitHub 仓库上,GitHub 页面上也能看到文件了。

2. 建立本地分支和远程分支的关联(Tracking)
  • -u--set-upstream 的简写。
  • 它的作用是告诉 Git:“以后这个本地分支(master)默认关联到远程的 origin/master 分支”。
  • 好处是以后就可以直接用更短的指令推送或者拉取,比如:
    • 推送:git push
    • 拉取:git pull
  • 不需要每次都敲一大串 git push origin master

总结一句话:

git push -u origin master 会把代码传到 GitHub,并且帮你把本地分支和远程分支自动关联好,以后操作就方便很多了


小补充一下:
  • 如果是第一次推送(第一次建立远程仓库的连接),一定要用 -u
  • 之后继续更新代码,只需要在本地改完 ➔ git add .git commit -m "描述"git push,就可以了,不用再加 origin master,很省事!
(4)在Github上查看提交信息:

点击如下按钮,选择分支(该分支名称和提交时指令git push -u origin master中的master有关系)

在这里插入图片描述

(5)克隆Github代码仓库到本地(git@github.com:xxx此处使用的是代码仓库的地址)
git clone git@github.com:xxx

相关文章:

2025年最新版 Git和Github的绑定方法,以及通过Git提交文件至Github的具体流程(详细版)

文章目录 Git和Github的绑定方法与如何上传至代码仓库一. 注册 GitHub 账号二.如何创建自己的代码仓库&#xff1a;1.登入Github账号&#xff0c;完成登入后会进入如下界面&#xff1a;2.点击下图中红色框选的按钮中的下拉列表3.选择New repostitory4.进入创建界面后&#xff0…...

Java 动态代理实现

Java 动态代理实现 一、JDK动态代理二、CGLIB动态代理三、动态代理的应用场景四、JDK代理与CGLIB代理比较 动态代理是Java中一种强大的技术&#xff0c;它允许在运行时创建代理对象&#xff0c;用于拦截对目标对象的方法调用。 一、JDK动态代理 JDK动态代理是Java标准库提供的代…...

从零开始搭建CLIP模型实现基于文本的图像检索

目录 CLIP原理简介代码实现参考链接 CLIP原理简介 论文链接&#xff0c;源码链接 CLIP模型由OpenAI在2021年提出&#xff0c;利用双Decoder&#xff08;Dual Encoder&#xff09;的架构来学习图像和文本之间的对应关系&#xff0c;是多模态大模型的开创之作&#xff0c;为后续许…...

健康养生之道

在快节奏的现代生活中&#xff0c;健康养生不再是中老年人的专属话题&#xff0c;越来越多的人开始意识到&#xff0c;合理的养生方式是保持良好身体状态和生活质量的关键。​ 饮食养生是健康的基石。遵循 “食物多样、谷类为主” 的原则&#xff0c;保证每天摄入足够的蔬菜、…...

基于autoware.1.14与gazebo联合仿真进行Hybrid A* 算法规划控制代价地图版

1.首先安装autoware &#xff0c;大家可以以下一下博客进行安装&#xff0c;如果缺少库什么的直接问ai安装对应的库就行。ubuntu18.04安装Autoware1.14---GPU版 最全环境配置说明_autoware1.14安装教程-CSDN博客 安装成功后运行&#xff1a; source install/setup.bash roslau…...

5G基站设计难题:尺寸、重量、功耗和散热

设计5G基站的工程师们必须应对能源消耗、重量、尺寸和散热等问题&#xff0c;这些因素会影响到设计决策。 5G新空口&#xff08;NR&#xff09;采用了多用户大规模多输入多输出&#xff08;MU-MIMO&#xff09;技术、集成接入与回传&#xff08;IAB&#xff09;技术&#xff0…...

【leetcode100】分割等和子集

1、题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和 [11…...

sed命令笔记250419

sed命令笔记250419 sed&#xff08;Stream Editor&#xff09;是 Linux/Unix 系统中强大的流编辑器&#xff0c;主要用于对文本进行过滤和转换&#xff08;按行处理&#xff09;。它支持正则表达式&#xff0c;适合处理文本替换、删除、插入等操作。以下是 sed 的详细解析&…...

LinearLayout 线性布局

目录 Android LinearLayout&#xff08;线性布局&#xff09;简单介绍与使用示例 一、效果介绍 二、布局文件&#xff08;XML&#xff09; 三、Java 代码 四、程序运行效果 五、总结 在 Android 移动应用开发中&#xff0c;LinearLayout&#xff08;线性布局&#xff09;…...

System.in 详解

System.in 详解 System.in 是 Java 提供的标准输入流&#xff08;InputStream 类型&#xff09;&#xff0c;默认关联键盘输入&#xff0c;通常用于从控制台读取用户输入。由于它是字节流&#xff08;InputStream&#xff09;&#xff0c;直接使用较麻烦&#xff0c;一般会配合…...

JAVA IO、BIO、NIO、AIO及零拷贝

概述 IO,常写作 I/O,是 Input/Output 的简称,是 Input/Output 的简称,即输入/输出。通常指数据在内部存储器(内存)和外部存储器(硬盘、优盘等)或其他周边设备之间的输入和输出。 目前有三种 IO 共存。分别是 BIO、NIO 和 AIO。 BIO 全称 Block-IO 是一种同步且阻塞的…...

AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年4月19日第57弹

从今天开始&#xff0c;咱们还是暂时基于旧的模型进行预测&#xff0c;好了&#xff0c;废话不多说&#xff0c;按照老办法&#xff0c;重点8-9码定位&#xff0c;配合三胆下1或下2&#xff0c;杀1-2个和尾&#xff0c;再杀6-8个和值&#xff0c;可以做到100-300注左右。 (1)定…...

REST 架构详解:从概念到应用的全面剖析

REST&#xff08;Representational State Transfer&#xff09;即表述性状态转移&#xff0c;是一种用于构建网络应用程序的架构风格和设计理念&#xff0c;由计算机科学家罗伊・菲尔丁&#xff08;Roy Fielding&#xff09;在 2000 年提出。以下是关于它的详细介绍&#xff1a…...

SICAR程序标准功能块 FB1512 “Robot_kuka_FB“

1、FB1512功能块截图 2、FB1512 功能块引脚功能定义 一、输入引脚 EN:使能输入,决定功能块是否执行。IDENTIFIER(WSTRING#"FW010_R01"):设备标识,指定关联的机器人设备。OPMODE_USER_INTERFACE_OUT:操作模式输入,定义机器人工作模式(如手动、自动),数据源…...

win安装软件

win安装软件 jdk安装 jdk安装 首先去官网下载适合系统版本的JDK&#xff0c;下载地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/index.html进入下载页面&#xff0c;如下图&#xff1a; 首先选择&#xff1a;Accept License Agreement单选按钮&…...

文本生成与采样策略 (Text Generation Sampling)

我们已经学习了如何构建和训练一个基于 Transformer Decoder-only 的语言模型。模型训练的目标是学习预测给定前缀下下一个 token 的概率分布。但是,训练完成后,我们如何利用这个模型来生成全新的、连贯的文本呢? 这就涉及到推理过程和采样策略。推理是模型投入实际使用、生…...

为什么 waitress 不支持 WebSocket?

waitress 是一个纯 Python 实现的 WSGI 服务器&#xff0c;主要用于生产环境部署 Python Web 应用。但它不支持 WebSocket 协议&#xff0c;因为它只实现了 WSGI 规范&#xff0c;而 WebSocket 协议需要 ASGI&#xff08;Asynchronous Server Gateway Interface&#xff09;支持…...

[C++] 高精度加法(作用 + 模板 + 例题)

高精度加法-目录 高精度加法用途高精度加法模板string转数位数组int 转数位数组(附加型知识点)高精度输出高精度加法函数大合集!!! 高精度加法用途 高精度加法通常用于加很大的数(真的很大, 超unsigned long long的那种). 高精度加法模板 注: 本篇数组下标0(x[0])存储的是该…...

python程序的流程

三大基本流程&#xff1a; 顺序结构、分支结构&#xff08;又称为选择结构&#xff09;、循环结构 分支结构又分为单分支、双分支、多分支 从键盘上输入一个数字&#xff0c;并输出奇数或偶数 #从键盘上输入一个数字&#xff0c;并输出奇数或偶数 nint(input("n ")…...

基于大模型的下肢静脉曲张全流程预测与诊疗方案研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与数据来源 二、下肢静脉曲张概述 2.1 定义与病理生理 2.2 风险因素与临床表现 2.3 诊断方法与现有治疗手段 三、大模型预测原理与构建 3.1 大模型技术简介 3.2 预测模型的数据收集与预处理 3.…...

Android 应用wifi direct连接通信实现

一. 打开Wi-Fi direct 1.必须启用Wi-Fi功能&#xff1a;在设备设置中开启Wi-Fi主开关&#xff08;即使未连接路由器&#xff09; 关闭冲突功能&#xff1a;若已开启「热点共享」或连接到其他Wi-Fi网络&#xff0c;需先关闭相关功能以避免硬件占. <!-- Wi-Fi Direct 核心权限…...

AI写代码工具分享:Cursor 高效使用攻略与实战秘籍

写在前面 在软件开发领域,效率和生产力是永恒的追求。集成开发环境(IDE)作为开发者的核心工具,其能力直接影响着开发速度和质量。近年来,人工智能(AI)的浪潮席卷了各个行业,编程领域也不例外。Cursor IDE 正是这股浪潮中的佼佼者,它以 AI-First 的理念,在广受欢迎的…...

关于viewpager常见的泄漏

在一个页面中 如果有用到tab&#xff0c;有需要进行fragment的切换&#xff0c;经常就看到了private var fragments arrayListOf<Fragment>()private fun initFragment() {arguments?.let {hopeToPosition it.getInt(IntentConstant.MAIN_PAGE_GO, 0)workoutType it.…...

vue3专题1------父组件中更改子组件的属性

理解 Vue 3 中父组件如何引用子组件的属性是一个很重要的概念。 这里涉及到 defineExpose 和 ref 这两个关键点。 方法&#xff1a;使用 defineExpose 在子组件中暴露属性&#xff0c;然后在父组件中使用 ref 获取子组件实例并访问暴露的属性。 下面我将详细解释这个过程&…...

代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据准备原始数据处理导入massDataset数据对象交互图数据探索更新样本表格信息峰分布情况缺失值情况数据清洗数据质量评估去除噪声代谢特征过滤立群样本填补缺失值数据标准化…...

Java使用javacv实现的多种音视频格式播放器

一、前言 最近写了一款图形界面版的音视频播放器&#xff0c;可以支持多种音视频格式的播放&#xff0c;比如MP4、avi、mkv、flv、MP3、ogg、wav等多种格式&#xff0c;非常好用&#xff0c;可以本地打开多种格式音视频。 二、实现 1.通过引入javacv相关依赖实现&#xff0c;如…...

csdn教程

hello,大家好&#xff0c;我是黑名单小羊&#xff0c;今天给大家分享一下csdn怎么换背景喵~ 成品&#xff1a; 首先&#xff0c;点击管理博文喵~ 然后&#xff0c;把任务栏往下翻喵~ 你就会看见博客设置&#xff0c;点击喵~ 再点击等级&#xff0c;如果你开通了 vip&#xff0…...

React 第三十三节 ReactRouter 中 useSearchParams 使用详解及注意事项

一、useSearchParams 定义 基本用法 定义&#xff1a;用于返回当前 URL 的 URLSearchParams 的元组和用于更新它们的函数。设置 search params 会导致导航。 import { useSearchParams } from react-router-dom export default function orderCenter() {const [searchParams,…...

@EnableAsync+@Async源码学习笔记之四

接上一篇&#xff0c;我们进入 AsyncAnnotationAdvisor 的分析&#xff0c;源码如下&#xff1a; package org.springframework.scheduling.annotation;import java.lang.annotation.Annotation; import java.util.HashSet; import java.util.LinkedHashSet; import java.util…...

【java实现+4种变体完整例子】排序算法中【快速排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格

以下是快速排序的详细解析&#xff0c;包含基础实现、常见变体的完整代码示例&#xff0c;以及各变体的对比表格&#xff1a; 一、快速排序基础实现 原理 通过分治法选择一个基准元素&#xff08;pivot&#xff09;&#xff0c;将数组分为两部分&#xff1a; 左边元素均小于…...

MAUI项目iOS应用以进 App Store 分发

目录 一.通过Visual Studio分发应用1. 登录Apple 开发者帐户到 Visual Studio2.创建分发证书和配置文件3. 分发应用4. 在App Store Connect 中创建应用程序记录5. 如果你想使用mac发布应用 一.通过Visual Studio分发应用 1. 登录Apple 开发者帐户到 Visual Studio 首先我们要…...

Linux——firewalld防火墙(笔记)

目录 一&#xff1a;Firewalld防火墙的概述 &#xff08;1&#xff09;firewalld简介 &#xff08;2&#xff09;firewalld&iptables的关系 &#xff08;3&#xff09;firewalld与iptables service的区别 1. ‌规则管理方式‌ 2. ‌默认策略与设计逻辑‌ 3. ‌配置文…...

SICAR标准功能块 FB1514 “Robot_request_FB”

1、功能块截图 2、引脚功能描述 输入引脚: EN:使能输入,控制功能块运行。PLANT_IDENTIFIER:工厂或设备标识符(如 #FWO10_RO1_SEGM_201),用于标识操作对象。OPMODE_USER:操作模式输入(用户模式)。INTERFACE_OUT:连接系统数据库的操作模式接口(SYSTEM_DB.OPmode[2].U…...

vue3 watch和watchEffect 的用法和区别

在 Vue 3 里&#xff0c;watch 和 watchEffect 都是用于响应式数据变化的 API&#xff0c;但它们在使用方法和应用场景上存在差异。下面详细介绍它们的用法和区别。 用法 watch watch 用于监听特定的响应式数据源&#xff0c;当数据源发生变化时&#xff0c;会执行相应的回调…...

Linux | I.MX6ULL 使用 Yocto 文件系统开发 QT

01 Yocto 文件系统默认支持了 QT,那么我们要怎么在 Yocto 文件系统来运行我们的 QT 程序呢?本章节我们就来学习上在 yocto 文件系统+Ubuntu 环境来开发 QT 程序。 注意,开发环境是基于“qtcreator-3.5.1”(Ubuntu16.04.6),库文件是Qt5.5.1 02 QT 安装 (1)首先我们…...

论文阅读:2024 ICLR Workshop. A STRONGREJECT for Empty Jailbreaks

总目录 大模型安全相关研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 A STRONGREJECT for Empty Jailbreaks https://arxiv.org/pdf/2402.10260 https://github.com/dsbowen/strong_reject https://strong-reject.readthedocs.io/en/latest/ …...

数据结构实验7.2:二叉树的基本运算

文章目录 一&#xff0c;实验目的二&#xff0c;问题描述三&#xff0c;基本要求四&#xff0c;实验操作五&#xff0c;示例代码六&#xff0c;运行效果 一&#xff0c;实验目的 深入理解树与二叉树的基本概念&#xff0c;包括节点、度、层次、深度等&#xff0c;清晰区分二叉…...

关于一对多关系(即E-R图中1:n)中的界面展示优化和数据库设计

前言 一对多&#xff0c;是常见的数据库关系。在界面设计时&#xff0c;有时为了方便&#xff0c;就展示成逗号分割的字符串。例如&#xff1a;学生和爱好的界面。 存储 如果是简单存储&#xff0c;建立数据库&#xff1a;爱好&#xff0c;课程&#xff0c;存在一张表中。 但…...

Jenkins设置中文显示

1 安装插件 依次进入菜单&#xff1a; Jenkins -> Manage Jenkins -> Plugin Manager -> Avaliable 1.1 安装插件Locale plugin 1.2 安装插件Localization: Chinese&#xff08;Simplified&#xff09; 2 修改配置 点击菜单Manage Jenkins进入系统管理 点击菜单C…...

【MATLAB海洋专题】历史汇总

【MATLAB海洋专题】历史汇总 目录 01&#xff1a;海洋专题进阶教学 02&#xff1a;海洋数据处理 03&#xff1a;海洋数据下载 04&#xff1a;海洋配色 05&#xff1a;海洋专题基础教学 06: 其他基础画图 07&#xff1a;python 画海图专题 08&#xff1a;模式相关文件制作 01…...

【java实现+4种变体完整例子】排序算法中【归并排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格

以下是归并排序的详细解析&#xff0c;包含基础实现、常见变体的完整代码示例&#xff0c;以及各变体的对比表格&#xff1a; 一、归并排序基础实现 原理 通过分治法将数组分为两半&#xff0c;递归排序子数组&#xff0c;最后合并有序子数组。 代码示例 public class Mer…...

深入理解前端安全:CSRF与XSS攻击详解

引言 在Web开发的世界里&#xff0c;安全性就像是房子的门锁。你可能觉得它不显眼&#xff0c;但一旦没了它&#xff0c;麻烦可就大了&#xff01;本文将深入探讨两大前端安全威胁&#xff1a;CSRF&#xff08;跨站请求伪造&#xff09;和XSS&#xff08;跨站脚本攻击&#xf…...

spring-batch批处理框架(2)

文章目录 八、作业控制8.1 作业启动8.1.1 SpringBoot 启动8.1.2 Spring 单元测试启动8.1.3 RESTful API 启动 8.2 作业停止方案1&#xff1a;Step 步骤监听器方式方案2&#xff1a;StepExecution停止标记 8.3 作业重启8.3.1 禁止重启8.3.2 限制重启次数8.3.3 无限重启 九、Item…...

[Java · 初窥门径] Java 注释符

&#x1f31f; 想系统化学习 Java 编程&#xff1f;看看这个&#xff1a;[编程基础] Java 学习手册 0x01&#xff1a;Java 注释符简介 在编写程序时&#xff0c;为了使代码易于理解&#xff0c;通常会为代码加一些注释。Java 注释就是用通俗易懂的语言对代码进行描述或解释&a…...

linux下C++性能调优常用的工具

性能优化的常见流程 发现问题--->定位问题--->解决问题--->验证问题 发现问题的常见工具 1.定位内存问题 top指令&#xff0c;发现占用内存多的线程 asan 发现内存问题。 2.定位cpu问题 top指令&#xff0c;发现占用cpu多的进程&#xff0c;线程 一般对内存和…...

MinnowBoard MAX单板UEFI BIOS代码编译教程

此教程用于UEFI EDK2代码的研究&#xff0c;虽然EDK2框架代码开源&#xff0c;但是都是在模拟器上跑仿真&#xff0c;差点意思&#xff0c;搞过嵌入式大的应该有一个共识&#xff0c;是骡子是马&#xff0c;你得把板子点亮啊。MinnowBoard MAX单板是intel10多年前发布的软硬件全…...

真实波幅策略思路

该策略是一种基于ATR&#xff08;Average True Range&#xff09;指标的交易策略&#xff0c;主要用于期货市场中的日内交易。策略的核心思想是利用ATR指标来识别市场的波动范围&#xff0c;并结合均线过滤来确定买入和卖出的时机。 交易逻辑思维 1. 数据准备与初始化 - 集合竞…...

【每天一个知识点】模式识别

“模式识别”是一种从数据中识别出规律、结构或趋势的技术&#xff0c;它广泛应用于人工智能、机器学习、图像处理、语音识别、自然语言处理等领域。简单来说&#xff0c;就是让计算机学会“看出”数据中的规律&#xff0c;比如&#xff1a; 从图像中识别人脸&#xff08;人脸识…...

Node.js 创建 HTTP 服务端

Node.js 创建 HTTP 服务端的用法总结&#xff0c;内容涵盖了 核心模块、基本用法、Express 简化用法、常见场景、错误处理、以及实用小贴士。 ✅ 一、Node.js 创建 HTTP 服务的方式 Node.js 使用内置的 http 模块即可快速创建一个 Web 服务&#xff0c;无需额外安装依赖。 ✅ …...

深入浅出伯努利分布:从 0‑1 随机世界到统计学习基石

深入浅出伯努利分布&#xff1a;从 0‑1 随机世界到统计学习基石 “当你能把一个问题拆解成一系列“是/否”答案时&#xff0c;伯努利分布就是第一块砖。” 目录 引言&#xff1a;伯努利分布为何如此重要&#xff1f;历史回顾&#xff1a;从赌博到信息论形式化定义与基本表示三…...