Git GitHub纯新手入门教程

news2024/11/24 16:45:39

参考视频:

Github 新手够用指南 | 全程演示&个人找项目技巧放送_哔哩哔哩_bilibili

40 分钟学会 Git | 日常开发全程大放送&个搭配GitHub_哔哩哔哩_bilibili


Git和GitHub分别是什么

  • Git是一个运行在电脑上的版本控制软件(保存代码各个阶段历史记录的变更)

  • GitHub是基于Git这个版本控制软件打造的网站

Git的三个概念

  1. 提交 commit:把代码的变化以提交为单位记录下来,当代码修改出问题时,可以回滚到以前某一正确的状态

  1. 仓库 repository:即文件夹。仓库对应的文件夹里代码的变更会被git给控制、记录下来,每一次提交都是针对仓库进行的

  1. 分支 branch:根据不同的人和不同的需求,在当前的代码中开辟不同的分支,各写各的互不影响,最后再合起来,为不同开发者分工协作带来便利

(一)提交commit

对应着不同代码的修改

点击某一版本代码的哈希值:

红色代表删除的代码,绿色代表本次新改的代码,白色代表没有修改的代码

(二)仓库repository

一个页面就代表一个仓库,readme.md就是该仓库的说明文档

(三)分支branch

主分支叫main/master

一般一个分支对应一个功能,最后都会合到主分支下

GitHub

  • git的仓库一般是在本地初始化的

  • GitHub是托管仓库的一个网站,可以共享代码


看别人的GitHub项目

git clone,把代码拉到本机

通过该地址可以远程拉取到这个仓库,步骤:

新建一个文件夹(想要保存这个项目的文件夹),在该文件夹内右键 - Git Bash Here,输入以下命令:

git clone xxx.git(即复制的地址)

拉取到本地后,进入clone到本地的项目文件夹 - 右键 - 通过VSCode打开,即可浏览该项目

Star

类似于本地的收藏夹

readme.md

编辑 readme.md(Markdown语法)

LICENSE

若是MIT License,只要保留原作者的一些版权信息在源码里,就可以无限制使用,不用付费

issues

相当于项目的论坛,可以提问题(new issues,支持Markdown的语法)

有两种状态:open(还没回复)/closed(已解决)


怎么去找开源项目

  1. 掘金社区:https://juejin.cn/

  1. https://github.com/trending/

  1. https://github.com/521xueweihan/HelloGitHub

  1. https://github.com/ruanyf/weekly

  1. https://www.zhihu.com/column/mm-fe(前端领域)


特殊的查找资源小技巧

https://github.com/search?q=&type=

高级命令

常用前缀后缀

  • 找百科大全 awesome xxx(想了解的技术的名字)

  • 找某技术的例子/项目 xxx sample

  • 找空项目架子(环境配置好的) xxx starter / xxx boilerplate

  • 找教程 xxx tutorial


回顾Git的三大概念

  • 提交commit:git可以把一个人乃至多个人代码的变更以提交的形式做一个存储,可以方便进行无限的后悔,找回历史的记录。提交是针对git仓库进行的

  • 仓库repository:项目的文件夹

  • 分支branch:可以根据不同的人或不同的需求在代码中开辟不同的分支,为不同项目或不同开发者并行时做了一个隔离

先安装VSCode,再安装Git

git的基本操作:

  • 如何建立仓库

  • 如何提交

  • 如何进行分支的处理和合并


如何初始化一个仓库

Q:git clone下载和download zip下载的区别
前者下载下来会多一个隐藏的文件夹.git
download zip后下载解压得到的是【文件夹】,而git clone下来的是【仓库】,【文件夹】要通过git初始化后才能变成【仓库】

在download zip并解压后的文件夹里:右键 - git bash here,输入

git init

初始化后就变成一个仓库了,此时才能以提交为概念进行后悔

.git文件保存了仓库所有的历史记录,谨慎删

第一次提交

提交到仓库需要:工作区 —> 暂存区 —> 仓库

现在已有的代码文件都在工作区(对应着文件夹里的代码),想要这些文件被git记录到,需要全部提交到仓库,再增加/删除/改动时git才能进行对比或回滚

在刚刚初始化好的(git init命令)git仓库(文件夹)里 - 右键 - 用VSCode打开,同时打开git bash here的终端,如图:

文件都变绿是因为VSCode发现这是一个仓库,而这些文件都没有被提交到仓库,还在工作区

