简洁明快git入门及github实践教程
简洁明快git入门及github快速入门实践教程
- 前言
- git知识概要:
- 一:什么是 Git?
- 二:安装 Git
- 三:配置 Git
- 配置`git`的用户名和邮箱地址
- 创建仓库
- 四:Git实践
- 五:远程仓库操作(基于git命令使用GitHub)
- 1:初始设置与仓库创建
- 1.1 安装Git并配置
- 1.2. 创建GitHub账户与仓库
- 2: 克隆与配置远程仓库
- 2.1 克隆远程仓库
- 2.2 查看与添加远程仓库
- 3:日常开发与推送更改
- 3.1 添加与提交文件
- 3.2. 推送更改到GitHub
- 4:拉取更新与分支管理
- 4.1 拉取远程仓库的更新
- 4.2 分支的创建、切换与合并
- 5:高级远程仓库操作
- 5.1 查看文件历史与版本
- 5.2 回滚操作
- 5.3 标签管理
- 六:解决冲突
- 七:协作小技巧:
- 常用Git命令总结
- 学习资源
- github的精简知识总结
- 入门基础
- 核心操作
- 协作功能
- 进阶技巧
前言
在研究生阶段,学习使用Git
与GitHub
知识非常重要。git
可以提升我们的代码管理能力、版本控制效率以及团队协作水平。GitHub
则为我们提供了一个代码托管、项目分享、版本控制以及社区交流的平台。
本帖子的主要目的是,半小时内简介明快的带不了解git
和github
的小白入门,并开始使用其在本地和云端进行开发。
首先,小白应该首先看下面四个网络链接中的链接1
,链接2
学习git
,再看一下下面的链接3
和链接4
学习一下github
。(都是几分钟到十几分钟的视频,两倍速看完很快就能对git和github有基本的了解) 。
- 链接1:改变了世界的软件!程序员的基本功,Git 应该如何使用?
- 链接2:git、github 保姆级教程入门,工作和协作必备技术,github提交pr - pull request
- 链接3:GitHub上的项目要怎么运行?一个视频教会你!
- 链接4:GitHub介绍:如何找公开的软件、项目、代码等 - 开源的意义和知识的突破 opensource
之后看我下面帖子里的知识进行应用和开发尝试即可
git知识概要:
一:什么是 Git?
Git 是一个分布式版本控制系统,用于跟踪计算机文件的变化并协调多个用户之间的工作。它允许你记录项目的修改历史,回滚到之前的版本,以及与其他开发者协作。
二:安装 Git
首先大家可以去官网下载,或通过包管理器去安装git
,比如:
- Windows 用户可以访问 Git官网 下载安装程序。
- Mac 用户可以通过
Homebrew
安装:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
然后brew install git
。 - Linux 用户可以使用
包管理器
安装,例如sudo apt-get install git
(Ubuntu)。
(当然不仅局限于这几种方法)
三:配置 Git
安装完成后,你可以通过命令行界面
或vscode
或pycharm
使用Git
。
之后输入下面命令来确定你此时已经安装好了git
。
git version
配置git
的用户名和邮箱地址
安装完成后,你需要配置你的用户名和邮箱地址。这些信息将被用于标识你的提交。
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
之后我们可以创建仓库并进行git
的初始化:
创建仓库
创建一个新的文件目录,来存放你的git
项目。
mkdir myproject
cd myproject
git init
这样就会在当前目录下创建一个.git
的隐藏文件夹来保存文件的每个git
版本的记录和变化
我们还可以再使用命令:
git status
显示一下当前工作区、暂存区和仓库的状态。之后我们可以使用git
进行添加文件
,提交修改
,查看提交历史
等等操作
四:Git实践
1. 添加文件到暂存区
git add <file>
你可以通过这个命令将修改过的文件添加到暂存区。
2. 提交文件到仓库
git commit -m "Your commit message"
这个命令会将暂存区的文件提交到仓库,并附带一条提交信息。
3. 查看提交历史
git log
这个命令会显示仓库的提交历史,包括每次提交的哈希值、作者、日期和提交信息。
4. 分支管理
- 创建分支:
git branch <branch_name>
- 切换分支:
git checkout <branch_name>
- 合并分支:
git merge <branch_name>
- 删除分支:
git branch -d <branch_name>
五:远程仓库操作(基于git命令使用GitHub)
1:初始设置与仓库创建
1.1 安装Git并配置
首先,确保你的计算机上已经安装了Git。可以从Git官网下载并安装适合你操作系统的版本。安装完成后,打开命令行工具,输入以下命令来检查Git是否正确安装:
git --version
接着,配置你的用户名和邮箱地址。这些信息会成为你每次提交的一部分,有助于团队协作时识别提交者。
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
1.2. 创建GitHub账户与仓库
访问GitHub官网并注册账户。登录后,点击右上角的“+
”号,选择“New repository
”来创建一个新的仓库。填写仓库名称、描述(可选)、选择是否公开,并勾选“Initialize this repository with a README
”以创建一个初始README文件。点击“Create repository
”完成创建。
2: 克隆与配置远程仓库
2.1 克隆远程仓库
使用以下命令将远程仓库克隆到你的本地计算机上:
git clone https://github.com/yourusername/your-repository.git
cd your-repository
这将创建一个包含远程仓库所有文件和历史的本地副本。
2.2 查看与添加远程仓库
使用git remote -v
命令可以查看当前仓库已配置的远程仓库信息。默认情况下,克隆仓库时会自动添加一个名为origin
的远程仓库。
如果你需要为本地仓库添加一个新的远程仓库,可以使用以下命令:
git remote add <remote_name> <repository-url>
3:日常开发与推送更改
3.1 添加与提交文件
在本地仓库中添加新文件或修改现有文件后,使用以下命令将其添加到本地暂存区
并提交:
# 添加单个文件到暂存区
git add filename.txt# 或者添加所有更改过的文件
git add .# 提交更改
git commit -m "Add meaningful commit message here"
3.2. 推送更改到GitHub
完成本地提交后,使用以下命令将更改推送到远程仓库:
git push origin <branch_name>
通常,<branch_name>
会是你的默认分支名,如main
或master
。确保在推送前已经切换到正确的分支。
(PS:main
通常指的是默认的主分支名。在早期的Git
版本中,默认的分支名是master
,但从2020年开始,许多平台(包括GitHub
)开始默认使用main
作为新建仓库的主分支名。不过不是所有的仓库都必须使用main
,分支名是可以自定义的)
4:拉取更新与分支管理
4.1 拉取远程仓库的更新
当远程仓库有更新时,你可以使用以下命令将更改拉取到本地仓库并合并到当前分支:
git pull origin <branch_name>
4.2 分支的创建、切换与合并
和团队协作,涉及到分支管理时,可以使用以下的命令
- 查看所有分支:使用
git branch
命令。 - 创建新分支并切换到该分支:使用
git checkout -b <新分支名>
命令。 - 提交更改到新分支后,使用
git push origin <新分支名>
将分支的更改推送到GitHub。 - 删除分支:使用
git branch -D <分支名>
删除本地分支,使用git push origin --delete <分支名>
删除远程分支。
- 创建并切换到新分支:
git checkout -b <new_branch_name>
- 切换分支:
git checkout <branch_name>
- 合并分支:切换到目标分支后,使用以下命令将新分支的更改合并进来:
git merge <new_branch_name>
- 删除分支:合并完成后,如果不再需要该分支,可以安全地删除它。使用以下命令删除本地和远程分支:
# 删除本地分支
git branch -d <branch_name># 删除远程分支
git push origin --delete <branch_name>
5:高级远程仓库操作
5.1 查看文件历史与版本
- 查看文件历史:使用以下命令查看指定文件的所有提交历史记录。
git log <file>
- 查看文件的某个版本:使用以下命令查看指定提交中某个文件的内容。
git show <commit_hash>:<file_path>
5.2 回滚操作
- 将文件从暂存区回滚到工作区:使用
git checkout <文件名>
命令。 - 将已经提交到仓库的文件回滚到工作区:使用
git reset HEAD <文件名>
命令。(记得备份,可以去了解一下软回退
和硬回退
)
5.3 标签管理
- 创建标签:为当前分支的最新提交创建一个标签。
git tag <tag_name>
- 查看标签:列出所有标签。
git tag
- 推送标签到远程仓库:
# 推送单个标签
git push origin <tag_name># 推送所有标签
git push origin --tags
六:解决冲突
当多个协作者尝试编辑同一个文件的同一部分时,可能会发生冲突。Git
无法自动解决这种冲突,这时候需要我们手动解决。
- 打开冲突文件,查找冲突标记(
<<<<<<<
、=======
、>>>>>>>
)。 - 决定保留哪些更改,删除不需要的部分以及冲突标记。
- 保存文件后,再次提交更改。
七:协作小技巧:
-
- 定期拉取更新:在开始新工作前,先拉取远程仓库的最新更改,以避免合并冲突。
-
- 分支检查:在进行推送(
push
)或拉取(pull
)操作前,使用git status
查看当前分支。
- 分支检查:在进行推送(
-
- 工作备份:在进行可能破坏工作流的操作(如
reset
)前,确保已经备份了重要工作(可以了解一下软回退
和硬回退)
- 工作备份:在进行可能破坏工作流的操作(如
常用Git命令总结
- 初始化仓库:
git init
- 克隆仓库:
git clone <repository_url>
- 添加文件到暂存区:
git add <file>
- 提交文件到仓库:
git commit -m "Your commit message"
- 查看状态:
git status
- 查看提交历史:
git log
- 创建分支:
git branch <branch_name>
- 切换分支:
git checkout <branch_name>
- 合并分支:
git merge <branch_name>
- 删除分支:
git branch -d <branch_name>
- 添加远程仓库:
git remote add <remote_name> <repository_url>
- 推送分支到远程仓库:
git push <remote_name> <branch_name>
- 从远程仓库拉取更新:
git pull <remote_name> <branch_name>
学习资源
- 官方文档:Git Documentation
- 教程:Pro Git book
github的精简知识总结
入门基础
- 注册与登录:访问GitHub官网,使用邮箱注册账号并登录。
- 仓库(Repository):存储项目代码的地方,可公开或私有。
- 克隆(Clone):将远程仓库复制到本地电脑。
- 分叉(Fork):创建他人仓库的副本到自己的账户下。
核心操作
- 创建仓库:点击页面右上角“+”号,选择“New repository”填写信息创建。
- 提交(Commit):在本地修改代码后,通过
git add
、git commit
记录变更。 - 推送(Push):将本地提交推送到远程仓库,使用
git push
。 - 拉取请求(Pull Request, PR):向他人仓库贡献代码时,先分叉再修改,最后提交PR请求合并。
协作功能
- 关注(Follow):关注用户或仓库,获取最新动态。
- 议题(Issues):用来跟踪任务、bug或功能请求,可添加标签管理。
- 讨论区(Discussions):用于非代码相关的广泛讨论。
- Wiki:为仓库添加文档,方便团队协作。
进阶技巧
- 分支(Branch):在不影响主线代码的情况下开发新功能,使用
git checkout -b <branch-name>
创建。 - 合并(Merge):将分支代码合并到主线,可通过网页界面或
git merge
命令。 - 持续集成/持续部署(CI/CD):自动化构建、测试和部署流程,提高开发效率。
- README:仓库的首页说明文件,用Markdown编写,展示项目介绍、安装指南等。
相关文章:

简洁明快git入门及github实践教程
简洁明快git入门及github快速入门实践教程 前言git知识概要:一:什么是 Git?二:安装 Git三:配置 Git配置git的用户名和邮箱地址创建仓库 四:Git实践五:远程仓库操作(基于git命令使用G…...

Python使用socket实现简易的http服务
在接触的一些项目中,有时为了方便可视化一些服务状态(请求数很少),那么很容易想到使用http服务来实现。但开源的web后端框架,例如flask,fastapi,django等略显沉重,且使用这些框架会有…...

【Hive】海量数据存储利器之Hive库原理初探
文章目录 一、背景二、数据仓库2.1 数据仓库概念2.2 数据仓库分层架构2.2.1 数仓分层思想和标准2.2.2 阿里巴巴数仓3层架构2.2.3 ETL和ELT2.2.4 为什么要分层 2.3 数据仓库特征2.3.1 面向主题性2.3.2 集成性2.3.3 非易失性2.3.4 时变性 三、hive库3.1 hive概述3.2 hive架构3.2.…...

linux系统监视(centos 7)
一.系统监视 1.安装iostat,sar,sysstat(默认没有,安装过可以跳跃) iostat 和 sar: 同样,iostat 和 sar 是 sysstat 软件包的一部分。使用以下命令安装:sudo yum install sysstat解释…...

Blazor中Syncfusion图像编辑器组件使用方法
Blazor中Syncfusion图像编辑器组件是一个功能丰富的图像处理工具,支持多种编辑、操作和交互方式,帮助用户高效处理图像。以下是该组件的主要功能总结: 主要功能: 图像打开与保存 图像编辑器允许用户通过简单的点击操作打开支持的…...

电动汽车V2G技术Matlab/Simulink仿真模型
今天给大家更新关于V2G技术的仿真,不是研究这个方向的,可能会对这个名称比较陌生,那么,什么是“V2G”? V2G全称:Vehicle-to-Grid,即车网互动,利用电动汽车特有的储能功能与电网“双…...

C++中的unordered_set和unordered_map的模拟实现
一、封装基本结构 与map和set的封装过程很想,unordered_set和unordered_map也需要用MapKeyOfT和SetKeyOfT创建哈希表类型,借此获取对应的key值来使用; 因此,在哈希表中也一样需要用参数class T来替代set中的key和map中的pair<…...

Spring Boot 2 学习指南与资料分享
Spring Boot 2 学习资料 Spring Boot 2 学习资料 Spring Boot 2 学习资料 在当今竞争激烈的 Java 后端开发领域,Spring Boot 2 凭借其卓越的特性,为开发者们开辟了一条高效、便捷的开发之路。如果你渴望深入学习 Spring Boot 2,以下这份精心…...

(一)QSQLite3库简介
1、SQLite数据库 SQLite数据库,作为一个轻量级的关系型数据库管理系统,广泛应用于移动设备和桌面应用程序中。由于其简单易用、无需配置的特点,它为开发者提供了极大的便利。然而,正是由于其应用广泛,随着用户对于系统…...

《计算机网络》课后探研题书面报告_网际校验和算法
网际校验和算法 摘 要 本文旨在研究和实现网际校验和(Internet Checksum)算法。通过阅读《RFC 1071》文档理解该算法的工作原理,并使用编程语言实现网际校验和的计算过程。本项目将对不同类型的网络报文(包括ICMP、TCP、UDP等&a…...

hot100_240. 搜索二维矩阵 II
hot100_240. 搜索二维矩阵 II 直接遍历列减行增 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,1…...

78_Redis网络模型
1.Redis网络模型概述 1.1 Redis网络模型介绍 Redis 7.x的网络模型基于epoll的Reactor模式实现,这是一个高效的事件驱动模型。在Redis中,所有的网络事件(如连接、读写等)都由一个事件循环(Event Loop)来处理。这个事件循环负责监听套接字上的事件,并根据事件类型调用相…...

python范围
用户图形界面-工资计算器 from tkinter import *def f():w int(e1.get()) int(e2.get()) - int(e3.get())wage.insert(0,w)root Tk() root.title("工资计算器") Label(root, text"每月基本工资:").pack() e1 Entry(root) e1.pack() Label(…...

vulnhub靶场【Raven系列】之2 ,对于mysql udf提权的复习
前言 靶机:Raven-2,IP地址为192.168.10.9 攻击:kali,IP地址为192.168.10.2 都采用虚拟机,网卡为桥接模式 文章所用靶机来自vulnhub,可通过官网下载,或者通过链接:https://pan.quark.cn/s/a65…...

基于vite+vue3+mapbox-gl从零搭建一个项目
下面是基于 Vite、Vue 3 和 Mapbox GL 从零搭建一个项目的完整步骤,包括环境搭建、依赖安装、配置和代码示例。 1. 初始化项目 首先,使用 Vite 快速创建一个 Vue 3 项目: npm create vuelatest vue3-mapboxgl --template vue cd vue3-mapbo…...

向harbor中上传镜像(向harbor上传image)
向 Harbor 中上传镜像通常分为以下几个步骤: 1、登录 Harbor 2、构建镜像 3、标记镜像 4、推送镜像到 Harbor 仓库 1、登录 Harbor 首先,确保你已经能够访问 Harbor,并且已经注册了账户。如果还没有 Harbor 账户,你需要先注册一…...

【线性代数】行列式的性质
行列式性质定理讲义 一、行列式的基本性质 性质 1:行列互换 对于任意一个 n n n \times n nn 的方阵 A A A,其行列式 ∣ A ∣ |A| ∣A∣ 满足: ∣ A ∣ ∣ A T ∣ |A| |A^T| ∣A∣∣AT∣ 其中, A T A^T AT 是 A A A 的…...

智能家居企业如何通过设计师渠道打造第二曲线?
随着智能家居行业的迅速发展和消费者需求的不断升级,企业的营销策略也在不断变化。传统的B2C营销模式逐渐让位于更加精细化、定制化的B2B2C模式,其中设计师渠道的开发与合作,成为智能家居企业布局市场、提升品牌影响力的关键。 智能家居推广的…...

Unity3d 实时天气系统基于UniStorm插件和xx天气API实现(含源码)
前言 实时天气在Unity3d三维数字沙盘中的作用非常重要,它能够增强虚拟环境的真实感和互动性,实时天气数据的应用可以提供更为精准和直观的天气信息支持,如果真实的数据加上特效、声音和模型反馈会提高产品档次,提高真实感。 目前…...

年后找工作需要注意的事项
大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...

模拟器多开窗口单IP与代理IP关系
模拟器多开窗口同IP背后出现的问题 在游戏世界中,模拟器多开窗口是玩家们提升体验的常见做法。通过在同一设备上开启多个模拟器窗口,玩家可以同时运营多个游戏账号,增加游戏的趣味性和效率。 一旦检测到一个IP地址下登录了过多的账号&#x…...

Android ScrollView嵌套X5WebView大片空白问题
scrollview嵌套后webview的高度不可控。留有大片空白。 注:官方不建议scrollview嵌套webview 最好让webview自身滚动 解决方案: act_news_detail_wv.setWebViewClient(new WebViewClient() {Overridepublic void onPageFinished(WebView webView, Str…...

Java Web开发进阶——WebSocket与实时通信
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,广泛应用于需要实时数据交换的应用程序中。它能够实现服务器与客户端之间的双向通信,避免了传统 HTTP 请求/响应的延迟。结合 Spring Boot,开发实时通信应用变得更加高效与简便。 1. …...

zerotier搭建虚拟局域网,自建planet
基于该开源项目 自建planet节点,更快速,更安全 本教程依据docker-zerotier-planet 项目文档书写,并以linux(centos 7)和windows作为示例,需要其他系统配置方法,可移步项目文档 一. 前置资源 具有外网ip的服务器 后面…...

SQL面试题1:连续登陆问题
引言 场景介绍: 许多互联网平台为了提高用户的参与度和忠诚度,会推出各种连续登录奖励机制。例如,游戏平台会给连续登录的玩家发放游戏道具、金币等奖励;学习类 APP 会为连续登录学习的用户提供积分,积分可兑换课程或…...

2Spark Core
2Spark Core 1.RDD 详解1) 为什么要有 RDD?2) RDD 是什么?3) RDD 主要属性 2.RDD-API1) RDD 的创建方式2) RDD 的算子分类3) Transformation 转换算子4) Action 动作算子 3. RDD 的持久化/缓存4. RDD 容错机制 Checkpoint5. RDD 依赖关系1) 宽窄依赖2) 为什么要设计宽窄依赖 …...

