After reading Git pre-commit hook : changed/added files, the following question arose:
Given I have a file with both staged and unstaged changes, how can I display a preview of the file's contents after staging?
Example:
echo "foo" >> file git add file echo "bar" >> file
Wanted output:
[previous contents of file] foo
Viewing a list of the latest commits. If you want to see what's happened recently in your project, you can use git log . This command will output a list of the latest commits in chronological order, with the latest commit first.
If you just want to see the diff without committing, use git diff to see unstaged changes, git diff --cached to see changes staged for commit, or git diff HEAD to see both staged and unstaged changes in your working tree. +1 Yes. git diff . htaccess does what I wanted to achieve.
OK, there are a couple of ways to show all files in a particular commit... To reduce the information and show only names of the files which committed, you simply can add --name-only or --name-status flag... These flags just show you the file names which are different from previous commits as you want...
Find what file changed in a commit To find out which files changed in a given commit, use the git log --raw command. It's the fastest and simplest way to get insight into which files a commit affects.
Use the :
prefix to access objects in the current index (staged but not yet commited).
git show :file
See gitrevisions (which uses the term 'stage 0' for the "normal" index contents):
:[<n>:]<path>, e.g. :0:README, :README
A colon, optionally followed by a stage number (0 to 3) and a colon, followed by a path, names a blob object in the index at the given path. A missing stage number (and the colon that follows it) names a stage 0 entry. During a merge, stage 1 is the common ancestor, stage 2 is the target branch’s version (typically the current branch), and stage 3 is the version from the branch which is being merged.
Update: the answer from grawity has a much neater solution
This recipe is from jleedev's answer to another question:
git cat-file blob $(git ls-files -s file | awk '{print $2}')
You might want to create a git alias for that if you're going to use it often.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With