`
wangemperor
  • 浏览: 38057 次
  • 性别: 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中。

分享到:
评论

相关推荐

    基于bmob的简易笔记源码

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

    生鲜配送平台源码java-ES_Study_Notes:ES学习笔记

    ++++++++搜索引擎ElasticSearch学习笔记++++++++ 注意:Github README文件编辑方法以及解决无法显示图片问题 修改hosts文件添加一下内容(C:\Windows\System32\drivers\etc\hosts) 199.232.68.133 raw....

    leetcode中国-dubin-learner.github.io:dubin-learner.github.io

    2021.6.15正在修改的页面: ...... 最近要完成的: 读书笔记,先是effective C++,然后是CSAPP 希望每次在Leetcode上遇到的hard都记录一篇 最近在读的espresso逻辑优化源码 未来要完成的: 从零开始完成一个文本编辑...

    leetcode题库-DL-Prep:关于计算机视觉和深度学习的关键知识

    leetcode题库 DL-Prep 深度学习基础知识,算法,面试题 由 UESTC DL 学习小组开发和维护 维护笔记 当需要更改前,增加一个新的 branch,确认自己的更改好之后,再和 ...等编辑器中编辑,编辑 Jupyte

    gitLearn:这是我自己的git笔记。 该存储库仅用于学习,使我更方便地查找git CLI命令以及git基本核心概念。 使用Git v2.29.0(适用于macOS Catalina 10.15.6)

    Git Learn自主学习Git的观念和指令后做的统整&学习笔记目录修改Commit纪录如果有特定档案不想放在Git里面一起备份或是上传到Git Server的话,例如:资料库密码,云端伺服器的金钥...可以加入.gitignore中检视特定档案的...

    LinkedInLearningSQL:LinkedIn学习SQL课程的注意事项

    LinkedIn学习-学习SQL编程学习领域/实践方法结合使用SQLite和DB浏览器界面来编写查询和练习SQL语言练习使用版本控制软件将注释上载到github以供以后参考利用Markdown语言有效地跟踪个人课程笔记介绍数据库按列(字段...

    课程设计基于Django+Bootstrap的个人博客源码+项目说明.zip

    【资源说明】 课程设计基于Django+Bootstrap的个人博客源码+项目说明....3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    deep-learning-course

    Colaboratory提供免费的GPU,因此您可以修改部分教程并重新训练模型以测试您的修改。 具体来说,您可以连续12小时访问k80 GPU。 当这12个小时结束时,您可以连接到另一台计算机。 本显示了Colaboratory中CPU和GPU...

    phase-0-html-experiencing-html-lab

    相反,此练习的目的是让您感到编辑文件的乐趣,并看到“在那里”所做的更改。 注意:我们不希望您知道标记,内容,源文本或渲染的文本。 我们将在本实验中定义它们。 入门 如果您还没有的话,可以将本课程分叉并...

    leetcode的reputation-CompetitiveCodingPractice:有竞争力的学习者可以从这个repo中修改很多程序和

    这是我个人的编码练习材料这里有很多程序和问题是我自己实现的,用于学习和将来需要时的修订,因此您还可以修改与数据结构和图论相关的许多主题和算法. 任何人都可以轻松找到特定主题的特定问题, 在这里,我以良好...

    Yax-MIAB-Template:描述

    到目前为止的故事最新的优先:210315c已更改:210315b 我需要认识到最好的方法似乎是: 在GitHub中创建新分支在Gitpod的那个分支上工作在Cloudflare开发版本中检查结果最终推向主分支但这全都是学习过程。...

    极客日记:面向程序员的TIL编写工具

    极客日记 Geek's Diary是集成了版本控制系统的markdown编辑器。 它可以帮助程序员编写TIL(今天我已学习)。 :rocket: Beta版本您可以从下载安装程序。 当前仅支持macOS。 正式版本(v1.0.0)也将支持Windows。 Beta...

    RoboScientist

    e标志---它告诉pip以“可编辑”模式安装软件包:对项目文件的所有更改将立即生效,而无需重新安装软件包(但是,这并不影响在正在运行的解释器中导入代码)。 但是,添加/删除顶级模块(直接位于src/下的模块)仍...

    sphinx中文语音训练手册

    因此sphinx需要学习说话人的“口音”。 如果训练时的读者发音比较标准,则sphinx能“举一反三”,识别其他不那么标准的读者的语音。 推荐的做法是训练一些典型的口音:标准男、女声,童音,最后再考虑特定用户的口音...

Global site tag (gtag.js) - Google Analytics