- Chapter 3 Recording Changes
A ‘snapshot’ is a complete record of state of files, not of differences between other states.
‘staging’ allows you choose what changes go into the commit.
To stage files,
$ git add (can multiple files be listed here?)
or to stage all,
$ git add .
To stop tracking a file, in other words to delete it from the project but not the working directory,
$ git rm --cached(can multiple files be listed here)
To view status of working directory and staging area,
$ git status
To output status of every unstaged change in your working directory,
$ git diff
To output difference of all staged changes
$ git diff --cached
To display committed snapshots,
$ git log
$ git status (what does this get?)
We start with ‘working directory’. This is ‘staged’ with ‘git add .’ and it is now a ‘staged snapshot’ which can then be ‘commited’ to ‘history’. And I suppose it is then ‘pushed’ to a remote repo.
A ‘commit’ is a saved version or ‘snapshot’ of the project, containing user info, date, commit message and SHA-1 checksum of entire contents.
A ‘commit’ is a step removed from working directory.
To commit staged snapshot to and add it to the history of the current branch,
$ git commit
You’ll be asked for a commit message,
Alternatively if the message is short you can use,
$ git commit -m “commit messsage goes here”
Display current branch’s commits,
$ git log (already mentioned above)
For working directory and stage we use: git add, git rm, and git status
For commit history: git commit, and git log
To display each commit on a single line,
$ git log -oneline (is the single hyphen correct)
To display history of an individual file,
$ git log --oneline (is the double hyphen correct?)
Filter commits, display commits contained in but not in . Both arguments can be commit ID, branch name or a tag,
$ git log .. (this is not clear)
To see what files were effected by a particular commit, display a diffstat of the changes in each commit,
$ git log -stat
Tags are simple pointers to commits. Create a new tag,
$ git tag -a v1.0 -m "Stable release"
-a creates an annotated tag and -m lets you record a message.
List your existing tags,
$ git tag