Git初学的学习笔记


本文是通过学习《Pro Git》--作者Scott Chacon 后所做的整理和思考笔记。

《Pro Git》中文版 PDF 下载见

一.GIT管理下的文件周期

Git初学的学习笔记

1.新添加的文件或文件夹是untracked状态,意思是git的版本管理里没有这个文件。

可以用git add来把这个文件加入git管理,之后就会是tracked中的stage状态了。

如果是新git clone或git init的文件,则是在tracked状态里的unmodified状态。

注1:新添了文件,untracked的状态:

Git初学的学习笔记

注2:用git add <文件名> 将文件加入git管理后,文件是tracked下的staged状态

Git初学的学习笔记

2.在git的管理下的状态是tracked状态,包括unmodified,modified和staged三种状态。

3.unmodified状态指本地的文件与版本库里该文件最近一次的提交是一致的。

Git初学的学习笔记

4.一旦修改了文件,文件内容与版本库里该文件最近一次的提交内容不一致,状态便变成modified。此时可以用git add <文件> 来stage文件。

stage之后的文件可以用git commit <文件> 来提交文件或 git reset HEAD <文件> 来取消stage状态。

Git初学的学习笔记

5.当一个文件已经stage后,如果再做修改,此时的状态是部分stage,部分modified。如果commit的话,会提交已经stage的那部分。

Git初学的学习笔记

6.git add有多种功能,可以将untracked的文件track,可以将modified的文件stage,还可以将merge时conflict后来修改好的文件再次stage。

问题:为什么要有一个stage的状态?修改了文件要stage再commit不是很麻烦吗?

我的答案:commit是一次对所有stage过的文件的提交,没有针对某一个文件的commit。

一般说来,一次commit是完成一个版本的snapshot,可以修改一个文件就stage,也可以修改完了很多文件一起stage。stage就像一个箱子,把要commit的内容都装上去。然后对装箱的内容做commit操作。

如果修改好的文件可以直接提交,可以用git commit -a来自动stage,即对全部修改自动装箱提交。

  • 1
  • 2
  • 3
  • 下一页

相关内容