https://www.youtube.com/watch?v=jpy_SL05g7g&list=PLuHgQVnccGMA8iwZwrGyNXCGy2LAAsTXk ================================================================================ git status "There is no to commit" How Git knows it? ================================================================================ ================================================================================ Latest commit ================================================================================ If Git compares those 2, Git can know whether there is to commit or not ================================================================================ ================================================================================ If following contents is same to it means there is no to commit ================================================================================ Edit f2.txt vim f2.txt git status ================================================================================ above contents will be different "edited contents" So, Git knows there is something to commit ================================================================================ git add f2.txt git status ================================================================================ Before "add", f2.txt is not the object for commit (changes not staged for commit) ================================================================================ After "add", it's "changes to be commited" ================================================================================ you can see "x y z" ================================================================================ Now, in index file, it's also "x y z" ================================================================================ when you do "add", from your working directory, files are passed to "index files" when you do "commit", from index, your code is passed to "local repository" as tree, commit objects