【Github】如何使用Git将本地项目上传到Github

news2024/11/26 0:40:33

【Github】如何使用Git将本地项目上传到Github

  • 写在最前面
  • 1. 注册Github账号
  • 2. 安装Git工具
    • 配置用户名和邮箱
      • 仅为当前项目配置(可选)
  • 3. 创建Github仓库
  • 4. 获取仓库地址
  • 5. 本地操作
    • (1)进入项目文件夹
    • (2)克隆远程仓库
    • (3)将本地项目文件复制到克隆的文件夹中
  • 6. 提交代码到Github
    • (1)进入仓库文件夹
    • (2)添加文件到暂存区
    • (3)提交代码
    • (4)推送到远程仓库
      • 1. 确认默认分支名称(已解决)
      • 2. 如果当前分支为空
      • 3. 如果远程仓库分支名称需要更改
      • 4. 如果问题仍然存在
  • 7. Git命令
  • 总结


请添加图片描述

🌈你好呀!我是 是Yu欸
🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

写在最前面

版权声明:本文为原创,遵循 CC 4.0 BY-SA 协议。转载请注明出处。

Git是开发者必备的版本控制工具之一,而Github是一个非常流行的代码托管平台。

本来想直接拖进去上传的,但是文件数量超了。

本文将通过简单的步骤,带你完成将本地项目上传到Github的过程。

在这里插入图片描述

参考:https://cloud.tencent.com/developer/article/1504684


1. 注册Github账号

如果你还没有Github账号,先前往 Github官网 注册一个账号。


2. 安装Git工具

为了在本地使用Git,你需要先安装Git工具。可以通过以下链接下载适合你系统的安装包:

Git for Windows

安装过程非常简单,一路“下一步”即可完成。

然后配置用户名和邮箱

配置用户名和邮箱

  1. 配置全局用户名和邮箱
    在终端中运行以下两条命令:

    git config --global user.name "Your Name"
    git config --global user.email "your_email@example.com"
    

    "Your Name" 替换为你的名字,"your_email@example.com" 替换为你在Github上注册时使用的邮箱。

    示例:

    git config --global user.name "Yu"
    git config --global user.email "yu@example.com"
    
  2. 验证配置是否成功
    运行以下命令查看当前的配置:

    git config --global --list
    

    输出类似以下内容:

    user.name=Yu
    user.email=yu@example.com
    

    表示配置成功。


仅为当前项目配置(可选)

如果你不想全局设置用户名和邮箱,只为当前项目设置身份,可以省略 --global

git config user.name "Your Name"
git config user.email "your_email@example.com"

3. 创建Github仓库

登录Github后,点击右上角的 New repository 按钮来新建一个项目。

在新建页面中填写以下信息:

  • Repository name: 仓库名称(建议使用英文命名,避免中文)。
  • Description (optional): 仓库描述,可选填写。
  • Public/Private: 仓库权限选择,公开或私有。
  • Initialize this repository with a README: 是否初始化仓库并添加README文件。
  • gitignore: 根据项目类型生成.gitignore文件。
  • license: 选择适合的开源协议。

点击 Create repository 即可完成创建。


4. 获取仓库地址

创建成功后,页面上会显示一段仓库的HTTPS地址,例如:

https://github.com/YourUsername/YourRepository.git

点击右侧按钮复制该地址备用。


5. 本地操作

(1)进入项目文件夹

在本地找到你要上传的项目文件夹,右键选择 Git Bash Here(前提是Git已安装),打开终端。

(2)克隆远程仓库

在终端中输入以下命令,将Github上的仓库克隆到本地:

git clone https://github.com/YourUsername/YourRepository.git

https://github.com/YourUsername/YourRepository.git 替换为你刚才复制的仓库地址。

(3)将本地项目文件复制到克隆的文件夹中

克隆完成后,你会发现项目文件夹下多了一个与Github仓库同名的文件夹。将原本项目的所有文件(除了新生成的文件夹)复制到该文件夹中。


6. 提交代码到Github

在终端中执行以下命令完成提交:

