Difference between revisions of "Git/hacks"
(adds recipe for ignoring directory with exception)
(adds git tag info)
|Line 35:||Line 35:|
Revision as of 14:20, 2 December 2015
See all the changes in color, but without any context lines, and without the leading +/-/[space] This makes it easy to grab changes and stuff them in another file for example.
git diff -U0 --color myfile | sed -r "s/^([^-+ ]*)[-+ ]/\\1/"
You forgot to add a file to the last commit? Just add it to the index, and commit with
--amend. If you leave off the -m (message) option in the new commit, it will let you re-use the last commit message. This lets you "undo the last commit" and redo it right. You usually do not want to amend a commit if you've already pushed it to other repos, but if it's just local
--amend is awesome-sauce.
git add forgotten.php git commit --amend git log --stat
What's the commit history?
--stat gives a nice view of what happened in the log.
git log --stat
How do you ignore a directory, but make an exception? What if you already added certain directories to git but want to stop tracking them now (ie. "take them out of version control")?
A combination of editting your
.gitignore file and
git rm --cached to the rescue. I had accidentally added and committed some files into git which should have been ignored because they are 3rd party files managed by Composer. I fixed my
.gitignore to track only what I want while ignoring a parent directory:
/nbproject/* # ignore everything in the 'vendor' directory /vendor/* # but don't ignore the 'eqt' directory !/vendor/eqt/
Then you simply remove all files from git's index, and add them back (only now adding them back will look to .gitignore for the corrected rules)
git rm -r --cached . git add . git commit -m 'ignoring vendor/*'
Tags[edit | edit source]
With git, you can just tag something with
git tag foo. This produces a 'lightweight' tag. Use "annotated tags" whenever you want to know when something was tagged and who did it. Pass an empty message if you really don't care or need extra annotation.
git tag -am '' 'REL-1.0-alpha'