[GTALUG] git questions

Alex Volkov avolkov at gmail.com
Fri Mar 6 15:40:10 UTC 2015


Hi Giles,

Try installing 'gitk' graphical tool that visualize a lot of things your
asking about. Just run "gitk &" from anywhere under your git project root
repository.

Alex.

On Fri, Mar 6, 2015 at 10:29 AM, Giles Orr <gilesorr at gmail.com> wrote:

> I've started using git fairly heavily (although not necessarily very
> well).  I have several repos: a couple are code, also my ~/.vim/
> folder and I'm thinking about adding ~/bin/ .  If I remember to push
> from a particular machine before leaving it, I'll never have to deal
> with merging as I'm the only user.  While most likely my discomfort
> with merging will be overcome by practice as I understand git does it
> well (I use SVN at work: merging is shudder-inducing), I'm guessing
> keeping everything up to date is still preferable.  These questions
> are mostly about incorporating information about the repo into the
> Bash prompt: I was impressed recently by the way zsh appears to handle
> it, with a sequence of tiny icons in the lower right corner of the
> terminal indicating relative status.  I didn't talk to the zsh user
> long, so I don't know if that's built-in, a plugin, or something he
> did himself.
>
> I'm starting from some code I got from nitrous.io, lovely in its
> conciseness:
>
> parse_git_branch () {
>   git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/*
> \(.*\)/\1$(parse_git_dirty)/"
> }
> parse_git_dirty () {
>   git diff --no-ext-diff --quiet --exit-code &>/dev/null || echo "!"
> }
>
> Put \$(parse_git_branch) into your prompt and it tells you what branch
> you're on, and if there are any unstaged changes (and goes away if
> you're not in a repo).  I'd prefer it did uncommitted rather than
> unstaged, haven't tried to fix that yet.  But I want to update it as
> it doesn't deal with origin at all.
>
> So, the questions:
>
> What is the easiest and most concise way to determine if your local is
> behind origin master?  I've found that "git remote show origin" will
> show this information, but I'm not sure if it's the "best" way to find
> out, and I'm also concerned that running that every time your prompt
> comes up would slow things down as it makes a remote call(?) to get an
> answer - when you might not even have a network connection, or worse,
> a very slow connection.
>
> "git status" usually says "Your branch is up-to-date with
> 'origin/master'" (or "ahead"), but occasionally - even though origin
> is configured properly - this line doesn't appear.  Is there a way to
> convince it to always show this line?
>
> Unfortunately, "git status" doesn't seem to ever notice if you're
> "behind" origin, thus the need for "git remote show origin".  Any fix
> for that?
>
> The thought was to have output for the prompt that looked like this:
>
> (everything synced): "master-"
> (uncommitted local changes): "master!-"
> (behind origin): "master^"
> (ahead of origin): "masterv"
> (ahead and behind, with local changes): "master!^v"
>
> You get the general idea.
>
> I'm aware git is capable of immense complexity (branches, detached
> head, multiple remotes, different remotes for push and pull, etc.)
> that aren't addressed here.  If I tried to tackle all of that at once
> (especially given I don't understand most of it) my head would explode
> and nothing would get done.  So I'm sticking with my simple use case
> until I have to deal with the more complex stuff.
>
> Any thoughts welcome.
>
> --
> Giles
> http://www.gilesorr.com/
> gilesorr at gmail.com
> ---
> Talk Mailing List
> talk at gtalug.org
> http://gtalug.org/mailman/listinfo/talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://gtalug.org/pipermail/talk/attachments/20150306/ccf7fe1d/attachment.html>


More information about the talk mailing list