`
wangemperor
  • 浏览: 40107 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

github学习笔记(六)编辑修改

 
阅读更多

现在,假定你已经完全掌握了暂存区的概念。下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。

为什么说Git管理的是修改,而不是文件呢?我们还是做实验。第一步,对readme.txt做一个修改,比如加一行内容:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes.

然后,添加:

$ git add readme.txt
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   readme.txt
#

然后,再修改readme.txt:

$ cat readme.txt 
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

提交:

$ git commit -m "git tracks changes"
[master d4f25b6] git tracks changes
 1 file changed, 1 insertion(+)

提交后,再看看状态:

$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

咦,怎么第二次的修改没有被提交?

别激动,我们回顾一下操作过程:

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

你看,我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:

$ git diff HEAD -- readme.txt 
diff --git a/readme.txt b/readme.txt
index 76d770f..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@
 Git is a distributed version control system.
 Git is free software distributed under the GPL.
 Git has a mutable index called stage.
-Git tracks changes.
+Git tracks changes of files.

可见,第二次修改确实没有被提交。

那怎么提交第二次修改呢?你可以继续git addgit commit,也可以别着急提交第一次修改,先git add第二次修改,再git commit,就相当于把两次修改合并后一块提交了:

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

好,现在,把第二次修改提交了,然后开始小结。

小结

现在,你又理解了Git是如何跟踪修改的,每次修改,如果不add到暂存区,那就不会加入到commit中。

分享到:
评论

相关推荐

    GitHub命令行笔记

    当多人同时修改同一文件时可能出现冲突,通过手动编辑冲突部分并使用`git add`和`git commit`来解决。 8. **标签管理(Tag Management)**: 创建标签用`git tag -a tag_name -m "tag描述"`,列出所有标签用`git ...

    git学习笔记.zip|git学习笔记.zip

    在“git学习笔记”中,我们通常会涵盖以下几个核心知识点: 1. **Git安装与配置**:首先,我们需要了解如何在不同的操作系统(如Windows、MacOS或Linux)上安装Git,并设置用户信息,包括用户名和邮箱,这些信息会...

    Atom-Writing,旅途笔记。通过在github上创建一个帐户来帮助createdd/编写开发。.zip

    Atom-Writing是一个基于GitHub的项目,它利用了Atom文本编辑器的强大功能,为开发者提供了一个高效、便捷的创作环境。Atom是由GitHub开发的一款开源文本编辑器,它采用Web技术,如HTML、CSS和JavaScript,使其具有...

    Git的学习笔记/记录

    这份"Git的学习笔记/记录"涵盖了Git的基础知识以及高级用法,旨在帮助读者深入理解Git的工作原理和实践技巧。 一、Git的基本概念 1. 版本控制:Git的主要目标是管理项目在开发过程中的不同版本,以便于回溯、比较和...

    我的SVN学习笔记(原创)

    **我的SVN学习笔记(原创)** 在信息技术领域,版本控制系统是不可或缺的工具之一,它帮助开发者跟踪和管理代码的变化,使得多人协作变得有序而高效。Subversion(简称SVN)就是这样的一个开源版本控制系统,它允许...

    git-notes:Git和GitHub笔记

    GitHub则是基于Git的一个在线平台,提供了代码托管、协作编辑、问题跟踪、版本控制等一系列功能,是全球开发者交流与合作的重要场所。 Git的核心概念包括仓库(Repository)、提交(Commit)、分支(Branch)、合并...

    Notebook:学习笔记

    将学习笔记存放在GitHub上,意味着这些笔记可以被版本控制,随时查看历史更改,同时也便于与他人共享和协作。 "Notebook-main"很可能是这个学习笔记项目的主目录或者主文件,这可能是一个包含所有笔记文件的文件夹...

    git相关学习笔记值得

    通常,开发团队会有一个共享的远程仓库,如GitHub或GitLab,团队成员可以推送(`git push`)自己的更改到远程仓库,也可以拉取(`git pull`)其他人的更新到本地。使用`git clone`命令可以从远程仓库克隆一个完整的...

    tshanli.github.io:我的笔记集

    6. **版本控制**: 由于使用了GitHub,所有的更改都有版本记录,这使得作者可以追溯历史版本,查看修改历史,甚至回滚到之前的版本,确保内容的准确性。 7. **开源精神**: 将笔记集开源意味着任何人都可以查看、学习...

    常用的五种很好在线编辑器

    通过GitHub Desktop,开发者可以在线编辑代码,实时查看更改,并与其他开发者协作。 4. **CodePen** CodePen 是一个针对前端开发者的在线代码编辑器,专注于HTML、CSS和JavaScript的编写。它提供了一个实时预览...

    Git学习笔记

    Git学习笔记主要涵盖以下几个核心知识点: 1. Git安装与配置: 在Windows、Mac或Linux上安装Git,通常可以从Git官方网站下载安装包。安装完成后,需要进行基本的用户配置,包括设置用户名和邮箱,这是Git用来标识...

    Linux视频学习笔记.pdf

    `diff`命令用来比较文件差异,`vi/vim`编辑器提供强大的文本编辑功能,其环境参数和常用指令能极大地提高工作效率。文件搜索命令`find`是日常操作中不可或缺的工具,例如查找特定名称、大小、所有权或修改时间的文件...

    avsblog.github.io:https:avsblog.github.io

    5. **发起Pull Request**:在GitHub上发起一个Pull Request,请求将你的更改合并回原始仓库。 6. **等待审查**:项目维护者会审阅你的贡献,并可能提出反馈或直接合并。 通过以上步骤,你可以参与到AVSblog的内容...

    notemanager.github.io:在线笔记

    总的来说,"notemanager.github.io"项目提供了一个基于JavaScript的在线笔记解决方案,通过GitHub Pages部署,用户可以查看源代码,学习其架构和实现,甚至根据自己的需求进行修改和扩展。对于想要提升JavaScript ...

    基于bmob的简易笔记源码

    修改了笔记列表的显示时间方式 修复了小米2s 5.0上CardView的显示问题 1.0.2 Material Design风格,采用抽屉式菜单,悬浮滑动按钮,点击控件时的水波纹效果,状态栏透明使得与应用融为一体,用户即使在Android ...

    老师整理的extjs学习笔记

    ### ExtJS 学习笔记概览 #### 一、ExtJS 入门 **1.1 ExtJS 构成及如何引用** ExtJS 是一款基于 JavaScript 的开源框架,专为 Web 应用程序的前端界面设计。其核心优势在于提供了一套丰富的 UI 组件和强大的数据...

    20210324_231823_1_搭建博客可能会用到的Git命令|学习笔记1

    5. **推送至GitHub**:完成本地修改后,使用`git push`将更改推送到GitHub仓库。首次推送可能需要提供用户名和密码,或者配置SSH密钥以实现无密码推送。 6. **查看状态**:`git status`用于查看当前工作目录和暂存...

    bangbangde.github.io:笔记本

    【bangbangde.github.io:笔记本】是一个个人博客项目,它主要基于HTML技术构建,用于分享作者的笔记和学习心得。这个项目的源代码存放在名为"bangbangde.github.io-master"的压缩包中,通常这样的命名方式表明这是一...

Global site tag (gtag.js) - Google Analytics