linux之进程信号(初识信号,信号的产生)
目录 引入一、初识信号(信号预备知识)1.生活中的信号2.Linux中的信号3.信号进程得出的初步结论 二、信号的产生1.通过终端输入产生信号拓展: 硬件中断2.调用系统函数向进程发信号3.硬件异常产生信号4.软件条件产生信号拓展: 核心转储技术总结一下: 引入 一、初识信…...

基于nginx实现正向代理(linux版本)
介绍 在企业开发环境中,局域网内的设备通常需要通过正向代理服务器访问互联网。正向代理服务器充当中介,帮助客户端请求外部资源并返回结果。局域网内也就是俗称的内网,局域网外的互联网就是外网,在一些特殊场景内,例…...

【蓝牙】win11 笔记本电脑连接 hc-06
文章目录 前言步骤 前言 使用电脑通过蓝牙添加串口 步骤 设置 -> 蓝牙和其他设备 点击 显示更多设备 更多蓝牙设置 COM 端口 -> 添加 有可能出现卡顿,等待一会 传出 -> 浏览 点击添加 hc-06,如果没有则点击 再次搜索 确定 添加成…...

小程序组件 —— 31 事件系统 - 事件绑定和事件对象
小程序中绑定事件和网页开发中绑定事件几乎一致,只不过在小程序不能通过 on 的方式绑定事件,也没有 click 等事件,小程序中绑定事件使用 bind 方法,click 事件也需要使用 tap 事件来进行代替,绑定事件的方式有两种&…...