当前位置: 首页 > java >正文

Git的初步学习

一.git的认识

概念:代码版本控制系统,帮助团队维护代码
git仓库:记录文件状态内容和历史记录的地方(.git文件夹)
创建git仓库:
1.把本地文件夹转换成Git仓库:git init
2.从其他服务器上克隆git仓库

二.git的区域

工作区:实际开发时操作的文件夹
暂存区:保存之前的准备区域(暂存改进过的文件)
版本库:提交并保存暂存区中的内容,产生一个版本快照
暂存指定文件:git add 文件名
暂存所有改动的文件:git add .
提交并保存,产生版本快照:git commit -m ‘‘注释说明’’

三.git文件状态

分为两种:已跟踪和未跟踪(新添加,未修改,已修改)
未跟踪U:新文件:从未被Git管理过
已跟踪:Git已经知道和管理的文件
新添加A:第一次被Git暂存,之前把版本记录无此文件
未修改 ‘’ 三个区域统一(提交保存后)
已修改M:工作区内容变化(修改了内容产生)

git文件的使用:修改文件,暂存,提交保存记录,如此反复

** 查看暂存区:git status -s**

四.git暂存区使用

暂存区:暂时存储,可以临时恢复代码内容,与版本库解耦
暂存区->覆盖->工作区 :git restore 目标文件(完全确认覆盖时使用)
从暂存区移除文件:git rm --cached 目标文件
查看历史提交暂存记录:git log --oneline

五.Git回退版本

把版本库某个版本对应的内容快照,恢复到工作区/暂存区
回退:**git reset --soft 版本号 **
git reset --hard 版本号
git reset --mixed 版本号

三种常用模式及区别

选项作用说明适用场景
--soft仅移动 HEAD 指针到目标版本,暂存区和工作区不变想“撤销”最近几次提交,保留修改内容以便重新提交(比如合并多个提交)
--mixed移动 HEAD 指针,重置暂存区(与目标版本一致),工作区不变(默认)想撤销 git add 的暂存操作,或回退版本但保留工作区修改
--hard移动 HEAD 指针,重置暂存区和工作区(与目标版本完全一致)彻底丢弃目标版本后的所有修改(包括工作区),回到历史某个干净版本

典型使用场景

1. 撤销最后一次提交(保留修改)

如果刚 git commit 后发现提交有误,想撤销提交但保留修改内容:

# 回退到上一次提交(HEAD~1 表示上一个版本,~2 表示上两个,以此类推)
git reset --soft HEAD~1
  • 效果:最后一次提交被“删除”,但修改内容仍在暂存区(可直接 git commit 重新提交)。
2. 撤销暂存区的修改(保留工作区)

如果执行 git add 后想取消暂存(比如误加了文件):

# 重置暂存区(默认 --mixed,可省略)
git reset HEAD <文件名># 示例:取消暂存 dingdan.html
git reset HEAD git-demo/ddd/dingdan.html
  • 效果:文件从暂存区回到工作区,修改被保留,可重新编辑后再 git add
3. 彻底回退到历史版本(丢弃所有后续修改)

如果想彻底删除某个版本后的所有提交和修改(谨慎使用!会丢失数据):

# 1. 先查看历史提交,找到目标版本的 ID(如 a1b2c3d)
git log# 2. 回退到该版本(--hard 会清空工作区和暂存区的修改)
git reset --hard a1b2c3d
  • 警告:--hard 会永久删除目标版本后的所有修改,无法恢复,确保不需要这些修改再执行。

六.删除文件

在 Git 中删除文件需要同时处理本地文件Git 版本跟踪

  1. 确认文件是否被 Git 跟踪(用 git status 查看)
  2. 被跟踪:用 git rm(彻底删除)或 git rm --cached(保留本地)
  3. 未跟踪:直接用系统 del/rm 命令删除
  4. 误删恢复:根据是否提交,用 git restoregit reset 操作

七.忽略文件

.gitignore 文件可以让git彻底忽略跟踪指定文件
目的:让git仓库更小更快,避免重复无意义的文件管理
创建:项目根目录新建.gitignore文件
2.填入相应配置来忽略指定文件
注:如果文件已经被暂存区跟踪过,可以从暂存区移除即可

八.分支

开发新需求/修复Bug,保证主线代码随时可用,多人协同开发提高效率
创建分支:git branch 分支名
切换分支:git checkout 分支名

例:把bug合并回到main分支并删除bug分支
切回到要合入的分支上:git checkout main
合并其它分支过来:git merge bug
删除合并后的分支指针:git branch -d bug

合并提交:发生于原分支产生了新的提交记录后,再合并回去时发生,自动使用多个快照记录合并后产生一次新的提交
合并冲突:在合并两个分支时,发现同一个文件的同一部分被修改得不一样,无法自动判断该保留哪一个,于是 “卡住” 并提示你手动解决的情况

九.gitee的使用

在这里插入图片描述

Git 全局设置部分

  • git config --global user.name "Young"
    作用:设置 Git 的全局用户名,这里将用户名设为 “Young” 。--global 表示全局配置,即对当前用户的所有 Git 仓库都生效,提交代码时,该用户名会作为提交者信息记录下来。
  • git config --global user.email "2137353033@qq.com"
    作用:设置 Git 的全局用户邮箱,提交代码时,该邮箱会和用户名一起作为提交者身份信息,用于标识是谁提交了代码,同样受 --global 影响,对当前用户所有仓库有效。