打开源代码管理,可以看到以上文件都在更改下面:

U的意思是:会和Git已有的东西进行比较,把本次的变化标注出来,如果是U代表是完全新增的文件。由于之前是个空仓库,所以这里所有的文件后都有U

方法一:命令

git add -A   # 要把所有的文件都加入暂存区

执行后,发现所有文件都从 更改 —> 暂存的更改(文件进入暂存区)

再执行以下命令,文件从暂存区 —> 仓库(按照提示输入邮箱和用户名)

git commit -m "first commit"   # 对本次提交命名

git config --global user.email "xxx"
git config --global user.name "xxx"

git commit -m "first commit"   # 对本次提交命名

方法二:图形化界面

点“+”即可把文件从工作区 —>暂存区:

在以下框里输入本次提交的名字,Ctrl+回车,即可从暂存区 —>仓库:

总结:

  • 更改 对应 工作区

  • 暂存的更改 对应 暂存区


查看提交的历史

git log --stat

每次commit都有一个哈希值(唯一对应)

或在图形化界面查看:


维护项目的日常

M表示文件被修改过

如何在提交前/后分别回滚代码

工作区打回去:
git checkout <filename>
或点击撤回的那个符号

若已提交到仓库再打回去:
git reset HEAD^
再从工作区打回去
或右键-Undo Commit,到了暂存区,点击-,回到工作区,再点撤回的符号

若过了很久之后,想找回之前的某一版项目代码:

找到以前的代码,手动复制变更


分支

为代码创建分支的目的,是为了让不同人或不同需求的开发过程之间能相互隔离,在开发后又能非常好地汇聚在一起

每个仓库在初始化后都会自动地有个主分支master/main(是一切代码分支的起点和终点),主分支默认是代码的完成态,不要把开发一半的代码放在主分支

如何创建/切换/合并/放弃合并分支

以当前分支为基础新建分支
git checkout -b <branchname>  # 在哪个节点下运行这句话,分支就从哪个节点产生

列举所有的分支
git branch

单纯地切换到某个分支
git checkout <branchname>

删掉特定的分支
git branch -D <branchname>

把分支的变化合并到master
git merge <branchname>  # 要在master底下运行这句话

放弃合并
git merge --abort

合并冲突的处理

场景:

a和b修改了同一个地方,但改的不一样,b先提交了,a再提交时就会报错,有两种选择:

  • Accept Current Change:保留b的修改,a本次修改作废

  • Accept Incoming Change:保留a的修改

若文件有多个冲突,可以不用一一处理,在合并更改下,右击文件,选择“全部采用当前内容”/“全部采用传入版本”

查看不同版本修改内容的插件(不同修改对应不同颜色):


Git和GitHub远程仓库

在GitHub - New Repository,在GitHub远端已经有了一个空白的仓库,需要把本地的仓库提交上去

创建新仓库的代码

echo "# PKU-TensorFlow2-tutorial" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/yqqCheergo/PKU-TensorFlow2-tutorial.git
git push -u origin main

把已有仓库提交上去的代码

# 把项目当做一个远端的仓库添加到git中
git remote add origin https://github.com/yqqCheergo/PKU-TensorFlow2-tutorial.git

# 把本地的master改为main
git branch -M main

git push -u origin main  

运行后发现报错如下:

参考:

解决办法:git错误 error: failed to push some refs to ‘https://github.com/...

(已解决)git错误 error: failed to push some refs to ‘https://github.com/...

我输入的命令是:

git pull --rebase origin main
git push origin main

再刷新GitHub页面,发现项目已成功上传:

总结:

推送当前分支最新的提交到远程
git push

拉取远程分支最新的提交到本地
git pull

push到GitHub之前,Git会做一个比较:现在提交的水平是否领先于GitHub,若领先,则可以push;若发现远程已经有了新的更新,而本地还没有,且本地做出了其他的更新,需要先pull(把远程领先于本地的集成进来,是一个和远程分支进行合并的过程)才能push


基于VSCode上传项目到GitHub步骤

总结一下上面的内容,主要步骤如下:

  1. 先在本地创建一个仓库,命令如下:

git init   # 生成.git文件,将普通文件夹标记为仓库

git add -A   # 将内容从工作区(更改)—>暂存区(暂存的更改)

