当前位置:首页分享Git入门(九):管理修改

Git入门(九):管理修改

Git相较于其他版本控制系统的优势在于其独特的设计:Git跟踪并管理的是修改,而非文件。这一特性让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命令将这次修改放入暂存区,准备提交。

$ git add readme.txt
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   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命令时,只有第一次的修改被提交了,第二次的修改并未包含在内。

$ git commit -m "git tracks changes"
[master 519219b] 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管理的是修改,而不是文件。当我们使用git add命令时,Git会将工作区的修改放入暂存区,准备提交。然而,如果我们在git add之后再次修改文件,这些新的修改并不会自动进入暂存区。因此,当我们执行git commit命令时,只有暂存区中的修改会被提交。

这一特性使得Git在处理版本控制时具有更高的灵活性和准确性。它可以让我们精确地控制哪些修改应该被提交,哪些修改应该被保留在工作区。同时,由于Git跟踪的是修改而非文件,它在处理大量文件或大型项目时也能保持高效的性能。

提交后,用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.

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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