通过 Git 将代码提交到 GitHub

2023-10-26

通过 Git 将代码提交到 GitHub




对于向远处仓库(GitHub)提交代码,我们可以细分为三种情况:

第一种:本地没有 Git 仓库,clone GitHub 上已有的仓库

第一种:本地没有 Git 仓库,这时我们就可以直接将远程仓库 clone 到本地。通过 clone 命令创建的本地仓库,其本身就是一个 Git 仓库了,不用我们再进行 git init 初始化操作啦,而且自动关联远程仓库。我们只需要在这个仓库进行修改或者添加等操作,然后 commit 即可。

接下来,以博主的 GitHub 账号中的 aiimooc_tangpan 项目进行演示。

首先,进入 GitHub 个人主页:

在这里插入图片描述

如上图所示,点击 aiimooc_tangpan 项目:

在这里插入图片描述

如上图所示,进入 aiimooc_tangpan 项目后,点击 clone,复制上图所示的 HTTPs 地址链接。然后,进入我们准备存储 Git 仓库的目录,例如下面我新建的 GitRepo 目录,从此目录进入 Git Bash:

在这里插入图片描述

接下来,输入以下命令:

git clone https://github.com/tangpan360/aiimooc_tangpan.git

其中 clone 后面所接的链接为我们刚刚复制的远程仓库的地址:

在这里插入图片描述

如上图所示,我们已经把远程的 aiimooc_tangpan 仓库 clone 到本地啦!下面,我们看看 clone 到本地的仓库内容与远程仓库的内容,是否完全一致:

在这里插入图片描述

如上图所示,显示我们已经把远程仓库 aiimooc_tangpan 的内容都 clone 到本地啦!接下来,为了方便演示,我们直接把另一个 113_index.html 网页文件复制过来:

在这里插入图片描述

如上图所示,我们已经把 113_index.html 文件复制过来啦!接下来,从此项目进入 Git Bash,然后输入 git status 命令查看仓库状态:

在这里插入图片描述

如上图所示,aiimooc_tangpan 已经是一个 Git 仓库了,而且在输入 git status 命令后显示有一个文件未被追踪,也就是我们刚刚复制过来的一个文件没有提交。通过 【Git 初体验及其常用命令介绍】,我们已经知道了在真正提交代码之前,需要先进行 git add 操作:

在这里插入图片描述

如上图所示,我们已经将 113_index.html 文件 add 并 commit 到 aiimooc_tangpan 仓库啦!接下来,我们将 113_index.html 文件提交到仓库,然后输入 git log 命令查看仓库日志:

在这里插入图片描述

再输入 git status 命令查看仓库状态:

在这里插入图片描述

如上图所示,我们已经将 aiimooc_tangpan 仓库里面新添加的目录已经提交啦!下面,我们将本地仓库的内容 push 到远程仓库,输入 git push origin main 命令:

在这里插入图片描述

如上图所示,在第一次向远程仓库提交代码的时候,需要输入账号及密码进行验证,验证成功后,显示结果如下:

在这里插入图片描述

然后,刷新 GitHub 中 aiimooc_tangpan 仓库:

在这里插入图片描述

如上图所示,我们已经将项目(仓库)中新添加的内容提交到了远程仓库。接下来,返回 GitHub 个人主页:

在这里插入图片描述

观察上图,我们会发现一个现象,那就是:aiimooc_tangpan 仓库的概要中新增加了一个 HTML 语言的标记。对于这个仓库语言的标记,其来源有两个,一是再我们创建仓库时就指定语言;二是在我们提交或者新建代码后由 GitHub 自动识别该语言。

以上介绍了向 GitHub 提交代码时的第一种情况,即:

第一种:本地没有 Git 仓库,这时我们可以直接将远程仓库 clone 到本地。通过 clone 命令创建的本地仓库,其本身就是一个 Git 仓库了,不用我们再进行 init 初始化操作啦,而且自动关联远程仓库。我们只需要在这个仓库进行修改或者添加等操作,然后 commit 即可。

接下来,我们继续介绍向 GitHub 提交代码时可能遇到的第二种情况。


第二种:将本地普通仓库变成 Git 仓库,并推送到 GitHub

前置条件:本地有一个文件夹,GitHub 端也有一个线上仓库。

