Git入门(二)

简介: 工作区和暂存区Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。工作区 :就是.git文件所在的目录,我们一般把文件存放的目录。版本库 :工作区有一个隐藏的目录.git文件夹,这个就是Git的版本库。

工作区和暂存区

Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。

  • 工作区 :就是.git文件所在的目录,我们一般把文件存放的目录。
  • 版本库 :工作区有一个隐藏的目录.git文件夹,这个就是Git的版本库。

Git 的版本库中存了很多东西,其中最重要的就是成为stage的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD.

img_f9bffc902efbcf0d32ae768af3597f95.png
image.png

前边说过,我们把文件往Git版本库里添加的时候,是分两步执行的:

  1. git add 文件名 把文件添加进去,实际上就是把文件修改添加到暂存区。
  2. git commit提交更改,实际上是把暂存区的所有内容提交到当前分支。
    因为我们创建Git版本库时,Git自动为我们创建一个唯一一个master分支,现在,git commit 就是往master分支提交更改。

需要提交的文件修改通通放到暂存区,然后一次性提交暂存区所有的修改。

例:先对readme.txt做个修改,比如加上一行内容,再新建一个文件LICENSE.
然后git status看一下状态:

img_30f6480fae51097f0ae41446f76f8738.png
image.png

Git非常清楚地告诉我们,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。

现在,使用两次命令git add,把readme.txt和LICENSE都添加后,用git status再查看一下:

img_cdb890a92ee67151317cb5ca6d686920.png
image.png

此时 暂存区状态就变成这样了,如图:


img_b12c11265ee8c7afa078ba7782b963d1.png
image.png

所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
git commit -m "更改文件并添加了新文件"
一旦git commit 完后,工作区就是"干净的".

img_9592071ec21147a62d00ebbc015f8c8d.png
image.png

管理修改

为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。
执行这个操作:

执行这个操作:

第一次修改 -> git add -> 第二次修改 -> git commit

这样执行后,可以发现第二次的修改其实并没有生效,原因就是Git只对在暂存区的修改执行commit,而第二次修改后未执行git add 命令,也就是说未提交到暂存区,所以,尽管git commit后,第二次修改依旧不生效。

正确的做法
第一次修改 -> git add -> 第二次修改 ->git add  -> git commit

撤销修改

  • .git checkout --文件名:在工作区中修改完文件,想要撤销,(此时还没有放到暂存区,也就是还未执行git add),
  • git reset HEAD filegit checkout --文件名:已经更改并提交到暂存区后想要撤销修改。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。

删除文件

rm -rf file
执行完删除命令后,git status看终端显示:

img_b0fdffa4fdaae718693153835caf9947.png
image.png

现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令 git rm删掉,并且 git commit
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本: git checkout -- file1.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

本文是学习廖雪峰老师写的Git的笔记整理便于自己复习,原文地址https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

目录
相关文章
|
1月前
|
开发工具 git 索引
【git】入门
【git】入门
32 2
|
3月前
|
Shell Linux 开发工具
Git入门(windows系统)
Git入门(windows系统)
41 1
|
6月前
|
JSON 前端开发 JavaScript
前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(一)
前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(一)
522 0
|
5月前
|
存储 算法 开发工具
Git的入门详细教程
Git的入门详细教程
|
5月前
|
存储 Shell Linux
Git 入门使用
Git 入门使用
66 0
|
10天前
|
数据可视化 开发工具 git
Git代码版本管理入门
Git代码版本管理入门
|
1月前
|
程序员 开发工具 git
好程序员Git入门到精通教程
本课程主要通过命令行和idea来介绍Git的安装、仓库创建、工作流、远程仓库、克隆仓库、标签管理和分支管理等Git的主要内容。 另外关于GitHub的使用介绍也有完整的说明和使用,接轨生产环境使用方式。
10 1
好程序员Git入门到精通教程
|
5月前
|
存储 Shell 开发工具
【Git】Git安装入门使用&常用命令&Gitee远程仓库上传文件与下载
【Git】Git安装入门使用&常用命令&Gitee远程仓库上传文件与下载
84 0
|
1月前
|
存储 持续交付 开发工具
Git操作入门
Git是一个的开源分布式版本控制系统,它已经被广泛应用于软件开发、文档管理、代码托管等领域,成为当今最流行的版本控制系统之一。Git通过高效地管理文件的变化,使得团队协作更加高效,错误率更低。本文将介绍Git的工作原理、基本命令和常见用法等内容。
21 0
Git操作入门
|
2月前
|
缓存 Java 开发工具
[Git]入门及其常用命令
创作本篇文章的初衷,是为了方便大家回顾git常用命令和使用细节,而不用查阅大量资源寻找。同时记录了一些特殊需求,如:pull 部分代码、删除日志。 如果文中阐述不全或不对的,多多交流。
38 0
[Git]入门及其常用命令