【Linux】Git原理与使用

编程不仅是解决问题的艺术,更是对复杂性进行优雅管理的哲学。

前言

这是我自己学习Git工具的笔记。后期我会继续把Git工具笔记开源至博客上。

版本控制器Git

  1. Git 是一款去中心化的分布式版本控制系统

  2. Git 提交时,仅会记录并提交文件的变动部分

Git的本地使用

安装

cpp 复制代码
//安装Git
sudo yum install git -y

创建本地仓库

cpp 复制代码
//创建本地仓库.git
git init

配置本地仓库

cpp 复制代码
//设置用户名和邮件地址
git config --global user.name "your name"
git config --global user.email "your-email@example.com"
//删除用户名和邮件地址
git config --global --unset user.name "your name"
git config --global --unset user.email "your-email@example.com"
//查看配置列表
git config -l

区域划分

  1. 工作区:指的是用于编写代码或文件的目录
  2. 暂存区 : 指的是 .git目录下的index文件。暂存区有时也被称作 索引 ,它用于 存放即将提交到仓库的文件变更
  3. 版本库 :也称为 仓库。在工作区中有一个 隐藏目录.git,它并不属于工作区本身,而是 Git 的版本库所在
  4. 这个版本库中的所有文件都可以被 Git管理和追踪,无论是内容的修改、文件的删除等操作, Git都能记录变化,使得你可以在任何时候查看历史记录,或恢复到之前的某个状态。

add+commit

cpp 复制代码
//将目标文件从工作区移动到暂存区 
git add xxx
//查看本地仓库的缓存区
git status
//将当前暂存区中的更改正式提交到本地的Git仓库,并为此次提交附上一条描述性的消息
git commit -m "日志信息"
//显示项目的提交历史记录
git reflog

查看改动

cpp 复制代码
//如果你只是修改了xxx而没有执行git add xxx,那么git diff xxx将显示这些修改的内容
git diff xxx

版本回退

cpp 复制代码
//回退版本库
git reset --soft file.id(HEAD^)(HEAD^^)
//回退版本库、暂存区
git reset --mixed file.id(HEAD^)(HEAD^^)
//回退版本库、暂存区、工作区
git reset --hard file.id(HEAD^)(HEAD^^)
//把工作区的文件恢复到最近一次提交的版本
git checkout -- file.name

1.版本回退的本质在于移动HEAD指针以指向历史中的某个提交,从而改变当前分支的状态。

2.进行版本回退的前提通常是该提交尚未推送到远程仓库(即commit后未执行push ),这样可以在不影响他人工作的前提下调整项目状态。

  1. 版本回退的主要目的是为了修正本地代码而不影响远程仓库的内容 ,确保在推送更新前所有更改都符合预期。

分支管理

分支管理的优点

  1. 分支就像是一个分身,你可以让本体专注于学习C++,同时让分身去学习Java。到了一定阶段后,只要将分身的成果合并回本体,就能够同时掌握C++和Java的知识。

master主分支

  1. Git中,每次提交都会形成一条时间线,这条线就是一个分支。

  2. HEAD并不直接指向提交,而是指向当前所在分支,而该分支则指向最新的提交。

  3. 随着不断提交,分支向前延伸,HEAD也随之始终指向当前最新的提交。

创建合并删除分支

cpp 复制代码
//查看现有分支
git branch
//创建新的分支xxx
git branch xxx
//切换分支xxx
git checkout xxx
//合并分支到主分支上
git merge xxx
//删除分支xxx
git branch -d xxx

远程仓库

cpp 复制代码
//将远程的仓库添加到本地
git clone warehouse_link
//将本地仓库的提交推送到远程仓库
git push

致谢

感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

相关推荐
一念&3 小时前
Git 与 GitHub 的对比与使用指南
git·github
我是李武涯5 小时前
svn与git Merge重要区别讲解
git·svn
ん贤6 小时前
Git分支
git
迷你二鹏9 小时前
前端之Git
前端·git
哈里谢顿9 小时前
常见 git push 问题及解决方案
git
MarkGosling10 小时前
【开源项目】轻量加速利器 HubProxy 自建 Docker、GitHub 下载加速服务
运维·git·docker·容器·开源·github·个人开发
Aomnitrix15 小时前
【分布式版本控制系统】Git的使用
分布式·git
向上的车轮1 天前
SVN与GIT的区别,分别使用与哪些管理场景?
git·svn
java叶新东老师1 天前
git 提交时排除一个或多个文件
大数据·git·elasticsearch
我会冲击波1 天前
功能分支落后于develop太多,需要把开发分支合并到功能分支吗?
git·intellij idea