Hacker News new | past | comments | ask | show | jobs | submit login
A list of cool features of Git and GitHub (github.com/tiimgreen)
164 points by lmedinas on Jan 18, 2015 | hide | past | favorite | 24 comments



> To add more color to your Git output: git config --global color.ui 1

Don't do this. The default (since 1.8.4) is auto, which adds colors if the output goes to a terminal, but doesn't if the output goes somewhere else (e.g., a pipe). That is probably what you want (and already have).

I fell for this myself at some point. Somehow expecting there to be more colors, or full color support, or something like that — Nope.


The book has a nice discussion: http://git-scm.com/book/en/v2/Customizing-Git-Git-Configurat...

> The default setting is auto, which colors output when it’s going straight to a terminal, but omits the color-control codes when the output is redirected to a pipe or a file.

> You can also set it to always to ignore the difference between terminals and pipes. You’ll rarely want this; in most scenarios, if you want color codes in your redirected output, you can instead pass a --color flag to the Git command to force it to use color codes. The default setting is almost always what you’ll want.


    git config --global --unset color.ui


Better yet, if you just want to get to work and have a sexy terminal, use https://github.com/mathiasbynens/dotfiles

To install on Mac just run:

    git clone https://github.com/mathiasbynens/dotfiles.git && cd dotfiles && source bootstrap.sh


File Explorer by pressing "t" is my favorite shortcut on Github since nested file structure gets annoying after a while of looking around.


This has been posted a few times before and is an excellent resource.

It links to a GitHub repo [1] I made a while ago with every type of emoji as a separate file and commit as a fun and somewhat pointless demo.

However, for whatever reason the emojis on the repo stopped working (after a GitHub update?). Each emoji, regardless of commit message, is defaulting to the last one that was created (:zzz:). I reached out to GitHub a few times about it, but I never got a response. It's probably super low priority for them, but I thought I would share since, although minor, I technically broke GitHub.

[1] https://github.com/scotch-io/All-Github-Emoji-Icons


Previous fruitful HN conversation: https://news.ycombinator.com/item?id=7580465


Github should definetely have more Emojis!

Emojis make everything a little bit fun.


So you can have a web interface to browse your Git repo with just one command

  $ git instaweb
Wow! Git never ceases to amaze! http://git-scm.com/docs/git-instaweb


> The first commit of a repo, as the first commit cannot be rebased later

Hey, can't I git rebase --root?


You can, but it's still a good idea to avoid as it tends to confuse some tools (and some people).


Ya, I agree. But if you are rebasing I assume you know what you are doing.

More like a shouldn't (or really shouldn't if you will) than cannot.


One cool feature that isn't listed here is that you can use emacs org-mode files instead of markdown to document your project.


There are many different formats you can use: https://github.com/github/markup


Any way how to automatically mirror an external Git repo to GitHub? Any webhooks for that?


https://help.github.com/articles/about-github-mirrors/

tldr; you have to set the hook yourself


The feature does or did exist, but hidden. The early versions of GitHub Enterprise (called GitHub FI) exposed this and it can be seen in action in some places (e.g.: https://github.com/ghc; look at the "mirrored from" subtitles). I really wish GitHub would expose that feature publicly, though. The post-receive advice they give only works if you have full access to the master repo and misses out on recording the "this is a mirror" piece of metadata on the repository, which is useful for people who might try to open PRs etc


The point of git is, that you do not need to do this. Just push.


There's a slight difference between a git push and a full mirror operation. A git push only synchronises the current branch. Even git push --all doesn't necessarily push all reachable commits - tags, other named refs (eg. stash), the state of the reflog...


It's somewhat useful as poor man's backup, since forgetting to push to the other remote would be a pretty human thing to do. I guess you could do some kind of bash alias to push both remotes, but that would also assume that both are available from your network location (not sure if Git can have n remotes with one push alias).


Can't we download and then push to github repo?


Yeah, but the point is to have it done automatically. It's easier to fork a repo on GitHub than on e.g. CGit, so I would like to mirror an external repo to GitHub and keep it in sync.


> Adding ?w=1 to any diff URL will remove any changes only in whitespace, enabling you to see only that code that has changed.

Annoyingly, this doesn't work for pull requests.


weirdly, an empty line is included in the example output. Does that not count as whitespace?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: