首页 > 其他分享 >Git 基本操作

Git 基本操作

时间:2024-10-26 14:47:12浏览次数:3  
标签:文件 Git -- 修改 暂存区 git 回退 基本操作

文章目录

一、创建 git 仓库

创建一个文件夹

mkdir gitcode

进入 gitcode 文件夹

cd gitcode

查看 gitcode 下的目录

ls

创建 git 仓库,初始化 git

git init

查看隐藏目录

la

查看 git 下目录

tree .git/

如果出现 Command ‘tree’ not found,则需下载 tree,使用以下命令:

sudo apt-get install tree

注意:不要手动修改 git 仓库里面的文件

二、 配置本地仓库

配置名字

git config user.name "你的名字"

配置邮箱

git config user.email "你的邮箱"

查看配置

git config -l

如果你配置错误,也可以进行删除

// 删除 name
git config --unset name
// 删除 email
git config --unset email

添加 --global,表示以下配置项会在当前机器下的所有 git 仓库生效。

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

注意:全局配置如果要删除那么删除语句也需要加上 --global

git config --global --unset user.name
git config --global --unset user.email

三、认识工作区、版本库、暂存区

创建空文件 ReadMe

touch ReadMe

但是此时 git 还不能管理 ReadMe 文件。上文有提到不能手动修改 git 仓库里面的文件,所以我们只能将文件放在 gitcode 目录下,也被称为 git 的工作区;而 .git 称为版本库(仓库),它不属于工作区。

add 将工作区的修改写入暂存区,commit 将暂存区的修改写入 master,这才算真正的将修改写入了版本库。其中版本库存在 objects 对象,修改的工作区内容会写入对象库的一个新 git 对象中。而暂存区和 master 存的其实都是索引,HEAD 指向 master。

四、添加文件

进入文本编辑模式

 vim ReadMe

进入后默认是命令行模式,输入 i 进入输入模式,然后可以自己编辑内容,编辑完点击 esc 返回命令行模式,输入 :wq 保存并退出编辑模式。

查看文件内容

cat ReadMe

添加文件修改

// 添加指定文件的修改
git add ReadMe
// 添加 gitcode 目录下所有修改
git add .

提交文件修改

git commit -m "此次修改信息"

也可以一次性添加并提交,如下图:添加三个文件,add 文件 file1、file2、file3,最后commit 所有文件。

查看提交日志

git log

想要打印成一行也可以使用以下命令

git log --pretty=oneline

五、查看 .git 目录

上文提到 HEAD 指向 master,我们可以查看一下

通过查看确实是这样的,进入 master 再次查看

可以看出是一串字符串,我们可以发现,其实这串字符串就是我们最新一次 commit 的索引

可以从上面的 .git 目录树状图中 objects 里面看到此索引,进入该索引里面查看

git cat-file -p 067fb4fac12215b35affb5a0563046d27ecb7faa

注意:Linux 下复制快捷键为 Ctrl + Shift + C,粘贴快捷键为 Ctrl + Shift + V;

展示出来的信息里面显示了提交的作者和邮箱,parent 为上一次提交时的索引,以及提交时我们描述的信息,tree 我们不清楚,可以打印出来查看:

可以看出来是我们每一次提交的文件索引(对象),我们查看一下 ReadMe,

git cat-file -p a48e117f02f8321a76c44addad096c95be1df334

打印出来的信息是我们新增 ReadMe 文件里面的内容,所以我们对该文件的修改被 git 记录了下来,即我们每一次对这些文件的修改都会被 git 记录下来,这也就是为什么 git 能够管理每一次被修改的文件。

这边给上面的操作做一个总结,如下图:

六、添加文件2

如上图操作,创建 file4,add file4,创建 file5,最后 commit,为什么此时 commit 只有一个文件修改呢?这是因为 commit 是将暂存区的修改写入仓库中,而上述操作中,只有 file4 被放入暂存区,file5 在工作区中,没有在暂存区,所以要将 file5 写入仓库,需要先将其写入暂存区,再写入仓库。

