- gitkraken (closed-source, USD60/yr) seems to be the sleekest and hippest, and runs everywhere. It also has the least horribly broken visualisation. recommended.
- Sourcetree (closed source, free) is an adequate client on Windows and OSX, although slooooooow.
- git-cola is open-source, in python.
- giggle (open-source, Linux/GTK only) seems to be purely a repository viewer, but that’s actually done really badly generally, so is not completely useless.
- sparkleshare is designed for file syncing for designers, not versioning code for coders, but is also effectively a neat git GUI.
git fetch remote branch git subtree add --prefix=subdir remote branch --squash
git fetch remote branch git subtree pull --prefix=subdir remote branch --squash git subtree push --prefix=subdir remote branch --squash
importing some files across a branch
git checkout my_branch -- my_file/
In brief, this will purge a lot of stuff from a constipated repo in emergencies:
git reflog expire --expire=now --all && git gc --prune=now
Cleaning out all big files even from project history
bfg does that:
git clone --mirror git://example.com/some-big-repo.git java -jar bfg.jar --strip-blobs-bigger-than 10M some-big-repo.git cd some-big-repo.git git reflog expire --expire=now --all && git gc --prune=now --aggressive git push
Making it work with a broken-permissions FS
e.g. you are editing a git repo on NTFS via Linux and things are silly.
git config core.filemode false
Splitting off a sub-project
Use subtree split to prise out one chunk. It has a few wrinkles but is fast and easy.
pushd superproject git subtree split -P project_subdir -b project_branch popd mkdir project pushd project git init git pull ../superproject project_branch