从 0 开始学习 Git + GitHub

news2024/12/24 9:45:45

文章目录

      • 一、GitHub创建仓库
      • 二、安装Git客户端
        • 1、安装
        • 2、配置身份
      • 三、为Github账户设置SSH key
        • 1、生成ssh key
        • 2、GitHub 新建SSh key
        • 3、测试连接是否成功
      • 四、上传本地项目到Github
        • 方法一:
        • 方法二:
        • master分支到main分支迁移
      • 五、Git常用命令
        • git init
        • git status
        • git add
        • git commit
        • git push
        • git pull
        • git log
        • git branch
        • git checkout
        • git merge
        • git branch -d
        • git branch -D

首先说明一下,git 和 GitHub 是两个完全不同的概念,git 是一个版本管理工具,GitHub 是一个面向开源及私有软件项目的托管平台。因为Github是基于git做托管,所以大佬超带你在GitHub上创建我们的代码仓库来进行git的学习。


一、GitHub创建仓库

在这里插入图片描述

创建好仓库后,发现其中有 HTTPS 和 SSH 两种 Clone 方式。

  • HTTPS:拿到url就可以直接clone,但是在push的时候需要验证Github的用户名和密码。

  • SSH:Github 需要添加本机的 SSH key,如果配置SSH key的时候设置了密码,在push的时候需要输入密码,否则直接push。

两种方式的URL对比如下:

https://github.com/yangxch/im-api.git
git@github.com:yangxch/im-api.git

二、安装Git客户端

1、安装

https://git-scm.com/downloads,根据自己的版本选择安装。
在这里插入图片描述

2、配置身份

打开Git Bash,配置用户名和邮箱(用户名不一定是你github注册的账号,可以任意命名),这样在提交代码的时候Git就知道是谁提交的了,命令如下。

git config --global user.name "yangxch"
git config --global user.email "xch_yang@126.com"

git config –global 参数表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。

配置完成后查看是否配置成功,只需要同样的命令去掉用户名和邮箱即可

在这里插入图片描述


三、为Github账户设置SSH key

ssh key是加密传输,git使用rsa,rsa就要涉及public key公钥以及private key私钥。

在本机生成了公钥之后上传到github。从github发回来的公钥加密过的数据,可以用本地的私钥来还原。

ps:如果其中一个丢了,则重新再生成一次,然后在github里再设置一次。


1、生成ssh key

输入: ssh-keygen -t rsa -C “邮箱”,如下

ssh-keygen -t rsa -C "chaodev@126.com"

在这里插入图片描述

注:这里如果设置了密码,在push的时候需要输入密码,否则直接push。

然后就会生成两个文件 id_rsa 和 id_rsa.pub , id_rsa 是密钥, id_rsa.pub 就是公钥。切换到.ssh目录下,路径以上面提示信息里路径为准,检查是否已生成,ls一下,如下

cd /c/Users/xch/.ssh/
ls

在这里插入图片描述

接下来要做的是把 id_rsa.pub 的内容添加到 GitHub 上,这样你本地的 id_rsa 密钥跟 GitHub 上的 id_rsa.pub 公钥进行配对,授权成功才可以提交代码。

在.ssh目录下,输入 clip < id_rsa.pub 会自动复制ssh key到剪切板

clip < id_rsa.pub

在这里插入图片描述

或者直接打开文件复制内容

在这里插入图片描述


2、GitHub 新建SSh key

进入Setting -> SSH and GPG keys ->New SSH key

在这里插入图片描述

在这里插入图片描述

Key里粘贴上一步复制的公钥,标题自定义。添加之后,如下
在这里插入图片描述


3、测试连接是否成功

ssh -T git@github.com

在这里插入图片描述

提示身份验证成功。

