為什麼git比其他版本控制系統設計得優秀?
因為git跟蹤並管理的是為什麼說git跟蹤管理的是修改?修改
,而非檔案
修改:比如新增了一行、刪除了一行、更改了某些字元,這些都是乙個修改
這時候,可以做個實驗證明,例如修改某一檔案(下述test.txt
)內容然後將修改後的
test.txt
檔案新增到暫存區
******@****** mingw64 ~/desktop/gitdir (master)
$ git add test.txt
******@****** mingw64 ~/desktop/gitdir (master)
$ git status
on branch master
changes to be committed:
(use "git reset head ..." to unstage)
modified: test.txt
這時候我們還未將test.txt檔案提交
,再次更改
test.txt檔案的內容
修改後,我們將text.txt提交
******@****** mingw64 ~/desktop/gitdir (master)
$ git commit -m "test-commit"
[master 95f2aa7] test-commit
1 file changed, 1 insertion(+)
提交完後,檢視當前的狀態,顯示第二次的修改並未提交
,為什麼呢?
正如之前所說,git管理的是修改,不是檔案,第一次修改,我們使用git add
將修改提交到了暫存區,但是第二次的修改並沒有放入暫存區
,所以當我們提交時,git commit
只負責將暫存區的修改提交了,而第二次的修改卻不會被提交
******@****** mingw64 ~/desktop/gitdir (master)
$ git status
on branch master
changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
提交後,我們可以使用git diff -- test.txt
檢視工作區
和版本庫
裡最新版本的區別
******@****** mingw64 ~/desktop/gitdir (master)
$ git diff head -- test.txt
diff --git a/test.txt b/test.txt
index 74a4ae3..8814fd7 100644
--- a/test.txt
+++ b/test.txt
@@ -2,3 +2,4 @@ my first git dir
my update
haha
huhu
+xixi
由上可以看出工作區相較於版本庫中,新增了一行xixi
,由此可以看出第二次的更改是沒有被提交的,如果需要提交,可以繼續使用git add
和git commit
將第二次的修改提交
Git 管理修改
現在,假定你已經完全掌握了暫存區的概念。下面,我們要討論的就是,為什麼git比其他版本控制系統設計得優秀,因為git跟蹤並管理的是修改,而非檔案。你會問,什麼是修改?比如你新增了一行,這就是乙個修改,刪除了一行,也是乙個修改,更改了某些字元,也是乙個修改,刪了一些又加了一些,也是乙個修改,甚至建立乙...
Git 管理修改
現在,假定你已經完全掌握了暫存區的概念。下面,我們要討論的就是,為什麼git比其他版本控制系統設計得優秀,因為git跟蹤並管理的是修改,而非檔案。你會問,什麼是修改?比如你新增了一行,這就是乙個修改,刪除了一行,也是乙個修改,更改了某些字元,也是乙個修改,刪了一些又加了一些,也是乙個修改,甚至建立乙...
GIt 管理修改
特別注意 每次修改,如果不用git add到暫存區,那就不會加入到commit中。檢視工作區和版本庫裡面最新版本的區別 git diff head readme.txt 先修改了readme.txt,然後我沒有git add readme.txt,而是直接git commit readme.txt ...