Discarding Files
Remove pesky .DS_Store on Mac
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Then add .DS_Store
to .gitignore
.
Remove files from .gitignore
Add the file to .gitignore
then in the top level of the repo:
git rm -r --cached .
git add .
git commit -m "fixed untracked files"
Discarding Changes
Discard all unstaged files
git checkout -- .
or
git reset --hard
git clean -nd
(dry run)
git clean -fd
(-f is force, -d is remove directories)
Revert a file
git checkout -- <filename>
or get file from origin
git checkout origin/master -- <filename>
Reset local to origin
git fetch --all
git reset --hard origin/master
– Source: Stack Overflow
Diffing
See the difference between 2 branches
git diff --name-status master..<branch>
Patching
Apply a patch from a url
For the lazy among us…
curl <url.patch> | git apply -
git commit -am "..."
Downloading/Uploading
Download and track remote branch
git checkout -t origin/<branch-name>
Push branch to live and track it
git checkout -b <branch-name>
git push -u origin <branch-name>
Merging
Merge master into your branch
git checkout <branch>
git merge master
If it pops you into vim then press esc
to return to command mode and enter ZZ
to save and exit (and commit). You can input text with i
. And :wq
just quits.
Download remote master and merge with your local branch
git fetch origin
git merge origin/master
Config
Use a different SSH Key for a different server
Inside ~/.ssh/config
put:
Host github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/different_rsa
Use your SSH Keys inside a VM
host <ip-address-of-vm>
ForwardAgent yes
Make Git use your text editor instead of Vim
~ git config --global core.editor "atom --wait"~
Replace atom --wait
with your text editor. See list of options.
File System Issues
Unable to unlink old directory (Permission denied)
If you get “error: unable to unlink old ‘
chmod g+w <directory>
Fix “modified files” issue after clone
This is git seeing differences in line endings on your file system. In ~/.gitattributes
add:
"text=auto"
– Source: Stack Overflow