(1)进入仓库文件夹

cd YourRepository

(2)添加文件到暂存区

git add .

注意 . 表示将所有更改添加到暂存区。

(3)提交代码

git commit -m "提交信息"

提交信息 替换为你的提交备注,例如 "first commit"

git commit -m "first commit"

(4)推送到远程仓库

git push -u origin master

该步骤会将本地代码上传到Github。系统会提示你输入Github的用户名和密码,完成后代码就会成功上传。

如果报错:

error: src refspec master does not match any
error: failed to push some refs to ''

在这里插入图片描述

这个错误通常是由于当前分支名称与目标远程仓库的默认分支名称(如 mastermain)不匹配,或者本地分支还没有提交过任何内容导致的。


1. 确认默认分支名称(已解决)

现在大部分新的Github仓库的默认分支是 main,而不是 master。你可以通过以下命令查看本地分支名称:

git branch

在这里插入图片描述

如果本地分支名称是 main,而不是 master,则需要在推送命令中改用 main 分支:

git push -u origin main

2. 如果当前分支为空

如果本地仓库没有任何提交记录,会导致无法推送。确认是否已经提交了更改:

git log

如果没有任何日志记录,请确保完成以下步骤后再尝试推送:

  1. 添加文件到暂存区:

    git add .
    
  2. 提交更改:

    git commit -m "Initial commit"
    
  3. 再次推送:
    如果你的默认分支是 main

    git push -u origin main
    

    如果你的默认分支是 master

    git push -u origin master
    

3. 如果远程仓库分支名称需要更改

远程仓库的默认分支名称可能是 main,但本地分支仍然是 master。在这种情况下,你可以重命名本地分支为 main

  1. 重命名本地分支:

    git branch -m master main
    
  2. 将本地分支与远程分支关联:

    git push -u origin main
    

4. 如果问题仍然存在

如果依然遇到问题,可以尝试以下命令,重新同步本地和远程分支:

  1. 拉取远程分支(以防远程有初始化的 main 分支):

    git pull origin main
    
  2. 推送更改:

    git push -u origin main
    

7. Git命令

  1 查看、添加、提交、删除、找回,重置修改文件
  2 
  3 
  4 git help <command> # 显示command的help
  5 
  6 git show # 显示某次提交的内容 git show $id
  7 
  8 git co -- <file> # 抛弃工作区修改
  9 
 10 git co . # 抛弃工作区修改
 11 
 12 git add <file> # 将工作文件修改提交到本地暂存区
 13 
 14 git add . # 将所有修改过的工作文件提交暂存区
 15 
 16 git rm <file> # 从版本库中删除文件
 17 
 18 git rm <file> --cached # 从版本库中删除文件,但不删除文件
 19 
 20 git reset <file> # 从暂存区恢复到工作文件
 21 
 22 git reset -- . # 从暂存区恢复到工作文件
 23 
 24 git reset --hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
 25 
 26 git ci <file> git ci . git ci -a # 将git add, git rm和git ci等操作都合并在一起做                                    git ci -am "some comments"
 27 
 28 git ci --amend # 修改最后一次提交记录
 29 
 30 git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建次提交对象
 31 
 32 git revert HEAD # 恢复最后一次提交的状态
 33 
 34 查看文件diff
 35 
 36 
 37 git help <command> # 显示command的help
 38 
 39 git show # 显示某次提交的内容 git show $id
 40 
 41 git co -- <file> # 抛弃工作区修改
 42 
 43 git co . # 抛弃工作区修改
 44 
 45 git add <file> # 将工作文件修改提交到本地暂存区
 46 
 47 git add . # 将所有修改过的工作文件提交暂存区
 48 
 49 git rm <file> # 从版本库中删除文件
 50 
 51 git rm <file> --cached # 从版本库中删除文件,但不删除文件
 52 
 53 git reset <file> # 从暂存区恢复到工作文件
 54 
 55 git reset -- . # 从暂存区恢复到工作文件
 56 
 57 git reset --hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
 58 
 59 git ci <file> git ci . git ci -a # 将git add, git rm和git ci等操作都合并在一起做                                    git ci -am "some comments"
 60 
 61 git ci --amend # 修改最后一次提交记录
 62 
 63 git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建次提交对象
 64 
 65 git revert HEAD # 恢复最后一次提交的状态
 66 
 67 查看提交记录
 68 
 69 git log git log <file> # 查看该文件每次提交记录
 70 
 71 git log -p <file> # 查看每次详细修改内容的diff
 72 
 73 git log -p -2 # 查看最近两次详细修改内容的diff
 74 
 75 git log --stat #查看提交统计信息
 76 tig
 77 
 78 Mac上可以使用tig代替diff和log,brew install tig
 79 
 80 
 81 Git 本地分支管理
 82 查看、切换、创建和删除分支
 83 
 84 
 85 git br -r # 查看远程分支
 86 
 87 git br <new_branch> # 创建新的分支
 88 
 89 git br -v # 查看各个分支最后提交信息
 90 
 91 git br --merged # 查看已经被合并到当前分支的分支
 92 
 93 git br --no-merged # 查看尚未被合并到当前分支的分支
 94 
 95 git co <branch> # 切换到某个分支
 96 
 97 git co -b <new_branch> # 创建新的分支,并且切换过去
 98 
 99 git co -b <new_branch> <branch> # 基于branch创建新的new_branch
