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

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.dtcms.com/a/338670.html

相关文章:

  • GStreamer无线图传:树莓派到计算机的WiFi图传方案
  • 反向代理实现服务器联网
  • RNN(循环神经网络)和Transformer是处理自然语言处理(NLP)任务区别
  • 【深度学习新浪潮】如何利用多模态大模型优化结构力学性能?
  • 「内力探查术」:用 Instruments 勘破 SwiftUI 卡顿迷局
  • 开源 C++ QT Widget 开发(一)工程文件结构
  • linux系统装google chrome,amd64
  • Qt——文件操作
  • Vercel v0 iOS版重磅发布:AI驱动的移动开发新篇章
  • SWMM排水管网水力、水质建模及在海绵与水环境中的应用
  • 纯Qt结合ffmpeg实现本地摄像头采集/桌面采集/应用程序窗口采集/指定采集帧率和分辨率等
  • 数据仓库OLTPOLAP维度讲解
  • Qt事件处理机制详解
  • [激光原理与应用-308]:光学设计 - 266皮秒深紫外激光器设计图纸示例解析(基于工程实现与专利技术)
  • 《C++进阶之STL》【二叉搜索树】
  • 11.Ansible自动化之-内容集管理
  • 云原生俱乐部-shell知识点归纳(1)
  • MFC,C++,海康SDK,回调,轮询
  • 借助AI将infoNES移植到HarmonyOS平台的详细方案介绍
  • “道法术器” 思维:解析华为数字化转型
  • Springboot使用Selenium+ChormeDriver在服务器(Linux)端将网页保存为图片或PDF
  • 如何在未来进一步推动NLP技术的发展?
  • Java高级面试实战:Spring Boot微服务与Redis缓存整合案例解析
  • 【牛客刷题】岛屿数量问题:BFS与DFS解法深度解析
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第二十六讲)
  • 控制对文件的访问:Linux 文件系统权限管理总结
  • 基于VLM 的机器人操作视觉-语言-动作模型:综述 2
  • JavaSSM框架从入门到精通!第二天(MyBatis(一))!
  • 走进数字时代,融入数字生活,构建数字生态
  • 可以一键生成PPT的AI PPT工具(最新整理)