本地仓库利用 git init 命令初始化为 Git 仓库后,再和远程已有仓库建立仓库同步链接。

新建的 GitHub 线上仓库可以看到如下两个命令块,稍后做解释:
在这里插入图片描述

例如新建一个本地普通文件夹 test 如下图所示:

在这里插入图片描述

GitHub 上也新建一个仓库 test ,首先选择新仓库,如下图所示:

在这里插入图片描述

填写新仓库名称为 test,并且点击 Create repository 来创建 GitHub 仓库:

在这里插入图片描述

接下来 链接 本地和 GitHub 上的两个 test 仓库并进行文件推送。

在本地 test 仓库(文件夹)中打开 Git Bash 如下:

在这里插入图片描述

利用命令行创建一个新的文件并推送到 GitHub 上,则需要执行以下代码:

echo "# demo" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:tangpan360/test.git
git push -u origin main

上述各行代码的含义解释:
echo “# demo” >> README.md //新建一个名为 ”README.md“ 的文件,并写入:# demo
git init //将普通文件夹初始化为 Git 仓库
git add README.md //将 README.md 文件添加到 git 的 ”暂存区“
git commit -m “first commit” //提交更新,并注释信息”first commit“
git branch -M main //新建的仓库分支为 master 分支,GitHub 上分支为 main 分支,该命令将本地分支改为 main 分支,这样才可以保证本地和 GitHub 分支一致,能够进行推送。
-M: 是 --move --force的缩写。
–move(-m): Move/rename a branch.
–force(-f): 即使新命名的branch名存在也执行。
git remote add origin git@github.com:tangpan360/demo.git //把本地仓库链接到远程 GitHub 项目,origin 是 GitHub 上 test.git 仓库的重命名,方便后期推送。
git push -u origin main //将本地项目的 main 分支更新推送到 GitHub 项目 test.git(origin)上去。

如果将github中已有文件的仓库推送到 GitHub 上,则需要执行以下代码:

git remote add origin git@github.com:tangpan360/demo.git
git branch -M main
git push -u origin main

注意:在以上第一行代码中 git remote add origin git@github.com:tangpan360/demo.git 中的 git@github.com:tangpan360/demo.git 换成你自己的 SSH

若是出现error: remote origin already exists的问题,则利用以下代码解决:

git remote rm origin # 删除关联的 origin 远程仓库
git remote add origin https://github.com/xxxxxx.git # 关联自己的仓库
git push origin master # 推送到自己的仓库

然后就完成了文件的初始推送。

之后就可以正常把本地仓库的版本记录正常传到 GitHub 上去了。


第三种:本地有 Git 仓库,并且我们已经进行了多次 commit 操作

仍然以博主的开源项目为例,不过这次换成 yolo-tutorial 项目进行演示。首先,建立一个本地仓库,命名为 yolo-tutorial:

在这里插入图片描述

如上图所示,进入该仓库,使用进行 init 初始化操作将 yolo-tutorial 变成 Git 仓库,代码如下:

git init

在这里插入图片描述

然后输入命令:

git remote add origin https://github.com/tangpan360/yolo-tutorial.git

利用上述命令关联远程仓库(在此,默认大家都知道如何获取远程仓库的地址),其中 origin 为远程仓库的名字:

在这里插入图片描述

将本地分支由 master 变成 main,代码如下:

git checkout -b main

在这里插入图片描述

由于一些众所周知的原因,GitHub 上传代码的默认分支由 master 变成了 main。但本地分支仍旧为 master,这就导致上传之后仓库有两个分支,还得手动合并,很麻烦。不如直接把本地的分支也修改为 main:

  1. git checkout -b main 新建main分支,并转至 main 分支
  2. git merge master 合并两个分支
  3. 然后就可以进行 add,commit
  4. git push origin main,将本地 main 分支 推送至远程 github 仓库

输入以下命令来同步远程仓库和本地仓库:

git pull origin main

再回到本地 yolo-tutorial 仓库,看看我们是否已经把远程仓库的内容同步到了本地:

在这里插入图片描述

如上图所示,显然我们已经把远程 yolo-tutorial 仓库里面仅有的 README.md 文件同步到了本地仓库。接下来,在本地仓库新建一个名为 test.txt 的测试文件:

在这里插入图片描述