100 
101 git co $id # 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除
102 
103 git co $id -b <new_branch> # 把某次历史提交记录checkout出来,创建成一个分支
104 
105 git br -d <branch> # 删除某个分支
106 
107 git br -D <branch> # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)
108  分支合并和reba
109 git merge <branch> # 将branch分支合并到当前分支
110 
111 git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交
112 
113 git rebase master <branch> # 将master rebase到branch,相当于: git co <branch> && git rebase master && git co master && git merge <branch>
114  Git补丁管理(方便在多台机器上开发同步时用)
115 
116 
117 git merge <branch> # 将branch分支合并到当前分支
118 
119 git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交
120 
121 git rebase master <branch> # 将master rebase到branch,相当于: git co <branch> && git rebase master && git co master && git merge <branch>
122 
123  Git暂存管
124 git stash # 暂存
125 
126 git stash list # 列所有stash
127 
128 git stash apply # 恢复暂存的内容
129 
130 git stash drop # 删除暂存区
131 
132 Git远程分支管理
133 
134 git pull # 抓取远程仓库所有分支更新并合并到本地
135 
136 git pull --no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并
137 
138 git fetch origin # 抓取远程仓库更新
139 
140 git merge origin/master # 将远程主分支合并到本地当前分支
141 
142 git co --track origin/branch # 跟踪某个远程分支创建相应的本地分支
143 
144 git co -b <local_branch> origin/<remote_branch> # 基于远程分支创建本地分支,功能同上
145 
146 git push # push所有分支
147 
148 git push origin master # 将本地主分支推到远程主分支
149 
150 git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
151 
152 git push origin <local_branch> # 创建远程分支, origin是远程仓库名
153 
154 git push origin <local_branch>:<remote_branch> # 创建远程分支
155 
156 git push origin :<remote_branch> #先删除本地分支(git br -d <branch>),然后再push删除远程分支
157 
158 Git远程仓库管
159 git remote -v # 查看远程服务器地址和仓库名称
160 
161 git remote show origin # 查看远程服务器仓库状态
162 
163 git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址
164 
165 git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址) git remote rm <repository> # 删除远程仓库
166 
167 创建远程仓库
168 
169 git clone --bare robbin_site robbin_site.git # 用带版本的项目创建纯版本仓库
170 
171 scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上
172 
173 mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服务器创建纯仓库
174 
175 git remote add origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址
176 
177 git push -u origin master # 客户端首次提交
178 
179 git push -u origin develop # 首次将本地develop分支提交到远程develop分支,并且track
180 
181 git remote set-head origin master # 设置远程仓库的HEAD指向master分支
182 
183 也可以命令设置跟踪远程库和本地库
184 
185 git branch --set-upstream master origin/master
186 
187 git branch --set-upstream develop origin/develop

