Git入门学习笔记(10分钟速通)

news2024/11/15 21:01:33

一、Git概述

官网翻译:

Git 是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型项目到大型项目的所有内容。

Git易于学习, 体积小,性能快如闪电。它超越了 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具,具有廉价的本地分支、方便的临时区域和 多个工作流等特性。

二、Git安装

git官网:Git

基本一直下一步即可安装完成,具体安装过程网上有很多优秀教程,这里略了。。。

三、Git创建本地仓库

3.1、设置用户签名

  • 设置用户名
git config --global user.name "xxx"
  • 设置邮箱
git config --global user.email "xxx@xx.com"

ps:设置用户名和邮箱只是区分不同开发者身份,与你要登录GitHub等平台账号没有关系。Git首次安转后必选设置用户签名。

3.2、初始化本地库

  • init 命令
# git init 初始化仓库命令
zlp@zlpdeMacBook-Pro git_study % git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint:     git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint:     git branch -m <name>
Initialized empty Git repository in /Users/zlp/study/git_study/.git/

3.3、查看本地库状态

  • status 命令
# git status 
zlp@zlpdeMacBook-Pro git_study % git status 
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

在本地库新建一个文件,再次用命令查看状态:

zlp@zlpdeMacBook-Pro git_study % git status 
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)
zlp@zlpdeMacBook-Pro git_study % vim demo 
zlp@zlpdeMacBook-Pro git_study % cat demo 
hello git
zlp@zlpdeMacBook-Pro git_study % git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    demo

nothing added to commit but untracked files present (use "git add" to track)

通过输出信息,可以看出git发现一个没有被追踪到的文件demo,可以使用git add命令进行追踪。

3.4、添加暂存区

  • add 命令
zlp@zlpdeMacBook-Pro git_study % git add demo 

再次查看本地库状态:

zlp@zlpdeMacBook-Pro git_study % git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
    new file:   demo

到这里,文件已经添加到暂存区了,在暂存区里的文件是可以删除的。

文件ps:删除暂存区的文件并不是删除本地文件,只是在暂存区没有了,在本地还是存在的。

  • rm 删除命令
zlp@zlpdeMacBook-Pro git_study % git rm -rf --cached demo 

删除后再次查看状态:

zlp@zlpdeMacBook-Pro git_study % git status              
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    demo

nothing added to commit but untracked files present (use "git add" to track)

但是文件在本地还是存在的:

zlp@zlpdeMacBook-Pro git_study % ls
demo

3.5、提交到本地仓库

  • commit 命令
# version 1.0 是你提交时填写的日志
zlp@zlpdeMacBook-Pro git_study % git commit -m "version 1.0" demo 
[master (root-commit) 6d0fab4] version 1.0
 1 file changed, 1 insertion(+)
 create mode 100644 demo

查看状态:

zlp@zlpdeMacBook-Pro git_study % git status
On branch master
nothing to commit, working tree clean

3.6、修改文件

修改文件后,查看状态:

zlp@zlpdeMacBook-Pro git_study % git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   demo

no changes added to commit (use "git add" and/or "git commit -a")

git add 命令提交到暂存区

git commit 命令提交到本地库

zlp@zlpdeMacBook-Pro git_study % git add demo 
zlp@zlpdeMacBook-Pro git_study % git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    modified:   demo

zlp@zlpdeMacBook-Pro git_study % git commit -m "version 2.1" demo 
[master 57437fb] version 2.1
 1 file changed, 1 insertion(+), 1 deletion(-)
zlp@zlpdeMacBook-Pro git_study % git status                      
On branch master
nothing to commit, working tree clean

在修改文件后查看状态有一段输出信息:

no changes added to commit (use "git add" and/or "git commit -a")

意思是需要我们添加到使用add命令暂存区,或者使用 git commit -a 命令直接提交到本地仓库,经过测试,修改完文件后,直接用 git commit -m "xxx" xxx 命令也可以提交成功。

3.7、查看版本信息

  • reflog 命令

查看简洁版本信息:

# zlp@zlpdeMacBook-Pro git_study % git reflog
f4e981d (HEAD -> master) HEAD@{0}: commit: version 2.2
57437fb HEAD@{1}: commit: version 2.1
975154d HEAD@{2}: commit: version 2.0
6d0fab4 HEAD@{3}: commit (initial): version 1.0
  • log 命令

查看详细版本信息:

zlp@zlpdeMacBook-Pro git_study % git log
commit f4e981dbd5ade88ebdad78322ed00f7ff64f8fbb (HEAD -> master)
Author: zhaolaipeng <zhaolaipeng@adnice.com>
Date:   Fri Jan 6 11:17:13 2023 +0800

    version 2.2

commit 57437fb4cb09211146891e8876233efdaee44a23
Author: zhaolaipeng <zhaolaipeng@adnice.com>
Date:   Fri Jan 6 11:13:41 2023 +0800

    version 2.1

commit 975154dbd3cb1921628e035960872ab28ffb13bd
Author: zhaolaipeng <zhaolaipeng@adnice.com>
Date:   Fri Jan 6 11:11:16 2023 +0800

    version 2.0

commit 6d0fab4a77113ffc8b874124beb469c71f13f285
Author: zhaolaipeng <zhaolaipeng@adnice.com>
Date:   Fri Jan 6 10:58:51 2023 +0800

    version 1.0
:
  • 更改版本

57437fb4cb09211146891e8876233efdaee44a23就是你要更新的版本号

zlp@zlpdeMacBook-Pro git_study % git reset --hard 57437fb4cb09211146891e8876233efdaee44a23
HEAD is now at 57437fb version 2.1

四、GIt远程仓库

4.1、分支命令

  • git branch -v 查看分支
zlp@zlpdeMacBook-Pro git_study % git branch -v
* master 57437fb version 2.1
  • git branch xxx 新建分支
zlp@zlpdeMacBook-Pro git_study % git branch branch1
  • git checkout xxx 切换分支
zlp@zlpdeMacBook-Pro git_study % git checkout branch1
Switched to branch 'branch1'

修改文件,提交缓存区,提交本地仓库。

此时切换到master分支,会发现文件并没有被修改。

  • merge 合并分支
zlp@zlpdeMacBook-Pro git_study % git merge branch1
Updating 57437fb..3b8a50c
Fast-forward
 demo | 1 +
 1 file changed, 1 insertion(+)

branch1分支代码已经合并到master分支上了

4.2、创建并推送远程仓库

这里采用Gitee作为远程仓库测试。

开始之前先在gitee上面进行ssh免密认证,采用https也可以不过每次都要用户登录。

  • 执行命令生成密钥
ssh-keygen -t rsa -C "邮箱"

一直按回车确认即可,根据保存的文件夹路径可以看到名为 .ssh 的文件夹,里面有id_rsa、id_rsa.pub ,即是私钥、公钥。

  • 在Gitee设置里面添加公钥

 

  • 至此ssh认证完成,开始创建gitee仓库

  • 创建仓库后我们可以看到有个https链接,还有个ssh链接。我们就可以直接用ssh链接,复制出来,如果每次都用链接操作,非常不方便,这是我们便可以给链接起个别名。
# "origin":就是你的别名名称 
# "git@gitee.com:xxx/git_study.git":是你的ssh链接
git remote add origin git@gitee.com:xxx/git_study.git
# 查看别名
git remote -v
# 输出别名信息
origin    git@gitee.com:xxx/git_study.git (fetch)
origin    git@gitee.com:xxx/git_study.git (push)
  • 本地库代码推送到远程库
 # git push 别名 分支
 # ps: 没有别名直接填链接也是可以的,提交时注意分支
 git push origin master
 # 输出:
 Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (12/12), 894 bytes | 894.00 KiB/s, done.
Total 12 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:xxx/git_study.git
 * [new branch]      master -> master

 这时Gitee新建仓库里面有了我们本地库的代码。

  • 拉取远程仓库代码

我们可以在远程仓库编辑信息,然后通过本地拉取代码进行测试。

 执行命令:

# git pull 别名 分支
# ps:类似push 没有别名用链接也可以
git pull origin master

查看本地文件,会发现和远程仓库一样了。

  • 克隆代码

首次从远程仓库获取代码是执行命令

git clone 链接

五、IDEA集成GIt

5.1、环境配置

在实际开发中,每个人本地都有一些自己的配置文件,像idea、git等,而这些配置文件与工作代码没有关系,如果提交的时候带上这些文件,那其他人在拉取时就会出现代码冲突,为了避免这种情况,引入了 .gitignore 文件。

通常这个文件放在项目根目录即可,文件里面就配置了不需要上传的文件,这时在push的时候git就会自动过滤掉后缀名为.xxx 或某文件夹。例如:

*.log
*.temp
*.iml
/target
target/
*.csv
*.xls
*.xlsx
/\.idea
\.idea/
*.settings
*.classpath
*.project
/logs
*.idea

