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

Linux -- git

1  啥是git

git是一个代码的历史版本管理工具,通过用树形结构管理一个代码版本可以快速实现回滚等操作

1.1  git基本概念

  • 工作区(Working Directory/Working Tree)

    • 这是你当前正在处理项目文件的地方。你可以在工作区中创建、修改、删除文件,这些改动是未被追踪或提交到版本控制系统中的。
  • 暂存区(Staging Area/Index)

    • 暂存区是一个临时区域,你可以将工作区中的改动放入这里,以便在提交之前进行整理和准备。可以理解为一个待提交的快照。当你运行 git add 命令时,文件的改动被添加到暂存区。
  • 版本库(Repository/Local Repository)

    • 版本库是项目的历史记录,包含了所有提交的历史快照。版本库存储在本地机器上,并且包含所有已提交的更改记录。你可以通过 git commit 命令将暂存区中的内容提交到版本库中,从而生成一个新的提交历史记录。

2  git常用命令

2.1  设置信息

git config --global user.name # 设置用户名
git config --global user.email # 设置全局邮箱

信息设置在了~/.gitconfig


2.2  将一个文件夹配置成仓库

git init

所有的信息放在了.git/隐藏文件夹中,此文件夹是一个树状结构

git status # 可查看仓库状态,看文件有无存进暂存区等
git add # 将文件加进暂存区
git add . # 全部加进去


2.3  将历史版本存进版本库里

 git commit -m 备注

        更新代码

git status
git add 更改文件名


此时在输入git status,当文件名变绿说明已经放进了暂存区,输入git commit -m则表明永久存下来,放入了新节点


        具体操作的结果如下图所示:


2.4   查看某个文件与当前分支最新的版本区别(暂存区里最新版本的区别)

git diff 文件名


2.5  从暂存区删除

git rm --cached xxx
git restore --stage

两者的区别在于,前者属于不希望管理该文件,将文件从列表中删除出来,后者输运仍管理文件,但从暂存区中取出


2.6  查看当前分支(从最初起点走到当前head的路径)的所有版本

git log 

        顺序从下向上显示,按q退出

--pretty=oneline

        实现一行显示

2.7  往前回滚某一个历史记录

git reset --hard HEAD^
git reset --head HEAD ~

 一个~一个版本,两个^^两个版本,~^相同
回滚并不会将内容删掉

        实现回退回来:

git reflog # 查看HEAD指针的所有的移动记录

在给出的移动记录中,会有每一个点的编号,即哈希值前7位

        回滚到任意结点

git reset --head 版本号

        重点:git loggit reflog的区别

git log从起点到当前head节点的路径
git refloghead的所有的移动历史节点

        恢复文件

主要的背景是:当前文件修改放在暂存区,但是想恢复到未修改前的状态
下面是将文件未存入暂存区的删除

git checkout - 文件名git restore 文件名

其中git restore并非回滚到上一个历史版本,而是从工作区回滚到暂存区版本
如果回滚到暂存区后,暂存区也不想留,可输入以下命令

git restore --stage 文件名

2.8   持久化

git commit -m # 将暂存区持久化

commit可以只一部分,具体操作如下图所示:


 2.9  删除文件

        一开始,与一般的文件命令管理一样

rm 文件

        在文件删除的操作完成后,需要进行持久化

        如果文件不小心删除,要回滚回去

git restore 文件名

         前提是:修改文件已经从暂存区中拿出


http://www.mrgr.cn/news/13167.html

相关文章:

  • C++ | Leetcode C++题解之第377题组合总和IV
  • Web3常见概念
  • ip命令简解
  • docker容器基本命令、docker进入容器的指令、容器的备份、镜像底层原理、使用commit命令制造镜像、将镜像推送到阿里云镜像仓库与私服仓库
  • 【Go - interface, 强类型语言中的任意类型 】
  • 如何设置代理ip地址怎么使用ip代理上网
  • 自动查询获取实时返回值 JavaScript JQuery on(),change(),trigger()
  • MVC结构是什么?怎么运用MVC结构?
  • 【前端储存】之localStrage、sessionStrage和Vuex
  • 数论经典问题——约数之和
  • 超分中的GAN总结:常用的判别器类型和GAN loss类型
  • 【Linux篇】环境变量
  • Android Audio音量——硬按键调节音量(七)
  • 开学季 小学学科资源免费取 让你节省2W元报班费
  • 【计算机系统架构】从0开始构建一台现代计算机|时序逻辑、主存储器|第3章
  • Spring-2- AOP 切面编程
  • MySql中常用的sql语句大全(工作常用篇)
  • unicode编码存在转义字符,导致乱码问题的解决方案
  • 【XML详解】
  • 获取文件属性/库Lib