初识Git

    写这边专栏之前,我觉得有必要普及一下版本管理软件的相关概念,如果你还没有这个概念,不凡随着这篇文章来大致了解一番。

记得我第一份工作那时候是个小团队,当时对版本管理概念并不是很强,我们使用的是一个叫做dropbox的东西,但是也没有什么觉得不方便的,因为基本一个人负责一个项目的所有事情,从开发到测试包括一些策划的工作(当时其实并不知道还有策划这种工种),除了配备一个美术来负责一些素材和界面方面的设计,其他的基本要靠自己,这段是题外话。

Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。


GIT的简介与使用
=============

# 1. Git 基础
>1.1 Git是一个开源的分布式版本控制系统

Git跟Svn一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为
每一个开发人员的电脑上都有一个本地版本库,所以即使没有网络也一样可以Commit,
查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端。 这
也就意味着大部分操作都是在本地执行的
>1.2 直接记录快照,而非差异比较

Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,
而大多数其他系统则只关心文件内容的具体差异。

Subversion,Perforce,Bazaar 等等:

![ Cooki]( https://git-scm.com/figures/18333fig0104-tn.png)
git:

![ Cooki]( https://git-scm.com/figures/18333fig0105-tn.png)

>1.3 Git工作区,暂存区,版本库概念
工作区(Working Directory):

就是你在电脑里能看到的目录,比如我们的mini_client文件夹就是一个工作区:

版本库(Repository):

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库,Git的版本库里存了很
多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创
建的第一个分支master,以及指向master的一个指针叫HEAD


![ Cooki]( https://github.com/CookiRui/gitflowRes/blob/master/workspace.jpg?raw=true)

基本的 Git 工作流程如下:

在工作目录中修改某些文件。
对修改后的文件进行快照,然后保存到暂存区域。
提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。


# 2. 如何使用GIT
>2.1 检查当前文件状态

要确定哪些文件当前处于什么状态,可以用 git status 命令。刚克隆下来的仓库的干净的,
nothing to commit, working directory clean.
假设我们现在修改了一个xiaorui.txt得问文件,那么这个文件会被标记成已修改,如果这个
文件是我们新建的,那么这个文件会被标记成未被追踪的。

>2.2 追踪或者暂存已修改的文件

我们使用 git add 命令, 实际上就是把要提交的所有修改放到暂存区(Stage)

>2.3 忽略某些文件

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。

![ Cooki]( https://github.com/CookiRui/gitflowRes/blob/master/ig.png?raw=true)


>2.4 提交更新

现在的暂存区域已经准备妥当可以提交了。在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。所以,每次准备提交前,先用 git status 看下,是不是都已暂存起来了,然后再运行提交命令 git commit

* ## 2.5 查看提交历史

在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看。

< pre >< code >
$ git log
commit 259113ff93de6dd45a138ed28bd407ca9689af28 (HEAD -> master)
Author: xiaorui < xiaorui@ ztgame. com >
Date: Mon May 7 16:05:57 2018 +0800

task:00 changed file xiaorui.txt

commit 4cd3f11944c653996482c20526a572f5c24c5eaf
Author: xiaorui < xiaorui@ ztgame. com >
Date: Mon May 7 16:05:07 2018 +0800

task:00 add new file xiaorui.txt

commit 127b362ad33e056ccaec042beee96636381efb91 (origin/master)
Author: xiaorui < xiaorui@ ztgame. com >
Date: Mon May 7 15:51:42 2018 +0800

task:00 first
</ code ></ pre >

看起来像这样的,默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更
新排在最上面。看到了吗,每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、
提交时间,最后缩进一个段落显示提交说明。 这个SHA-1 校验,我们把他认为是commit id。

* ## 2.6 本地版本回退

我们使用git reset命令 + 版本号 来恢复到指定版本
在Git中,用HEAD表示当前版本,也就是最新的提交259113ff93de6dd45a138ed28bd407ca9689af28
这里我来介绍下reset的三个参数分别是 --soft --hard --mixed(默认不加参数时候)

* --soft HEAD和你重置到的那个commit之间的所有变更集都放在stage(index)区域中
* --hard 清空所有区域,直接恢复到指定版本(可能会丢失数据)
* --mixed HEAD和你重置到的那个commit之间的所有变更集保留在工作区,清空stage

* ## 2.7 撤消操作

### 2.7.1 修改最后一次提交
> $ git commit --amend

此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明

### 2.7.2 取消已经暂存的文件

>git reset HEAD xiaorui.txt 的方式取消暂存

是不是很像 2.6 本地版本回退, --mixed的方式可以让所有暂存的文件全部回到工作区

### 2.7.3 取消对文件的修改
假如我们觉得对工作区xiaorui.txt的文件修改完全没有必要,现在怎么办呢

>$ git checkout -- xiaorui.txt



为毛不支持markdown语法

内容概要:本文详细介绍了使用KGDB(Kernel GNU Debugger)调试Linux内核的方法及其重要性。文章首先强调了Linux内核作为系统核心的重要性及其调试的必要性,随后介绍了KGDB的基本原理和优势,包括其基于调试stub和GDB串行协议的工作机制。接着,文章详细描述了使用KGDB调试内核的具体步骤,包括准备工作、内核配置、设置启动参数、建立调试连接和进行调试操作。文中还通过一个实战案例展示了KGDB在解决实际问题中的应用,并总结了使用KGDB时的注意事项和常见问题的解决方法。最后,文章展望了KGDB未来的发展方向和应用场景,如优化调试性能、支持新型硬件架构以及在嵌入式系统、云计算和大数据领域的应用。 适合人群:具备一定Linux系统开发经验的研发人员,尤其是那些需要调试和优化Linux内核的工程师。 使用场景及目标:①帮助开发者深入了解Linux内核的运行状态,精准定位并修复内核问题;②优化内核性能,提高系统的稳定性和可靠性;③适用于嵌入式系统开发、远程服务器维护等场景,特别是在硬件资源有限或无法直接接触设备的情况下。 其他说明:在使用KGDB进行调试时,需特别注意串口设置的一致性、内核版本的兼容性以及调试信息的完整性。同时,要解决常见的连接失败、断点无效等问题,确保调试过程顺利进行。未来,KGDB有望在技术上不断优化,并拓展到更多应用场景中,为Linux系统的持续发展提供支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值