在IDEA中还需要设置你的Git安装位置,如下图通过测试显示出你的Git版本即可成功。

5.2、提交、拉取、推送

  • commit

IDEA打开我们从远程仓库拉取的代码,新建一个文件,新建文件会提示我们是否添加到git,点add:

 可以对文件单独提交,或者全部提交:

点击commit进行提交。

  • push

这时gitee仓库就有了我们添加的文件: 

  • pull

这个过程可能会出现的问题:

2:57 下午    Can't update
        master has no tracked branch
        Choose upstream branch (show balloon)

意思是:本地分支没有和远程分支关联

按过程操作即可:

5.3、版本管理

需要切换哪个版本选中点击checkout

5.4、分支 

新建分支:

切换分支:

 合并分支:

需要先切换要合并到的分支,比如master分支,选中被合并的分支也就是刚刚创建的分支。

5.5、代码冲突 

在分支代码添加信息并提交:

切换到master分支,在同一个文件夹添加信息并提交:

 这时合并分支就会出现冲突:

 至此代码冲突解决。

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

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

相关文章

13_2、Java的IO流概述

一、Java IO原理1、I/O是Input/Output的缩写&#xff0c; I/O技术是非常实用的技术&#xff0c;用于处理设备之间的数据传输。如读/写文件&#xff0c;网络通讯等。2、Java程序中&#xff0c;对于数据的输入/输出操作以“流(stream)” 的方式进行。3、java.io包下提供了各种“流…

kaggle平台学习复习笔记 | XGBoost、LightGBM and Catboost

这里写目录1.XGBoost官方文档介绍与使用2.LightGBM官方文档介绍与使用3.CatBoost官方文档介绍与使用对比数据预处理如下&#xff0c;下文不再重复 import lightgbm as lgb import xgboost as xgb from catboost import CatBoostRegressorfrom sklearn.model_selection import …

C#入门级——泛型、泛型类、泛型接口、泛型方法和泛型委托

目录 一、泛型&#xff08;generic&#xff09; 二、为什么需要泛型类 类型膨胀 成员膨胀 使用object类 三、泛型的定义 定义泛型类 使用泛型类 泛型接口​​​​​​​ 两种泛型接口的实现方法 泛型方法 成员膨胀 使用泛型 泛型委托 Action委托——只能引用没有…

有效的需求管理,需遵循四大原则。

1、需求管理必须与需求工程活动相整合 需求管理必须与需求工程的其他活动紧密整合&#xff0c;进行需求管理一定不能脱离需求工程&#xff0c;需求工程包括了需求获取、需求分析、需求描述、需求验证、需求管理&#xff0c;因而需求管理必须与前面的几个需求阶段保持密切相关。…

2023/1/9 Vue学习笔记-5-TodoList案例

1 静态组件 App.vue <template><div class"todo-container"><div class"todo-wrap"><UserHeader/><UserList/><UserFooter/></div></div> </template> <script>import UserHeader from &qu…

【计组】FPGA和ASIC--《深入浅出计算机组成原理》(七)

课程链接&#xff1a;深入浅出计算机组成原理_组成原理_计算机基础-极客时间 目录 一、FPGA &#xff08;一&#xff09;FPGA 的解决方案步骤 1、用存储换功能实现组合逻辑 2、对于需要实现的时序逻辑电路&#xff0c;在 FPGA 里面直接放上 D 触发器&#xff0c;作为寄存…

工业清洗企业资质证书

工业清洗在美国、日本、新加坡、西欧等国发展较早&#xff0c;已经建立起专业化程度很高的化学清洗体系。我国的工业清洗发展很快&#xff0c;目前已经初步形成了新兴的清洗产业网络&#xff0c;清洗技术也已达到国际先进水平&#xff0c;具备了清洗大型设备的能力和经验。 工业…

CANoe-诊断控制台实现同一个目标ECU的物理寻址和功能寻址

接触过UDS诊断的人应该知道,诊断通信有两种方式:物理寻址和功能寻址。那什么是物理寻址和功能寻址呢? 简单点说,物理寻址是单播,功能寻址是多播。具体来说,由于UDS诊断通信的C/S模式(客户端Tester/服务器ECU),物理寻址是Tester发送的诊断请求,只有一个目标ECU回复诊…

MySQL模块