注:可以看到.ssh目录下生成了一个known_hosts文件,known_hosts是做服务器认证的,当你用ssh连接到一个新的服务器的时候,ssh会让你确认服务器的信息(域名、IP、公钥,如果你确认了,就会写到known_hosts里。

but GitHub does not provide shell access这个提示只是告诉你GitHub不提供shell访问,不影响。


四、上传本地项目到Github

添加 SSH key 成功之后,我们就有权限向 GitHub 上我们自己的项目提交代码了,而提交代码有两种方法:

方法一:

直接Clone自己的项目,以我在 GitHub 上创建的 test 项目为例,执行如下命令:

git clone git@github.com:yangxch/test.git

这样就把 test 项目 clone 到了本地,你可以把 clone 命令理解为高级点的复制,这个时候该项目本身就已经是一个git 仓库了,不需要执行 git init 进行初始化,而且已经关联好了远程仓库,我们只需要在这个 test 目录下任意修改或者添加文件,然后进行 commit ,之后就可以执行:

git push origin main

进行代码提交。


方法二:

打开Git Bash并进入项目目录后

执行初始化

git init

初始化成功后你会发现项目里多了一个隐藏文件夹.git,这个目录是Git用来跟踪管理版本库的

将文件添加到仓库

git add .

git add .是添加所有文件,可以指定单个文件

在这里插入图片描述

把文件提交到仓库。

git commit -m "提交注释"

在这里插入图片描述

至此,本地仓库就建好了。

关联远程 github 仓库

git remote add origin git@github.com:yangxch/im-api.git

上传本地代码,推送到远程仓库

git push -u origin master

git push -u origin main

注:目前GitHub默认分支已经是main,如果本地创建的是master,使用git push -u origin master提交后有两个分支。解决方法:把master合并到main,本地改名为main,然后删除master分支。


master分支到main分支迁移

如果GitHub默认是main分支,本地是master,可以使用一下方法做迁移。

  1. 给本地分支master重命名为main
git branch -M main 

说明:“-M”对分支重命名

  1. 查看所有分支
$ git branch -a
* master
  remotes/origin/main
  remotes/origin/master  
  1. 删除远程分支master
$ git push origin --delete master
To github.com:xxxxxx/im-api.git
 - [deleted]         master
  1. 确认删除情况
$ git branch -a
* main
  remotes/origin/main
  1. 切换到当前分支main,也就要保留下来的分支
$ git checkout main 
Already on 'main'  

说明:“Already on ‘main’”已经说明在当前分支

  1. 合并分支
$ git merge remotes/origin/main
fatal: refusing to merge unrelated histories 

说明:拒绝合并,需要忽略这个限制,添加“–allow-unrelated-histories”

$ git merge remotes/origin/main --allow-unrelated-histories
Merge made by the 'ort' strategy.
 LICENSE   | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 README.md |   2 +
 2 files changed, 203 insertions(+)
 create mode 100644 LICENSE
 create mode 100644 README.md
  1. 提交修改
$ git push origin main
Enumerating objects: 155, done.
Counting objects: 100% (155/155), done.
Delta compression using up to 8 threads
Compressing objects: 100% (142/142), done.
Writing objects: 100% (154/154), 118.29 KiB | 545.00 KiB/s, done.
Total 154 (delta 36), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (36/36), done.
To github.com:yangxch/im-api.git
   a9374c1..ef6086d  main -> main 

五、Git常用命令

在这里插入图片描述

Git 所有的操作命令开头都要以 git 开头,上面列举了最常用的一些 Git 命令。


git init

初始化git仓库,成功后你会发现项目里多了一个隐藏文件夹.git,这个目录是Git用来跟踪管理版本库的


git status

查看git仓库的状态,输入 git status 命令,如下:

在这里插入图片描述

这里表示默认在main分支,并且提示有个文件有修改,可以使用git add等命令来操作。


git add

将文件添加到仓库
在这里插入图片描述


git commit

把文件提交到仓库。

在这里插入图片描述


git push

把本地代码推到远程分支。

#把本地代码推到远程main分支
git push origin main

git pull

把远程最新的代码更新到本地。一般我们在 push 之前都会先 pull ,这样不容易冲突。

#从main分支最新的代码更新到本地
git pull origin main

git log

查看所有产生的 commit 记录 。

在这里插入图片描述


git branch

branch 就是分支,git branch 查看下当前分支情况

在这里插入图片描述


git checkout

切换分支。但是 checkout 不只用作切换分支,他可以用来切换tag,比如切换到某次commit。

 #切换到a分支
 git checkout a

git merge

合并分支。

#将a分支代码合并过来
git merge a

git branch -d

删除分支

#把a分支删除
git branch -d a 

git branch -D

有些时候可能会删除失败,比如如果a分支的代码还没有合并到master,你执行 git branch -d a 是删除不了的,它会智能的提示你a分支还有未合并的代码,但是如果你非要删除,那就强制删除。

#强制删除a分支
git branch -D a

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

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

相关文章

共享主机安全吗(以及如何保护它)?

共享主机是在一台服务器上存储多个网站的主机。通常&#xff0c;您的资源(例如 CPU、内存、数据库和带宽)会在用户之间溢出。由于它非常适合流量低的网站&#xff0c;且因具成本效益&#xff0c;共享主机相当普遍。如果您是博主和小型企业&#xff0c;则很有可能会选择共享主机…

聊聊我常用的5款动态数据可视化工具

视频当道的时代&#xff0c;数据可视化自然也要动起来。 我常用的动态可视化工具主要有Tableau、Echarts、Flourish、Python这几个&#xff0c;另外一个地图可视化神器kepler.gl&#xff0c;是技术群小伙伴的分享。 这五款可视化工具差异很大&#xff0c;在各自领域都是学霸级…

Grafana 快速配置可视化面板

一、如何快速搭建部署Grafana CSDNhttps://mp.csdn.net/mp_blog/creation/editor/128199952 二、快速配置可视化面板 1.新建数据源 首次新建数据源、首次新建看板 2.选择数据源类型 3.配置数据库 地址、账号、密码 备注&#xff1a;新建的数据源都可以在添加看板作为选项进…

Odoo丨如何在明细行中添加复选框?

最近&#xff0c;在项目实际业务中遇到需要对明细订单添加复选框和按钮进行操作的需求。 起初在拿到需求时&#xff0c;我联想到Odoo默认tree视图是有复选框和操作按钮的功能&#xff0c;于是查看了源码&#xff0c;确认了这个想法。 因为这个是属于字段中one2many 关系属性来…

【DPDK】dpdk样例源码解析之五:dpdk-rss

本篇文章介绍DPDK-RSS相关的功能&#xff0c;RSS是网卡提供的分流机制&#xff0c;简单讲就是一个HASH值&#xff0c;如果使用DPDK收包&#xff0c;开启RSS后&#xff0c;会根据配置项将数据包分流到不同的收包队列&#xff0c;用来是实现负载均衡。 通过DPDK-L3FWD样例&#…

关于Pytorch下载并进行部署

目录 1.关于Pytorch 2.Pytorch环境部署前提条件 3.部署方法 4.测试 1.关于Pytorch PyTorch是一个开源的Python机器学习库&#xff0c;基于Torch&#xff0c;用于计算机视觉、自然语言处理等应用程序。 2017年1月&#xff0c;由Facebook人工智能研究院&#xff08;FAIR&…

数据库设计 ER图

三个基本概念 Entity Entity Set表示一类事物&#xff0c;类似于面向对象中类的概念&#xff0c;而Entity Instance表示一个具体的事物&#xff0c;类似于对象的概念。 Entity中可以有属性(Attribute)&#xff0c;也可以与其他Entity之间存在关系(Relationship)。在设计数据库…

【最新版全插件】多功能同城优选小程序源码

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 1.为本地的线下商家提供线上销售渠道。一直以来本地商品、娱乐、休闲、旅游服务线上购买大家都是以美团为准。近几年来随着微信公众号、小程序的渗透力逐渐加强&#xff0c;越来越多的用…

【深度学习】实验6答案:图像自然语言描述生成(让计算机“看图说话”)

DL_class 学堂在线《深度学习》实验课代码报告&#xff08;其中实验1和实验6有配套PPT&#xff09;&#xff0c;授课老师为胡晓林老师。课程链接&#xff1a;https://www.xuetangx.com/training/DP080910033751/619488?channeli.area.manual_search。 持续更新中。 所有代码…

ElasticSearch实战

一、es集群的搭建 1.集群相关概念 单节点故障问题 单台服务器&#xff0c;往往都有最大的负载能力&#xff0c;超过这个阈值&#xff0c;服务器性能就会大大降低甚至不可用。单点的elasticsearch也是一样那单点的es服务器存在哪些可能出现的问题呢&#xff1f; 单台机器存储…

[附源码]计算机毕业设计基于springboot在线影院系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

ROS MoveIT1(Noetic)安装总结

前言 由于MoveIT2的Humble的教程好多用的还是moveit1的环境&#xff0c;所以又装了Ubutun20.04和ROS1&#xff08;Noetic&#xff09;。【2022年12月6日】 环境 系统&#xff1a;Ubutun20.04LTS Ros&#xff1a;Noetic 虚拟机&#xff1a;VMware 安装 ROS Noetic 安装教程…

【微信小程序】canvasToTempFilePath遇到的问题

在微信小程序开发中&#xff0c;经常需要将绘制好的canvas保存到本地&#xff0c;这就需要调用canvasToTempFilePath将canvas画布转为本地临时文件。遇到过的问题如下&#xff1a; 1.create bitmap failed 2.fail canvas is empty 这个问题就是canvas还没画为空拿不到转化的临…

Eclipse+Maven+Tomcat 集成开发环境配置

在Eclipse中创建的Dynamic Web Project 类型的Web 项目&#xff0c; 通过Run As -> Run on Server 可以添加本地安装的Tomcat&#xff0c;在Eclipse 中启动Tomcat 进行整合开发。 但是如果创建的是Maven类型的项目&#xff0c;如果没有导入额外的包还正常&#xff0c; 但是…

Nginx入门到搭建

前言 上一篇文章我们分享了Linux的软件安装以及项目后端的部署&#xff0c;本篇文章将要分享的内容是&#xff0c;Nginx的入门安装、反向代理、负载均衡等。 一、Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09; 代理服务…

如何让彩色网页变灰

如何让彩色网页变灰 在特殊的日子&#xff08;如清明节特殊纪念日等&#xff09;&#xff0c;需要让彩色网页变成灰色&#xff08;黑白色&#xff09;如下图所示&#xff0c;怎么做到呢&#xff1f; 下面先给出彩色正常的网页示例源码&#xff1a; <!DOCTYPE html> <…

消除数据库表中的重复组

重复组是在整个数据库表中重复的一系列字段/属性。大型和小型组织都面临着一个普遍的问题&#xff0c;这个问题可能会带来多种后果。例如&#xff0c;在不同区域中存在的同一组信息会导致数据冗余和数据不一致。而且&#xff0c;所有这些重复的数据可能会占用大量宝贵的磁盘空间…

【计算机图形学入门】笔记2:向量与线性代数(图形学中用到的线性代数)

02向量与线性代数&#xff08;图形学中用到的线性代数&#xff09;1.A Swift and Brutal Introduction to Linear Algebra!简单粗暴入门线性代数1.Graphics’ Dependencies 图形学依赖的一些知识2.Vectors 向量1.Dot product向量的点乘2.向量的叉乘Cross product3.矩阵Matrix4.…

Linux——进程并发控制(系统中的POSIX信息量机制、进程间通信)

目录 一、Linux系统中POSIX信号量机制 1、POSIX有名信号量 &#xff08;1&#xff09;常用函数 &#xff08;2&#xff09;有名信号量应用于多线程的例子 &#xff08;3&#xff09;有名信号量应用于多进程 2、POSIX无名信号量 &#xff08;1&#xff09;常用函数 &…

基于jsp+mysql+ssm大学生社交平台-计算机毕业设计

项目介绍 本系统需要满足校园网上社交方面的基本需要。需要实现用户所要求的功能&#xff0c;方便他们进行交流。在界面上力求做到美观、操作方面尽量避免由于会员操作不当带来系统的出错现象。对数据库操作的性能需要做到优化&#xff0c;数据库过大将会影响运行速度。编程过…