总结

通过以上步骤,你就可以轻松地将本地项目上传到Github。这不仅能帮助你备份代码,还能与他人协作开发。希望这篇教程对你有所帮助!如果有问题,欢迎留言讨论! 😊


hello,我是 是Yu欸 。如果你喜欢我的文章,欢迎三连给我鼓励和支持:👍点赞 📁 关注 💬评论,我会给大家带来更多有用有趣的文章。
原文链接 👉 ,⚡️更新更及时。

欢迎大家添加好友交流。

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

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

相关文章

大事件管理系统项目总结(上)

文章目录 大事件管理系统项目总结&#xff08;上&#xff09;Pinia - 配置仓库统一管理Vue3路由配置Vue3导航拦截 大事件管理系统项目总结&#xff08;上&#xff09; Pinia - 配置仓库统一管理 使用pinia多层文件夹嵌套时&#xff0c;导入某个文件的路径会很长&#xff0c;容…

鸿蒙征文|鸿蒙心路旅程:始于杭研所集训营,升华于横店

始于杭研所 在2024年7月&#xff0c;我踏上了一段全新的旅程&#xff0c;前往风景如画的杭州&#xff0c;参加华为杭研所举办的鲲鹏&昇腾集训营。这是一个专门为开发者设计的培训项目&#xff0c;中途深入学习HarmonyOS相关技术。对于我这样一个对技术充满热情的学生来说&…

flowable流程图详细绘制教程

文章目录 前言一、flowable是什么&#xff1f;回答下之前的问题 二、flowable-modeler使用1. 使用步骤2.开始绘制弄一个请假的流程 三 加载该流程总结 前言 flowable有些晦涩难懂的东西&#xff1a; 我最开始接触的时候,还是用的activity,当时觉得好复杂,那么这次经过我自己在…

【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行

文章目录&#xff1a; 【Linux 篇】Docker 的容器之海与镜像之岛&#xff1a;于 Linux 系统内探索容器化的奇妙航行前言安装docker-centos7 【Linux 篇】Docker 的容器之海与镜像之岛&#xff1a;于 Linux 系统内探索容器化的奇妙航行 &#x1f4ac;欢迎交流&#xff1a;在学习…

linux从0到1——shell编程9

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

go项目中比较好的实践方案

工作两年来&#xff0c;我并未遇到太大的挑战&#xff0c;也没有特别值得夸耀的项目。尽管如此&#xff0c;在日常的杂项工作中&#xff0c;我积累了不少心得&#xff0c;许多实践方法也在思考中逐渐得到优化。因此&#xff0c;我在这里记录下这些心得。 转发与封装 这个需求…

Maven的安装——给Idea配置Maven

一、什么是Maven? Maven是一个开源的项目管理工具&#xff0c;它主要用于Java项目的构建、依赖管理和项目生命周期管理。 二、准备环境 maven安装之前&#xff0c;我们要先安装jdk&#xff0c;确保你已经安装了jdk环境。可以通过【win】【r】打开任务管理器&#xff0c;输入…

vscode 远程连接ssh 密钥方式

目录 1. powershell 生成key&#xff1a; 2. 在服务器上安装公钥 linux测试成功&#xff1a; 3).为了确保连接成功&#xff0c;输入如下指令以保证以下文件权限正确&#xff1a; 3 开启 ssh 密钥登录 vscode 远程连接配置 python连接测试ok 查看日志&#xff1a; 命令…

Charles抓包工具-笔记

摘要 概念&#xff1a; Charles是一款基于 HTTP 协议的代理服务器&#xff0c;通过成为电脑或者浏览器的代理&#xff0c;然后截取请求和请求结果来达到分析抓包的目的。 功能&#xff1a; Charles 是一个功能全面的抓包工具&#xff0c;适用于各种网络调试和优化场景。 它…

Echarts+VUE饼图的使用(基础使用、多个饼图功能、单组饼图对应颜色使用)