git commit -m "first commit"    # 将内容从暂存区(暂存的更改)—>仓库(本地仓库)
  1. 再在远程,也就是GitHub页面上创建一个仓库,就是New Repository,按照页面提示填下来即可

  1. 最后一步是将两者建立一个连接,命令如下:

git remote add origin https://github.com/yqqCheergo/PKU-TensorFlow2-tutorial.git

git branch -M main

git push -u origin main

这步若报以下错:

error: failed to push some refs to 'https://github.com/yqqCheergo/PKU-TensorFlow2-tutorial.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

输入以下命令即可解决:

git pull --rebase origin main
git push origin main

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

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

相关文章

在使用定时器过程中存在的那些陷阱

在使用定时器的过程中&#xff0c;如果你不了解定时器的一些细节&#xff0c;那么很有可能掉进定时器的一些陷阱里&#xff0c;函数 setTimeout 在时效性上面有很多先天的不足&#xff0c;所以对于一些时间精度要求比较高的需求&#xff0c;应该有针对性地采取一些其他的方案 …

【回眸】牛客网刷刷刷(四)软件工程(续)ZooKeeper字符串链表(专题)

前言 本篇博客为笔者刷客观笔试题时做的一些记录以供以后复习时翻阅&#xff0c;如果能够帮到您是最大的荣幸&#xff01;如果能给笔者一个三连将感激不尽&#xff01; 知识点串烧 软件工程专题&#xff08;续上篇&#xff09; 有一些可维护特性是相互促进的&#xff0c;如…

【技术美术图形部分】PBR Disney原则的BRDF 次表面散射模型

写在前面 补充去年遗漏下的知识。很多叙述都是参考了众多大佬的文章&#xff01;因为是作为个人学习总结的博客&#xff0c;所以直接卑微的借鉴过来了&#xff0c;后面会给出所有参考的文章。 另外&#xff0c;放上一个忘了在哪一篇知乎评论里的截图&#xff1a; 说的蛮好。 …

MySQL基础篇笔记

文章目录导入表的问题第3章_最基本的SELECT语句1. SQL语言的规则和规范1) 基本规则2) SQL大小写规范&#xff08;建议遵守&#xff09;3) 注释4) 命名规则2. 基本的SELECT语句1) SELECT ... FROM2) 列的别名3) 去除重复行4) 空值参与运算5) 着重号 6) 查询常数3. 显示表结构4. …

贪心算法(基础)

目录 一、什么是贪心&#xff1f; &#xff08;一&#xff09;以教室调度问题为例 1. 问题 2. 具体做法如下 3. 因此将在这间教室上如下三堂课 4. 结论 &#xff08;二&#xff09;贪心算法介绍 1. 贪心算法一般解题步骤 二、最优装载问题 &#xff08;一&#xf…

智能驾驶 车牌检测和识别(四)《Android实现车牌检测和识别(可实时车牌识别)》

智能驾驶 车牌检测和识别&#xff08;四&#xff09;《Android实现车牌检测和识别&#xff08;可实时车牌识别&#xff09;》 目录 智能驾驶 车牌检测和识别&#xff08;四&#xff09;《Android实现车牌检测和识别&#xff08;可实时车牌识别&#xff09;》 1. 前言 2. 车…

SLAM数学知识回顾

文章目录1、三角函数2、向量运算&#xff08;1&#xff09;负向量&#xff08;2&#xff09;向量的模&#xff08;3&#xff09;标量与向量的运算&#xff08;4&#xff09;标准化向量&#xff08;5&#xff09;向量的加法和减法&#xff08;6&#xff09;距离公式&#xff08;…

三十七、Kubernetes1.25中数据存储第三篇

1、概述在前面已经提到&#xff0c;容器的生命周期可能很短&#xff0c;会被频繁地创建和销毁。那么容器在销毁时&#xff0c;保存在容器中的数据也会被清除。这种结果对用户来说&#xff0c;在某些情况下是不乐意看到的。为了持久化保存容器的数据&#xff0c;kubernetes引入了…

计算机视觉OpenCv学习系列:第十部分、实时人脸检测

第十部分、实时人脸检测第一节、实时人脸检测1.OpenCV人脸检测支持演化2.OpenCV DNN检测函数3.代码练习与测试学习参考第一节、实时人脸检测 1.OpenCV人脸检测支持演化 OpenCV4 DNN模块 DNN- 深度神经网络 来自另外一个开源项目tiny dnnOpenCV3.3正式发布最新版本OpenCV4.5.…