注意:git 追踪管理的并不是文件,而是修改操作,比如你此次修改了哪些文件,如添加、删除文件,进入文件进行写入、删除代码,都是修改操作。

七、修改文件

修改文件 ReadMe,我往里面添加了一行 cat is not dog.

git status 可以查看在你最近一次提交之后是否有对文件进行再次修改,上图可以看出暂存区此时没有信息,工作区修改了文件 ReadMe

那么修改了文件我们应该怎样看到具体修改了哪些内容呢?git diff 文件 可以查看工作区和暂存区文件有哪些区别,git diff HEAD --文件 可以查看工作区和版本库文件的区别。

下图可以看出此时暂存区有修改

commit,然后 git status,可以看出此次 commit 之后,没有修改任何文件,即暂存区没有要提交的文件,工作区没有任何要 add 的文件。

八、版本回退

git 可以记录修改操作,那么我们也可以回退到我们修改的某个版本,但有工作区、暂存区、版本库,我们回退的到底是哪个呢?

git reset [--soft | --mixed | --hard] [HEAD]

上述命令可以回退,本质回退的是版本库里的内容,还可以回退到当前版本。下面先讲回退的是版本库里的内容。
其中 --soft 回退的是版本库中的操作,--mixed 回退的是版本库和暂存区中的操作,--hard 回退的是版本库、暂存区、工作区中的操作。如果不使用任何选项,则默认是 --mixed

上图操作,我们回退到 add first file 版本,也就是添加了 ReadMe 文件时的版本

查看目录,只有 ReadMe 文件,其他文件都没有了;查看 ReadMe 文件内容,只剩 hello cat!,正确回退。

查看对应的 log

但是如果此时我后悔了回退,是否还可以回到回退之前呢,当然是可以的,下面回退的索引是之前打印的 log 里面最新的索引,我们只需要回退到此索引就可以了。

但是如果我们清空屏幕或者说是关闭了服务器,得不到以前的索引怎么办呢?我们还可以通过以下命令得到以往的索引。

git reflog

可以看到每一个修改的版本前面都有一个黄色的索引,虽然这个索引比前面我们使用的短,但是这个索引也是和上面的一样的用法。

可以看到版本及 ReadMe 文件正确回退到我们需要的版本。

九、撤销修改

1、撤销工作区的修改

在 ReadMe 里面新增了一行 hello world.,现在我想要撤销这个操作,如何撤销

git checkout -- ReadMe

回到最近一次使用的 add 或 commit 操作,

2、撤销工作区、暂存区的修改

上面说到回退还可以回退到当前版本,当前版本为空,所以此处回退就是将工作区、暂存区回退到和当前版本库保持一致的状态。

在 ReadMe 文件里面添加一行,并且 add 到暂存区

此处回退可以使用 --mixed--hard,此处示范 --mixed,而默认的就是这个,所以可以不写

// 回退到当前版本
git reset HEAD [file]
// 回退到上个版本
git reset HEAD^ [file]
// 回退到上上个版本
git reset HEAD^^ [file]


上图可以看到暂存区没有了,修改的在工作区
下图撤销工作区的修改

如图,没有修改的操作了。

3、撤销工作区、暂存区、版本库里面的修改

如果工作区、暂存区、版本库里面都存在修改,如何撤销呢?
前提:commit 之后没有 push,push 就是将本地仓库内容提交到远程仓库

在 ReadMe 中添加一行代码,并且 add、commit

此时工作区、暂存区、版本库里面都有修改,可以使用 --hard 回退到上一个版本

git reset --hard HEAD^

十、删除文件

如何删除版本库中的文件

以下操作 rm 删除的是工作区的文件,暂存区、仓库里面的文件并没有删除

通过以上的学习,可以知道,将上述操作提交到仓库中就可以删除仓库里面的 file5 了

下图操作删除了暂存区里面的 file5

可以看出仓库里面的 file5 也被删除了

下面简化删除文件的步骤:

git rm file4

直接删除了工作区、暂存区的文件

删除版本库的文件

标签:文件,Git,--,修改,暂存区,git,回退,基本操作
From: https://blog.csdn.net/2301_79765510/article/details/143101359