创建 git 仓库部分

  • mkdir gitstudy
    作用:在当前命令行所在目录下,创建一个名为 gitstudy 的新目录(文件夹 ),作为后续存放 Git 仓库相关文件的地方。
  • cd gitstudy
    作用:切换当前工作目录到刚创建的 gitstudy 目录,后续 Git 操作就会在这个目录对应的仓库里进行。
  • git init
    作用:初始化一个空的 Git 仓库,执行后,当前目录会生成一个隐藏的 .git 文件夹,用于存储 Git 仓库的版本控制信息(如提交记录、分支信息等 ),从此该目录就可以用 Git 进行代码版本管理了。
  • touch README.md
    作用:在 gitstudy 目录下,创建一个名为 README.md 的空文件,通常用于存放项目的说明文档(很多开源项目用它介绍项目功能、使用方法等 )。
  • git add README.md
    作用:将 README.md 文件添加到 Git 的暂存区。暂存区是 Git 用于临时存放待提交文件改动的地方,只有放到暂存区的文件,后续才能被提交到本地仓库。
  • git commit -m "first commit"
    作用:把暂存区的文件改动(这里就是 README.md 的添加 )提交到本地 Git 仓库,生成一个新的提交记录。-m 后面跟的是提交说明,用于描述这次提交做了什么,方便后续查看提交历史时理解改动意图,这里说明是 “first commit”(第一次提交 )。
  • git remote add origin https://gitee.com/Youngmmm/gitstudy.git
    作用:为本地 Git 仓库添加一个远程仓库地址,命名为 origin ,后续可以通过 origin 这个名称来关联和操作远程仓库(这里远程仓库是 Gitee 上的 gitstudy 仓库 )。
  • git push -u origin "master"
    作用:将本地仓库 master 分支(旧版 Git 默认主分支名,新版可能是 main )的提交记录推送到远程仓库(即前面添加的 origin 对应的 Gitee 仓库 )。-u 选项会建立本地分支和远程分支的关联,后续再推送或拉取时,就可以直接用 git pushgit pull ,不用每次指定远程和分支。

已有仓库部分

  • cd existing_git_repo
    作用:切换到已有的 Git 仓库所在的目录(existing_git_repo 是示例目录名,实际替换成真实仓库目录 ),准备进行远程仓库关联和推送操作。
  • git remote add origin https://gitee.com/Youngmmm/gitstudy.git
    作用:和前面创建仓库时的该命令作用一样,给已有的本地 Git 仓库添加远程仓库地址 origin ,关联到 Gitee 上的 gitstudy 仓库。
  • git push -u origin "master"
    作用:把已有本地仓库 master 分支的提交推送到远程仓库,并建立本地分支与远程分支的关联,后续方便推送和拉取。

这些命令整体是从配置 Git 全局信息,到本地创建仓库、做首次提交,再关联远程仓库并推送代码的完整流程,常用在将本地项目托管到远程代码平台(如 Gitee、GitHub 等 )的场景中。

Git远程仓库克隆

克隆:拷贝一个Git仓库到本地进行使用
命令:git clone 远程仓库地址
效果:在运行命令所在文件夹生成work项目文件夹(包含版本库,并映射到暂存区和工作区)
注意:Git本地仓库已经建立好和远程仓库的链接,仓库公开随意克隆,推送需要身为团队成员

http://www.xdnf.cn/news/18243.html

相关文章:

  • 【力扣 Hot100】 刷题日记——双指针的经典应用
  • RabbitMQ:SpringAMQP Fanout Exchange(扇型交换机)
  • Java技术总监的成长之路(技术干货分享)
  • 驱动开发系列65 - NVIDIA 开源GPU驱动open-gpu-kernel-modules 目录结构
  • 【PyTorch】多对象分割项目
  • Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
  • 云计算核心技术之云存储技术
  • oc-mirror plugin v2 错误could not establish the destination for the release i
  • Windows Server DNS优化,网络响应速度提升方案
  • C#传参调用外部exe
  • 【科研绘图系列】R语言绘制多组火山图
  • pytest+requests+allure自动化测试接入Jenkins学习
  • Apache IoTDB 大版本升级记录(成熟的2.0.2版本)
  • 机械原理的齿轮怎么学?
  • 从零开始理解一个复杂的 C++/CUDA 项目 Makefile
  • Chrome插件开发【windows】
  • MyCAT2的主从配置
  • 数据仓库OLTPOLAP维度讲解
  • Spring Cache 整合 Redis 实现高效缓存
  • 数字政务安全实战:等保2.0下OA系统的身份认证与数据防护
  • Mentalab Hypersync高精度无线同步系统:以亚毫秒级助力ExG多模态数据整合
  • 清空 github 仓库的历史提交记录(创建新分支)
  • django生成迁移文件,执行生成到数据库
  • STM32-FreeRTOS快速入门指南(中)
  • 8.19笔记
  • 自建知识库,向量数据库 (十)之 文本向量化——仙盟创梦IDE
  • 在CentOS系统中查询已删除但仍占用磁盘空间的文件
  • 仲裁器设计(三)-- Weighted Round Robin 权重轮询调度
  • 海滨浴场应急广播:守护碧海蓝天的安全防线
  • 私有化部署全攻略:开源大模型本地化改造的性能与安全深度评测