

Learn Git in the Browser - markcrazyhorse
https://try.github.io/

======
xxbondsxx
Shameless self promotion:

[http://pcottle.github.io/learnGitBranching/?demo](http://pcottle.github.io/learnGitBranching/?demo)

I found the try.github.io tutorial very underwhelming -- it emulates enough of
git to just fall into the uncanny valley. I also prefer visual learning --
hence I made the above!

~~~
steamer25
Thanks for the great tutorial! It definitely helped my understanding when I
went through it.

~~~
xxbondsxx
You're welcome! as well as mendelk and ahurmazda below -- glad you all found
it useful (and my self-promotion wasnt too annoying) :D

------
GnarfGnarf
Thanks for the tutorial. I appreciate that Git is complex and powerful, but I
didn't need a tutorial for Subversion. Git is baffling. The error messages are
cryptic and unhelpful. It deters the casual user. Can I suggest a list of the
absolute, bare-bones minimum set of commands for a project where there will be
no merging, just uploading by one person, and downloading by others?

~~~
as_someone
Use Mercurial.

There's [http://hginit.com](http://hginit.com). Given your comment about "I
didn't need a tuturial for Subversion", though, maybe you'll find that
inadequate, too. As someone who tried using SVN before ever touching hg or git
or its forebears, I found SVN baffling. To me, the DVCSes make sense. HgInit's
"Subversion Re-education" page says:

> Mercurial separates the act of committing new code from the act of
> inflicting it on everybody else.

The fact that this isn't the case in SVN is mystifying to me.

I still struggle with git. In fact, I don't use it, largely because I still
don't know _how_ to use it. Note how I said that "the DVCSes make sense". I
say that, because I can read "Understanding Git Conceptually"
<[http://www.sbf5.com/~cduan/technical/git/>\--which](http://www.sbf5.com/~cduan/technical/git/>--which)
a number of HN commenters have posted before--and I get it. The problem is not
that I don't understand the concepts backing git. It's that I don't understand
_how these concepts map onto git 's infuriatingly obtuse UI_.

So use Mercurial. Because,

a) it's better (read: nicer to use), and b) when you use Mercurial, it comes
with the benefit that you're helping inoculate the dev world against a DVCS
monoculture.

If it helps, know this: I write as someone whose use case is largely the one
you outline. I mostly find myself working alone, on a side project of mine
where I'm the only committer.

    
    
      # Crystallize your changes in a revision marked with your
      # commit comment:
      hg commit
    

That's it, pretty much. Occasionally you'll need to do an hg addremove to make
sure Mercurial isn't ignoring any new files you've introduced (hg add and hg
remove if you want to do things manually), and an hg mv whenever you need to
move things around.

Everything ramps up pretty sensibly and steadily from there, so that you're
really only spending the mindspace to pay for the features you're really
using.

For example, if you have a public-facing repo:

    
    
      hg push # read as "publish", if it helps.
    

Do this, occasionally preceded by an hg out (when you find that you want to
see _what_ you'll be pushing), and you're good to go.

~~~
as_someone
>
> [http://www.sbf5.com/~cduan/technical/git/>\--which](http://www.sbf5.com/~cduan/technical/git/>--which)

... aaaaand HN is busted, and won't update the post when I try to edit that to
fix the link.

That's
[http://www.sbf5.com/~cduan/technical/git/](http://www.sbf5.com/~cduan/technical/git/)
for convenience.

------
_deh
This is good as well: [http://www.win-vector.com/blog/2012/07/minimal-version-
contr...](http://www.win-vector.com/blog/2012/07/minimal-version-control-
lesson-use-it/)

------
lukasm
Shouldn't git add -A be used as default instead of git add . ?

~~~
olivierlacan
Hmmm, I think you're right. That's less dangerous, especially when people
don't really know what they're doing. I'll push an update.

That said . should be specified per manpages:

> If no <pathspec> is given, the current version of Git defaults to "."; in
> other words, update all files in the current directory and its
> subdirectories. This default will change in a future version of Git, hence
> the form without <pathspec> should not be used.

------
j2kun
I've always found the git CLI really odd. For example, when doing a git diff,
how would anyone use the following information that gets printed out?

new file mode 100644

index 0000000..cfbc74a

And you have all of these symbols that show up in the diff like "+[m" before
a new line (why not just +?). I imagine there are good reasons for all of
this, but I also feel like some of this should be hidden behind a --verbose
flag or something.

~~~
phaker
Do you mean you get '+[m' instead of '+' in front of an added line? If so,
this looks suspiciously like ecma formatting escapes (\e[XXXm).

Try if calling git diff --no-color, if this helps then something is broken on
your setup. Another way i could see that happening is if you have color set to
'always' and then use some app that wraps git's command line output.

~~~
as_someone
j2kun means the stuff that shows up from TFA when using git diff:

    
    
      diff --git a/octocat.txt b/octocat.txt
      index 7d8d808..e725ef6 100644
      --- a/octocat.txt
      +++ b/octocat.txt
      @@ -1 +1 @@
      -A Tale of Two Octocats
      +[mA Tale of Two Octocats and an Octodog

~~~
pmh
phaker is correct, that's just an escape sequence that the JS terminal didn't
handle (or handled incorrectly). Using --no-color you get:

    
    
        diff --git a/octocat.txt b/octocat.txt
        index 7d8d808..e725ef6 100644
        --- a/octocat.txt
        +++ b/octocat.txt
        @@ -1 +1 @@
        -A Tale of Two Octocats
        +A Tale of Two Octocats and an Octodog

------
tpsc
Looks good. Another option: [https://www.git-
tower.com/learn/ebook](https://www.git-tower.com/learn/ebook)

------
millzlane
I'm no designer but I would move the 'Advice' section to the top of the page
below the command. I didn't notice the lower right hand side of the screen
kept changing.

I feel like I was just doing what I was told rather than learning. Is this
more for individuals with SCM experience or beginners?

~~~
olivierlacan
Absolute beginners.

Our advice box is something for people who want to learn more, it's not
essential enough to be below the command before the output.

------
geerlingguy
On an iPad, I just get a blank white screen... Does the site use flash, or is
there a problem right now?

~~~
olivierlacan
We released this on July 4th 2012. I can't remember if we tested it for
tablets & phone but generally I recall the jQuery Console plugin not being too
fond of either. It's only more recently that console/editors have become more
responsive to different environment/viewports.

To summarize, this is not a load problem, it looks like a display bug. We'll
look into it but I can't promise this will work on your iPad anytime soon,
sorry.

~~~
geerlingguy
No problem; I finally had time to open it up on my laptop, and it works fine
in Chrome and Safari. I understand not doing any major updates for
mobile/tablet users, but if would be nice to at least be able to see something
:)

~~~
olivierlacan
Found the bug. I did a maintenance update of jQuery on April 29th and they
removed a (bad) $.browser method we used for some reason. Reverted and
deploying so it should work on iOS from now on. Give it 5 minutes for the soft
restart to kick in.

------
jafaku
What the heck is an octobox? Do you really want a git tutorial to use github-
specific terms like that?

~~~
olivierlacan
GitHub sponsored it, and I like picking fun examples. Is that so offensive?

~~~
j2kun
It would be nice to explain what it means. Try googling "octobox" :)

~~~
olivierlacan
After some consideration and re-reading the copy, you folks are right that
people could be confused into thinking the word "octobox" is somehow a git
concept or something important. I rephrased all the instances where we mention
it in order to highlight the fact that we "decided" to name our directory that
way. I think it should prevent confusion from now on.

Thanks a lot for the feedback. :-)

~~~
jafaku
That's great, thanks. I'm sharing it now.

------
dnlserrano
Cool for learning Git. However, not that great for the first time somebody
uses a version control system.

Does anybody have a good tutorial for "Code Version Control for Dummies (while
using Git)"?

------
amwelles
We used this tutorial at a Girl Develop It workshop last year. It worked
really well! I also learned jQuery via Code School on my own time the year
before that. Keep up the good work!

------
xfalcox
Just sent this to a new co worker who just got into her first programming job.
It's a great resource that helped me when I was starting.

------
mikeharmer
Found this a really useful introduction to Git, thanks!

~~~
olivierlacan
Glad you think so Mike. Did you have version control experience or Git
experience prior to it?

------
llomlup
Nice tool. I keep suggesting it to people wanting to learn git.