安装&#xff1a;npm install echarts --save 配置:main.js // 引入echarts import * as echarts from echarts Vue.prototype.$echarts echarts一、基础饼图&#xff08;直接拷贝就能出效果&#xff09; <div class"big-box" ref"demoEhart"><…

神经网络(系统性学习三):多层感知机(MLP)

相关文章&#xff1a; 神经网络中常用的激活函数 神经网络&#xff08;系统性学习一&#xff09;&#xff1a;入门篇 神经网络&#xff08;系统性学习二&#xff09;&#xff1a;单层神经网络&#xff08;感知机&#xff09; 多层感知机&#xff08;MLP&#xff09; 多层感…

C语言练习.if.else语句.strstr

今天在做题之前&#xff0c;先介绍一下&#xff0c;新学到的库函数strstr 想要使用它&#xff0c;要先给它一个头文件<string.h> char *strstr(const char*str1,const char*str2); 首先&#xff1a;1.strstr的返回值是char&#xff0c;字符类型的。 2.两个实参&#xff…

golang实现TCP服务器与客户端的断线自动重连功能

1.服务端 2.客户端 生成服务端口程序: 生成客户端程序: 测试断线重连: 初始连接成功

c语言数据结构与算法--简单实现线性表(顺序表+链表)的插入与删除

老规矩&#xff0c;点赞评论收藏关注&#xff01;&#xff01;&#xff01; 目录 线性表 其特点是&#xff1a; 算法实现&#xff1a; 运行结果展示 链表 插入元素&#xff1a; 删除元素&#xff1a; 算法实现 运行结果 线性表是由n个数据元素组成的有限序列&#xff…

textureLod lod的确定

1. 自动计算导数方法 float calculateLOD(sampler2D tex, vec2 uv) { // 计算纹理坐标的导数 vec2 dUVdx dFdx(uv); vec2 dUVdy dFdy(uv); // 计算纹理大小 vec2 textureSize textureSize(tex, 0); // 0表示基础mipmap级别 // 计算LOD float maxDeriv max(length(…

C++数据结构与算法

C数据结构与算法 1.顺序表代码模版 C顺序表模版 #include <iostream> using namespace std; // 可以根据需要灵活变更类型 #define EleType intstruct SeqList {EleType* elements;int size;int capacity; };// Init a SeqList void InitList(SeqList* list, int capa…

SSH 反向端口转发-R

近期和同学聊到了他遇到的一个问题&#xff1a; 本地机器A&#xff0c;远程开发机C&#xff0c;机器A需要通过ssh连接开发机C进行开发&#xff0c;ssh直连不通&#xff0c;SCP传输文件的话就比较费劲&#xff0c;需要通过跳板机B&#xff0c;经过跳板机这一步骤可用&#xff0…

实时质检系统—静音检测功能设置流程

设置流程 1. 设置静音检测时间 在实时质检系统中&#xff0c;有一静音检测功能&#xff1a;可以对主叫或被叫在接通后的规定时间内开启静音检测。例&#xff1a;被叫静音检测配置设置了10&#xff0c;那么质检电话在接通后的10秒内&#xff0c;开启静音检测&#xff0c;如果被…

生成式UI 动态化SDK的研发(二)--实现垂直布局、水平布局以及文字组件

文章目录 1. 概述2. 效果展示2.1 垂直布局容器(Column)2.2 水平布局容器(Row )2.3 本文示例动态化模板DSL 3. 生成式UI 动态化SDK的渲染流程4. Column和Row组件实现4.1 Column组件4.1.1 视图的渲染4.1.2 事件解析绑定 4.2 Row组件4.3 文字组件(Text) 5. 源码地址 1. 概述 在前…

JavaScript中的this指向绑定规则(超全)

JavaScript中的this指向绑定规则&#xff08;超全&#xff09; 1.1 为什么需要this? 为什么需要this? 在常见的编程语言中&#xff0c;几乎都有this这个关键字&#xff08;Objective-C中使用的是self),但是在JavaScript中的this和常见的面向对象语言中的this不太一样 常见面…