相关文章

  • IDEA 不提示 gitlab-ci 字段问题
    问题描述idea编写.gitlab-ci.yml文件没有代码提示正常来说,idea会识别到类型自动下载的,但是有时候就是不会,很诡异,只能自己手动设置解决方案只需要添加一个shcema文件之后关联.gitlab-ci.yml文件即可1.打开schema编辑2.获取JsonScheme网址gitlabci的jso......
  • 【MySQL基础】数据库与表的基本操作:从创建到管理
    文章目录写在前面:1、数据库的创建和管理1.创建数据库:CREATEDATABASE注意事项:2.查看已有数据库:SHOWDATABASES3.删除数据库:DROPDATABASE防止误删4.总结2、表的创建与管理1.创建数据表:CREATETABLE2.查看表结构:DESCRIBE表名3.删除数据表:DROPTABLE4.修改表结......
  • dremio 25.2 软件包以及github 源码更新了
    昨天我说了dremio发布了25.2提供了新的catalog支持,之后过了一段时间dremio同时也提供了软件包以及github源码的更新说明25.1版本构建关于dremio-js的私服问题在这次代码中也看到解决了,新功能代码可以看看参考资料https://github.com/dremio/dremio-oss/blob/master/ui/......
  • windows中git无法通过ssh连接github
    windows中git无法通过ssh连接github1问题描述在windows中,使用ssh-keygen-trsa-C"<your-email>@qq.com"生成ssh公钥和私钥,并按照要求将公钥添加到github中。此时,使用命令[email protected]可以得到正确输出Hixxx!You'vesuccessfullyauthenticated,butgitHubdoes......
  • git reset后如何找回代码
    在使用gitreset后恢复丢失代码的步骤:一、理解gitreset的作用;二、使用reflog查找丢失提交;三、利用checkout命令恢复代码;四、确保代码安全。​在开发过程中,开发者可能因误操作或其他原因使用了gitreset命令,从而导致代码丢失,恢复丢失代码的关键在于对git内部机制的理解以及正确的......
  • C语言顺序表基本操作
    线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常⻅的线性表:顺序表、链表、栈、队列。顺序表一般由一个数组构成,每个元素都连续存放。头文件#include<iostream>#include<stdio.h>#include<stdlib.h>#include<conio.h>#......
  • 聊聊gitlab免费版和收费版本有哪些区别
    GitLab,一款受欢迎的代码托管和持续集成工具,有多个版本,包括免费版(GitLabCommunityEdition)和多种收费版本(GitLabEnterpriseEdition)。这些版本主要有以下不同:1、功能上的差异;2、性能与可扩展性;3、专业支持;4、集成与API;5、定价与许可;6、安全性与合规性;7、更新与维护。1、功能......
  • 如何在GitLab中添加其他人
    在GitLab中添加其他人的步骤:1.登录到你的GitLab账户;2.访问项目;3.点击“设置”;4.选择“成员”;5.添加成员;6.配置权限;7.邀请成员;8.完成添加。首先,确保你已经登录到你的GitLab账户。如果你还没有账户,可以注册一个免费的GitLab账户。1.登录到你的GitLab账户首先,确保你已......
  • Gitlab是什么工具
    标题:Gitlab是什么工具摘要:GitLab是一个开源的、提供版本控制系统的DevOps平台。使用Git实现代码版本控制、代码仓库托管,支持持续集成与持续部署(CI/CD)1、代码合作审查2、项目管理3、自动化测试。在实施细节方面,GitLab不仅简化了开发周期,还通过自动化流程,帮助团队提高工作效率......
  • DFIR(Digital Forensics and Incident Response,数字取证与事件响应)脚本是用于帮助分析
    DFIR(DigitalForensicsandIncidentResponse,数字取证与事件响应)脚本是用于帮助分析、调查和响应安全事件的自动化工具或脚本。这些脚本通常用于收集和分析系统、网络或应用程序中的数据,以识别潜在的安全威胁或漏洞。主要功能数据收集:自动化收集系统日志、网络流量、文件系......