输入 git add 和 git commit 命令,将文件 test.txt 添加并提交到 yolo-tutorial 仓库:

在这里插入图片描述

再输入 git push origin main 命令,将本地仓库修改(或者添加)的内容提交到远程仓库:

在这里插入图片描述

如上图所示,我们已经将本地仓库的内容同步到了远程仓库。下面我们进入远程 yolo-tutorial 仓库的页面,看看我们提交的结果:

在这里插入图片描述

如上图所示,我们已经将【通过 Git 将代码提交到 GitHub】的第三种情况演示完毕。

此外,在这个例子中,我们将远程仓库命名为 origin,本地仓库名为 yolo-tutorial,其实两者的名字可以随意取,一般来说,我们习惯性将远程仓库命名为 origin,不过在需要关联多个远程仓库的时候,就需要我们再取别的名字啦!

最后,再强调一遍:在我们向远程仓库提交代码的时候,一定要先进行 pull 操作,再进行 push 操作,防止本地仓库与远程仓库不同导致冲突的问题,尤其是第三种提交代码的情况,很容易就出现问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Git 将代码提交到 GitHub 的相关文章

  • 用于网站的 Git / 接收后 / 测试站点和生产站点的分离

    我使用 Git 来管理网站的源代码和部署 目前测试站点和实时站点在同一个机器上运行 关注此资源http toroid org ams git website howto http toroid org ams git website how
  • GitHub 错误 Probot:未找到集成,documentation_url

    我在使用 GitHub 的 Probot 应用程序时遇到身份验证问题 当我使用 npm start 运行应用程序时 我会得到 github Github request GET app installations 404 Not Found
  • 对于单个开发人员来说,是否值得从 SVN 转向 Git?

    自 2013 年起 此线程很可能已过时 当存储库主要由单个开发人员访问时 是否值得从 SVN 转到 GIT 我有几台用于开发的机器 主要不是用 C 开发 但我的存储库中混合了 VB VB Net PHP C C HTML Batch BAS
  • 无法使用 git 克隆任何存储库

    我尝试克隆一些存储库 但总是遇到相同的错误 我在哪里可以找到有关此错误的更多信息 错误日志文件或类似的文件 或者也许有人知道可能出了什么问题 git clone http github com creationix nvm git nvm
  • 在github上打开时如何更改Visual Studio的版本

    我有VS2015和VS2017 当我在 GitHub 上选择 在 Visual Studio 中打开 时 我想将其更改为使用 VS2017 而不是 VS2015 我怎样才能做到这一点 通过另一个问题找到了答案 使用 github 时 找不到
  • 如何克隆 GitHub wiki?

    如何克隆 GitHub 存储库的 wiki 我知道它保存为单独的 Git 存储库 但我不记得路径了 我试过了 reponame wiki git and reponame git wiki 但两者都不正确 Append wiki git到存
  • 无法放弃 git 中的更改

    一两周前 我拿了一些文件 这些文件是我用一个简单的程序存档的find sed tar xz gpgbash 脚本 将它们全部解压 并将它们的内容放入 git 存储库中 提交 将下一个档案内容放入存储库中 提交 冲洗并重复 以便拥有一个更好的
  • 导入数千条记录后无法推送到 Heroku

    我有一个问题 我认为我的 sqlite3 数据库太大 我将大约 100 000 条记录导入到数据库中 并且能够 git Push 和 git Push heroku 现在我可能犯了一个错误 导入了太多记录 500 000 我能够推送到 gi
  • 使用 gnu make 正确构建 git 子模块

    我目前尝试编写一个 Makefile 来正确构建一个包含 git 子模块的项目 该子模块有自己的一组 makefile 并一次生成多个目标 包括一些库 该 Makefile 应具有以下属性 即使使用并行构建 也不要重建两次子模块 当子模块代
  • 为什么 reposync 没有签出我在清单文件中指定的分支?

    假设我有以下清单文件repo https source android com setup develop repo tool MCVE https stackoverflow com help minimal reproducible e
  • 通过命令行创建私有 github 存储库

    我希望能够通过命令行创建一个私人 github 存储库 我认为使用其余 API 应该可以做到这一点 但是我无法从文档中弄清楚如何做到这一点 这可能吗 The GitHub CLI https github com cli cli tool
  • 创建 git 分支并将其合并到史诗分支

    我正在开发一个项目 例如 SO bubbleSort 我需要创建一个名为 feature version 1 的史诗分支 因此从这个史诗分支中很少有开发人员进行开发 因此为此 他们需要创建一个将分支与史诗分支分开 我的问题是我们如何合并这些
  • GitPython 并向 Git 对象发送命令

    GitPython http gitorious org git python是一种从 python 与 git 交互的方式 我正在尝试访问基本的 git 命令 例如git commit m message 从此模块中 根据this htt
  • 为什么 PS1 不更新 git 分支名称?

    PS1 w git branch grep cut b 3 100 我按上面设置我的 PS1 但在我更改分支后 它不会更新提示中的分支名称git checkout 或使用以下命令更改存储库cd 如何解决这个问题 当反引号引用位被评估时PS1
  • 获取自分离父分支以来的提交日志,包括父分支的最新提交

    我正在尝试创建一个快速的 bash 函数 该函数返回 oneline自当前分支从其父分支分支以来的每次提交的日志 以及包括先前提交的行 这是我到目前为止所拥有的 stolen from another Stack Overflow ques
  • 为什么我的 .git 文件很大?

    我不小心在 git 目录中添加并提交了一些非常大 100MB 的 PSD 文件 当这些文件位于目录中时 我对它们进行了一系列编辑 但后来意识到它们不应该在那里 并将它们从目录中删除 然后我跑了 git add all git commit
  • Git GUI 推送到特定分支

    我如何使用 GIT gui 推送到远程的特定分支 我似乎找不到它的选择 假设我想推送到特定的分支名称 branchOne 怎么可能呢 我正在推动 gitlab 每当您将某些内容推送到远程服务器时 您都在推送特定的分支 在您的情况下 您有一个
  • 如何分叉我自己的 GitHub 存储库?

    所以 Git 的完全新手 阅读了指南 认为我已经具备了基础知识 但在实现这一目标时遇到了困难 我为我的通用标记源代码创建了一个存储库 只是我每次突破时都会重复使用的东西 它被称为markupDNA git 我想在我的 mac 站点目录中有不
  • git show --name-status letter:什么时候可以出现多个字母?

    关于 git 的快速问题 特别是 差异过滤器 http git scm com docs git diff字母 如使用时出现的那样 git show
  • git 在子模块中添加远程

    gitmodule 文件有子模块 url 和路径的列表 与此类似 submodule vim bundle subRepo path vim bundle subRepo url https git com sub repo 并且在核心存储