目录 1.在项目中操作数据库的步骤 2.安装与配置 mysql 模块 1.安装模块 2.配置mysql模块 3.测试模块是否正常工作 3.使用 mysql 模块操作 MySQL 数据库 查询数据&#xff1a; 插入数据&#xff1a; 快捷插入数据&#xff1a; 更新数据&#xff1a; 快捷更新数据&am…

node.js(3)--线程和进程、node简介

目录 进程和线程 Node.js 简介 历史 进程和线程 进程 负责为程序的运行提供必备的环境就相当于工厂中的车间&#xff08;专门存放代码的地方&#xff09; 线程 计算机中最小的计算单位&#xff0c;线程负责进程中的程序就相当于工厂中的工人 单线程 JS是单线程 多线程 …

ansible (第三天)

2.6 lineinfile模块 lineinfile模块&#xff0c;确保"某一行文本"存在于指定的文件中&#xff0c;或者确保从文件中删除指定的"文本"&#xff08;即确保指 定的文本不存在于文件中&#xff09;&#xff0c;还可以根据正则表达式&#xff0c;替换"某一…

测牛学堂:软件测试python基础学习之数据类型详解(一)

python数据类型详解 为什么需要数据类型呢&#xff1f; 我们人脑可以轻松的区别不同类型的数据&#xff0c;比如看到1你就知道是数字&#xff0c;但是计算机做不到。 计算机工作的过程就是完成不同的类型的计算&#xff0c;例如做数学运算&#xff0c;做文件存储&#xff0c;逻…

【技术分享】Windows平台低延迟RTMP、RTSP播放器接口设计探讨

背景我们看过了太多介绍RTSP、RTMP播放相关的技术资料&#xff0c;大多接口设计简约&#xff0c;延迟和扩展能力也受到一定的局限&#xff0c;好多开发者希望我们能从接口设计的角度&#xff0c;大概介绍下大牛直播SDK关于RTMP、RTSP播放器开发设计&#xff0c;本文以Windows平…

redis 运维讲解02

一、数据持久化 1、为什么要持久化 redis 重启后&#xff0c;redis 存在内存数据中数据丢失&#xff0c;不管之前是多少G数据&#xff0c;秒丢&#xff0c;而且无法恢复&#xff0c;数据在内存中 [root86-5-master ~]# redis-cli -p 6379 127.0.0.1:6379> MSET k1 v1 k2…

浏览器相关知识

本文主要进行浏览器相关知识的整理总结。 一、浏览器的存储 浏览器的存储包括cookie&#xff0c;session&#xff0c;LocalStorage&#xff0c;sessionStorage&#xff0c;indexedDB。 作用cookiesessionsessionStorageLocalStorageindexedDB储存时间设置或不设置默认30分钟仅…

就只有这么简单?全自动加药装置远程维护解决方案

一、行业背景说起工业生产&#xff0c;给人们的普遍印象都是浓烟&#xff0c;废水&#xff0c;环境污染。尤其是石油、化工、发电厂等一些具有大型设备的地方&#xff0c;确实常常都会有浓烟和污水产出&#xff0c;让人看了恨不得离得越远越好&#xff01;但是随着现代科技的发…

java和vue开发的电子书系统自动检测敏感词小说网站

简介 电子书系统&#xff0c;注册用户上传txt&#xff0c;系统自动检测敏感词汇并且自动生成章节。管理员审核电子书&#xff0c;管理电子书分类和用户&#xff0c;评论等。注册用户可以搜索浏览电子书&#xff0c;在线阅读和下载电子书。 演示视频&#xff1a;https://www.b…

Java设计模式-单例模式Singleton

介绍 所谓类的单例设计模式&#xff0c;就是采取一定的方法保证在整个的软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一个取得其对象实例的方法(静态方法)。 比如 Hibernate 的 SessionFactory&#xff0c;它充当数据存储源的代理&#xff0…

系分 - 案例分析 - 系统规划

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录系分 - 案例分析 - 系统规划典型例题 1题目描述参考答案典型例题 2题目描述参考答案典型例题 3题目描述参考答案系分 - 案例分析 - 系统规划 典型例题 1 题目描述 某软件开发企业受对外贸易公司委托开发…

STM32F429连接USB飞行摇杆

本文介绍如何使用stm32连接usb接口的飞行摇杆。开发环境硬件: STM32F429IGT6开发板&#xff0c;USB接口的飞行摇杆。软件&#xff1a;STM32CubeIDE 1.11仿真器&#xff1a;stlink参考书&#xff1a;《圈圈教你玩USB》USB设备描述符一个USB设备只有一个设备描述符。USB主机通过不…