一 基本概念
工作区(Working Directory):指的是我们的项目所在的目录。
版本库(Repository):指的是工作区 .git 目录。如下图所示,版本库主要有三部分组成。
- index :也就是我们讲的暂存区;
- HEAD :指向分支的指针,默认指向 master;
- refs 目录下创建的分支(版本库初始化的时候创建 master 分支)。
二 命令探究
2.1 git add a.txt 命令发生了什么事情呢?
将在工作区的 a.txt 文件添加到暂存区 index了,此时在暂存区内是有 a.txt 文件的。
2.2 git commit a.txt -m’add a.txt’ 命令发生了什么事情呢?
将位于暂存区的 a.txt 文件提交到版本库的一个分支,此时暂存区没有了 a.txt 文件。
三 数据回退
3.1 如何放弃工作区内文件的修改?
比如说我们在工作区对 a.txt 文件进行了修改,但是我们觉得修改不满意,想放弃这个修改,如何操作呢?
可以使用:git checkout a.txt 放弃对文件的修改。
3.2 如何将暂存区文件回退到工作区?
比如说,我们使用 git add 命令将文件添加到暂存区,这个时候发现添加文件错误。如何将放弃暂存区的修改,重新放回工作区?
可以使用: git reset HEAD a.txt 将文件变成修改状态。
3.3 版本库如何将多个提交合并成一个提交?
假设我们对 a.txt 文件进行了三次提交,如图所示:
别人不知道,我们这块针对一个功能最好是一次提交,那这个意味着我们这块需要对多个提交合并成一个提交。这块如何实现呢?
方式一:git rebase -i HEAD~n
这个n代表提交次数,这块取3就行。
将第二个和第三个 pick 修改成 s。
编辑 commit log
方式二:git reset commit_id
这个 commit_id 是第一次提交之前的 commit_id,这个命令相当于将文件的多次提交回退未提交 commit 状态。
这块需要通过 git add a.txt 、git commit -m ‘修改a.txt文件’ 来达到 commit 。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/9606.html