美文网首页
Git基础应用(缓存区与本地仓库)

Git基础应用(缓存区与本地仓库)

作者: JiangSongJun_ | 来源:发表于2020-09-25 16:12 被阅读0次

一、工作区与缓冲区

Git与SVN有很多不同之处,比如Git引入了暂存区/缓冲区(stage/index)的概念,如图所示:


Git缓存区.png
  • 工作区:既是可视的工作目录,本地文件夹。
  • 缓冲区:既是本地工作目录通过git add 提交到缓冲区。缓冲区起到过滤的作用。
  • 本地仓库:既时将缓冲区的内容通过git commit -m "备注" 提交到本地仓库。

Git与SVN区别之处:SVN提交时直接提交到版本仓库去,反之Git多了缓冲区这一道屏障。

二、基本操作

1.初始化本地仓库

git init

执行此命令后会创建隐藏文件夹.git,这里面存放着git所有的数据资源(本地仓库等)。
2.配置过滤文件.gitignore
在不想提交某些文件时,可以将其过滤掉,这是我们可以创建.gitignore来配置过滤这些文件。可以直接创建文件,或者使用以下命令也可以创建:

touch .gitignore
vim .gitignore #此为是用vim来编辑文件

内容大致为:

.idea/
target/

这里过滤了.idea/目录以及target/目录,既使用正则匹配过滤的规则。也可以过滤文件,.文件类型(例 *.text) 则过滤此类型的文件
3.查看仓库状态

git status

通过此命令可以查看到仓库的提交状态(使用git status -s可使用简单模式查看状态)。

  • 红色字体的表示在工作区未添加到缓存区的文件或目录。


    未添加到缓存区.png
  • 在我们执行了git add [文件或目录] 添加到缓存区的时候我那件或目录的字体颜色会变成绿色。


    git add 添加到缓存区后.png
  • 然后执行 git commit -m "备注信息" 之后执行git status将不再看到有颜色的文件和目录。


    执行commit之后.png

4.添加到缓存区
执行以下代码即可添加到缓存区。git add 文件名(添加单个文件),git add 目录(添加目录及其子目录),git add *同git add --all(将工作区所有文件目录添加到缓存区)。

git add 文件名或目录名

5.提交到本地仓库

  • 执行此段代码后会讲缓存区的所有文件提交到本地仓库。
git commit -m '备注'
  • 如果备注较多时可以执行git commit会自动打开一个vi编辑器,按i进入编辑模式,编辑完成后按Esc键并输入:wq既保存退出并提交了。
git commit
  • 如果备注输错了需要更正备注可以执行以下代码,会进入vi编辑模式,此时更正后保存即可。
git commit --amend

6.查看提交日志

  • 执行git log命令可以查看提交到本地仓库的记录。
    查看提交记录.png
  • 查看简略记录执行git log --pretty=short即可。
    查看简略提交记录.png
  • 查看指定文件或目录的提交记录执行git log [目录或文件名]即可。
    查看指定文件或目录提交记录.png
  • 查看提交的变化,执行git log -p即可。
    提交的变化.png
    这里的+号表示增加行,-号表示删除行,例如这里就是此次提交.gitignore文件中增加了两行。
  • git log 有局限性,只能查看已提交为删除的记录。使用git reflog可以查看本地仓库的所有提交记录,只要HEAD发生了变化使用此命令都可以查看到。而git log只能查看当前分支的提交记录。

HEAD指的是正在指向工作中的本地分支的指针,可以理解为当前分支的别名。例如 HEAD->Master 表示当前分支指向的是 Master分支

7.查看更改后的差异
    使用git diff可以查看工作区与缓存区的差异以及缓存区和本地仓库的差异。

  • 查看工作区与缓存区的差异
    这里我在.gitignore文件中添加.settings/目录的过滤。
    工作区与缓存区的差异.png
  • 查看缓存区与本地仓库的差异
    将刚才的文件提交到缓存区,可使用git diff HEAD的查看缓存区与本地仓库的差异。

