Difference between revisions of "Git/hacks"
(adds a couple example commands) |
(adds recipe for ignoring directory with exception) |
||
Line 16: | Line 16: | ||
<source lang="bash"> | <source lang="bash"> | ||
git log --stat | git log --stat | ||
+ | </source> | ||
+ | |||
+ | 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 <code>.gitignore</code> file and <code>git rm --cached</code> 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 <code>.gitignore</code> to track only what I want while ignoring a parent directory: | ||
+ | |||
+ | <pre> | ||
+ | /nbproject/* | ||
+ | # ignore everything in the 'vendor' directory | ||
+ | /vendor/* | ||
+ | # but don't ignore the 'eqt' directory | ||
+ | !/vendor/eqt/ | ||
+ | </pre> | ||
+ | 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) | ||
+ | <source lang="bash"> | ||
+ | git rm -r --cached . | ||
+ | git add . | ||
+ | git commit -m 'ignoring vendor/*' | ||
</source> | </source> | ||
[[Category:Development]] | [[Category:Development]] |
Revision as of 13:05, 24 July 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/*'