网络编程 之 epoll

epoll 参数设置 events设置 ev.events EPOLLIN | EPOLLET;epoll实现TCP通讯时&#xff0c;events通用设置如上&#xff0c;EPOLLIN代表可socket套接字可接收数据&#xff0c;EPOLLET代表边沿触发。在服务器端, 接受客户端连接的socket不能设置为EPOLLOUT&#xff0c;只设置E…

【5】【TypeScript】(TypeScript=Type+JavaScript)

Typescript 相比js特有 类型系统&#xff1b;对象的接口DOM操作时候需要进行类型断言上面三个实际是类型系统的三处体现枚举js中&#xff0c;-号可以强制转换为数值&#xff0c;ts不行 所有合法的js都是ts 1、安装 安装进度卡住可以用淘宝镜像 &#xff08;在后面加 --registr…

Spring Cloud Hystrix有什么作用?

在微服务架构中&#xff0c;通常会存在多个服务层调用的情况&#xff0c;如果基础服务出现故障可能会发生级联传递&#xff0c;导致整个服务链上的服务不可用&#xff0c;如图1所示。图1 服务故障的级联传递在图1中&#xff0c;A为服务提供者&#xff0c;B为A的服务调用者&…

反欺诈(羊毛盾)API有什么作用?

肯定很多企业、商家都遭受过羊毛党的侵入&#xff0c;比如恶意注册、刷单、领用的行为。羊毛党具体有哪些危害呢&#xff1f; 羊毛党的危害 虚假用户裂变&#xff1a;识别在游戏解锁、红包裂变、助力砍价、电商拼团等用户拉新活动中作弊行为。虚假登录注册&#xff1a;防止机…

Java基于springboot大学生宿舍寝室考勤人脸识别管理系统

简介 Java基于springboot开发的大学生寝室管理系统宿舍管理系统。学生可以查找寝室和室友信息&#xff0c;可以申请换寝室&#xff0c;申请维修&#xff0c;寝室长提交考勤信息&#xff08;宿管确认学生考勤信息&#xff09;&#xff0c;补签&#xff0c;查看寝室通报&#xf…

FPGA纯verilog代码实现图像缩放,两种插值算法任意尺寸缩放,提供3套工程源码

目录1、设计思路和架构2、纯verilog代码搭建&#xff0c;不带任何ip3、双线性插值和邻域插值算法4、vivado和matlab联合仿真及结果5、工程代码1&#xff1a;720P原始摄像头采集显示6、工程代码2&#xff1a;720P缩小到800x600P显示7、工程代码3&#xff1a;720P缩放大1920x1080…

结合FPGA和NVIDIA Jetson Orin NX 系统的视觉边缘计算机

边缘计算机采用NVIDIA Jetson Orin NX模块化系统和高带宽图像采集卡&#xff0c;用于实时图像采集计算和人工智能处理。虹科与一家专注于高速图像采集和处理的以色列科技公司Gidel合作&#xff0c;今天宣布新的NVIDIA Jetson Orin NX™ 16GB模块化系统(SoM)将被添加到Gidel的Fa…

Jmeter接口测试流程详解(中科软测认证中心)

Jmeter接口测试流程详解&#xff08;中科软测认证中心&#xff09; 目录&#xff1a;导读 1、jmeter简介 2、jmeter安装 3、设置jmeter的中文界面 4、jmeter主要元件 5、Jmeter元件的作用域和执行顺序 6、jmeter接口测试流程步骤 1、jmeter简介 Jmeter是由Apache公司开…

【数据架构系列-02】从《数据中台能力成熟度模型》的发布,聊聊火了的中台

热点之所以会“热起来”,是由于万众瞩目的那份炽烈,也是因为无数双“手”的奋力炒作。所以,要穿过那“缭绕烟雾”看到本质,便需要冷静的头脑。 2023年1月4日&#xff0c;信通院发布了《数据中台能力成熟度模型》框架&#xff0c;不由让我浮想联翩&#xff0c;之后是不是还会出现…

Python采集豆某影片并作词云图分析

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 目录前言环境使用:模块使用&#xff1a;爬虫基本思路:代码展示绘制词云图尾语 &#x1f49d;环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用&#xff1a; import parsel >>> pip install parsel import…

二叉树26:二叉树的最近公共祖先

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;236. 二叉树的最近公共祖先 题目&#xff1a; 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科…