HEAD指的是正在指向工作中的本地分支的指针,可以理解为当前分支的别名。例如 HEAD->Master 表示当前分支指向的是 Master分支

缓存区与本地仓库的差异.png

8.撤销工作区

使用git checkout -- <file>命令可以撤销工作区的修改,其中<file>为文件名,例如撤销.gitignore的文件更改:git checkout -- .gitignore

9.撤销缓冲区

  • 撤销缓冲区添加可以使用git reset HEAD <file>命令来处理,如果为没有指定文件则清空缓存区。
  • 没有带参数的 git reset 命令,默认执行了 --mixed 参数,即用reset版本库到指定版本,并重置缓存区,在上面的命令中指定的目录版本是HEAD,即当前版本,所以实际上没有任何修改,仅是重置了缓存区
  • 另外可以使用 git rm --cached <文件名> ,可以从缓存区移除文件,使该文件变为未跟踪的状态,同时下次提交时从本地库中删除(git rm -f <文件名>此命令会将缓存区的删除,并且将物理文件删除)。

10.撤销本地仓库提交
使用命令git reset --hard <版本号>可以实现本地仓库提交的撤销操作。版本有几种不同写法。如下:

  • 可以使用HEAD^来充当版本号,其中^代前^个版本。例: HEAD^表示前一个版本。
  • 可以使用HEAD~n来充当版本号,其中n为数字,表示第几版本。例:HEAD~3表示前三个版本。
  • 可以直接填写版本号,每次提交都会生成一个哈希吗作为版本号,版本号较长,不过只需要输入前小部分git就可以自动识别。

11.压缩提交历史
如果我们提交了很多次,想要把多个提交记录合成一个提交记录,可以使用git rebase -i来进行压缩。

git rebase -i HEAD~3

此代码表示将三次提交合并(也可以git rebase -i HEAD^^^)为一次。有时候会不在HEAD分支而执行失败,可以采取较为极端的办法从第一个提交开始rebase(git rebase -i --root)。执行了命令后会打开vi编辑器,按i切换为编辑模式,将pick开头的行的pick改为reword(随意,不固定), 编辑完成后按Esc然后输入:wq保存退出,之后会自动打开描述编辑器,删除不需要的描述,编辑保留需要的描述即可。压缩之后数据还在,只是将提交记录压缩成了一条。

创建日期:2020-09-25

相关文章

  • Git基础应用(缓存区与本地仓库)

    一、工作区与缓冲区 Git与SVN有很多不同之处,比如Git引入了暂存区/缓冲区(stage/index)的概念,...

  • Git 小结

    通俗的讲Git系统分三个区:本地工作区,暂存区/缓存区,本地仓库/远程仓库区。远程仓库只认从缓存区过来的代码(gi...

  • git命令行操作

    本地仓库和远程仓库的中间缓存将git暂存区的文件推送到远程仓库放入暂存区git add .git commit -...

  • git篇之add

    添加本地工作区改动到本地仓库缓存区 git add [file1] [file2] -->添加多个文件到缓存区gi...

  • Git 命令

    git 工作流程: 工作区 --add --- 缓存区---commit---本地仓库 --push ---远程服...

  • Git版本管理工具在工作中常用的指令

    把本地本地文件初始化成git可管理的工作区仓库: 把工作区的问价添加到缓存区: 把缓存区的文件描述 并且添加到分支...

  • git基础命令

    理解: git的四个文件区: 代码区(工作区) 缓存区 本地仓库 远程仓库 常用命令: 将数据从从代码区 放入 缓...

  • Git init

    Git init :给当前工作区添加一个本地仓库 完全是本地化的 Git add :将工作区的工程提交到缓存区 g...

  • git rebase方式提交代码的命令

    1 . 查看状态git status 2 . 添加到本地缓存区git add . 3 . 提交到本地缓存区git ...

  • 本地文件新文件提交到git仓库

    1、git init初始化本地仓库。2、git add .将项目中的文件添加到缓存区3、git commit -m...

网友评论

      本文标题:Git基础应用(缓存区与本地仓库)

      本文链接:https://www.haomeiwen.com/subject/yizwyktx.html