随机推荐

  • ceph学习(3)——rbd-mirror双机热备

    一 概述 本文主要关注于rbd mirror的使用以及使用过程中的遇到的问题 二 环境准备 ceph版本 14 2 16 服务器 3台centos7服务器 ceph1 ceph2 ceph3 硬盘 每台服务器1块10GB以上硬盘做osd 分
  • <七>、Hadoop Web项目--HDFS文件管理

    本博客参考 http blog csdn net fansy1990 article details 51356583 一 项目介绍 推荐系统的web项目已经完成 现在在此基础上增加HDFS文件管理功能 便于管理HDFS上的文件数据 本文基
  • 面试题创作0009,请问Linux kernel中的spinlock_t 是如何实现互斥访问同一数据的?

    面试题创作0007 请问Linux kernel中的spinlock t 是如何实现互斥访问同一数据的 在单核多线程 多核多线程 多cpu多线程中 spinlock t实现互斥的机制有区别么 分别是什么呢 进一步列举一些使用spinlock
  • PLC是如何控制伺服电机的?

    在回答这个问题之前 首先要清楚伺服电机的用途 相对于普通的电机来说 伺服电机主要用于精确定位 因此大家通常所说的伺服控制 其实就是对伺服电机的位置控制 其实 伺服电机还用另外两种工作模式 那就是速度控制和转矩控制 不过应用比较少而已 速度控
  • Java通过反射模拟冰蝎免杀功能

    一 Java反射 java反射算是java学习过程中不可绕过的一关 java 反射 反射允许运行中的Java程序获取自身的信息 并且可以操作类或对象的内部属性 反射的核心是JVM在运行时动态加载类或调用方法或访问属性 class 类 我们正
  • 前端模块化:匿名闭包、CommonJS、ES6模块化

    ES5时 用匿名函数实现的模块化 通过将代码放在闭包当中 使得命名不会冲突 每一个js文件都成为独立的模块 需要复用代码时 将闭包中的结构返回到全局作用域即可 通过模块名 方法 属性的方法使用 a js var moduleA functi
  • 2022年第十四届“华中杯”大学生数学建模挑战赛

    2022年第十三届 华中杯 大学生数学建模挑战赛 为了推广我国高校数学建模实践教学 培养学生的创新意识及运用数学方法和计算机技术解决实际问题的能力 第十四届 华中杯 大学生数学建模挑战赛 以下简称竞赛 将于2022年3月开始 举办竞赛的目的
  • 【无标题】力扣链表总结

    k个一组反转链表 25 前置知识1 2 反转整个链表 反转以 a 为头结点的链表 ListNode reverse ListNode a ListNode pre cur nxt pre null cur a nxt a while cur
  • 1.网络工程基础知识

    目录 1 1 网络工程的定义 1 可以通过以下几个方面加强对工程的了解 2 网络工程属于IT集成工程 1 2 网络工程实施原则 1 从网络整体性能上考虑 IT工程实施需要遵守以下原则 2 从企业成本考虑 IT工程实施则需要遵守以下一些原则
  • Windows下自定义文件类型如何双击打开,如何双击文件后都在一个实例中打开

    1 要实现文件双击打开 需要在注册表中将文件类型与要打开文件的程序相关联 在HKEY CURRENT USER Software Classes 或者 HKEY LOCAL MACHINE Software Classes 下创建 xxxx
  • 【贪心算法】最优服务次序问题

    算法实现题 4 6 最优服务次序问题 设有n个顾客同时等待一项服务 顾客i需要的服务时间为ti 应如何安排n个顾客的服务次序才能使平均等待时间达到最小 平均等待时间是n个顾客等待直到完成服务的时间总和除以n 对于给定的n个顾客需要的服务时间
  • gp 索引列表查询,表字段类型,字段注释查询

    所有索引列表 SELECT n nspname as Schema c relname as Name c2 relname as Table FROM pg catalog pg class c JOIN pg catalog pg ro
  • 解决v-for轮播图中图片无法显示

    v fo中src拿不到img的地址 图片无法显示 view可以打印出list data中的img值 说明数组没问题 已经拿到图片值 将src直接赋值地址 有图片显示 那么就是src没有拿到图片地址 网页元素检查中也发现 这里的图片img中没
  • 无盘服务器2018,2018无盘服务器配置

    2018无盘服务器配置 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 源端服务器数据收集声明 源端服务器上安装和配置完迁
  • Nerd Font 字体安装

    一 Nerd Font 是什么 Nerd Font 是为开发人员准备的 具有大量字形 图标 的字体 特别是从流行的 标志性字体 中添加大量额外的字形 如Font Awesome Devicons Octicons等 二 安装步骤 1 克隆仓
  • React 下 message组件属性设置

    式子 message info content React ReactNode duration number gt void onClose configonClose 例子 message info 提示内容 自动关闭的延时 单位秒 设
  • MATLAB实现PSO-DBN算法优化深度置信网络的多输入单输出回归预测

    MATLAB实现PSO DBN算法优化深度置信网络的多输入单输出回归预测 随着数据分析和机器学习技术的不断发展 深度学习作为一种强大的分析工具广泛应用于各个领域 在时间序列预测领域中 深度置信网络 Deep Belief Network D
  • c/c++基础(二十三) GDB调试入门

    用GDB调试程序 GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具 或许 各位比较喜欢那种图形界面方式的 像VC BCB等IDE的调试 但如果你是在UNIX平台下做软件 你会发现GDB这个调试工具有比VC BCB的
  • Testing ovn manually based on LXD (by quqi99)

    作者 张华 发表于 2022 05 27 版权声明 可以任意转载 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 准备两个LXD容器 lxc list NAME STATE IPV4 IPV6 TYPE SNAPSHOTS
  • 通过 Git 将代码提交到 GitHub

    通过 Git 将代码提交到 GitHub 文章目录 通过 Git 将代码提交到 GitHub 第一种 本地没有 Git 仓库 clone GitHub 上已有的仓库 第二种 将本地普通仓库变成 Git 仓库 并推送到 GitHub 第三种