A person who just starting out ask me about git.

I explain what is "init" , "remote" , "add" , "committing" everything was going well until vim happen.

I just refer him to some beginner friendly tutorial about git and give him a link to git client tool.

How do you guy learn about git? When I stop to think about it git have lot of features.

  • 0
  • 1
    Vim, as cool as it may be, is a bit too complicated for someone who doesn't even know what git is.
    I suggest you go for a milder learning curve and pick a different editor for doing git stuff - nano is a great start.
  • 0

    I am planning to telling him how to use git client tool and when he become familiar with git concept I am going to tell what git command is actually being executed.

    I am afraid that he will become "too comfortable" with the git client.
  • 1
    @mr-user I think you should teach the concepts through the CLI tool. It isn't more complicated concept-wise, and there's a lot less noise. One they know what they're doing, a GUI will make it more convenient. Git is based on the concepts of tree, hash and tag, and it's much easier if you teach with the concepts. If you approach it from the user actions, it can seem counterintuitive, when in fact the whole point is to make merges as simple and predictable as possible.
  • 1

    Maybe I should get creative and draw diagram. In your point of view which concept are essential?

    For me I think (I sort them based on order of importance)

    1) Git init

    2) adding

    3) commit

    4) pushing

    4) branch

    5) history

    6) pulling

    7) merging

    8) reset & revert

    9) remote

    10) git ignore
  • 0
    @mr-user I learned git in the exact order Pro Git uses, and I found it easy. I don't remember what that was, so here's what I personally recommend:
    You should decide on a few things first: If your student doesn't mind a bit of theory, first explain to them the object store, how trees are represented and what refs are. Once you know the plumbing, the porcelain is very obvious. If they have little patience and don't like learning things they can't use, teach them how to create a repository, make commits, branches, merge and check out older commits. Once they can move about in the tree and do all the operations they need for collaboration, you can teach the rest in whatever order you like. If they have a hard time memorizing, explain relevant bits of the plumbing, because it's the same behavior described with simpler rules. Also, don't forget to tell them about reflog in due time, it makes experimenting with branching a lot safer.
  • 0

    By "Pro Git" do you mean the book written by Scott Chacon and Ben Straub?

    Are you a professional lecturer by any chance?

    The problem is I don't know the person I am teaching. We just have a few conversation online and we hit off.

    He is interested in CS and just started out so I thought I will help hum. Show some pitfall and stuff. I give him some pointer and do review on his code (if he ask for it).

    Maybe I will try to show different way and see what stick. I am feeling generous these days and wanted to share my knowledge with new comer.
  • 0
    I'm not a professional lecturer, I only taught 4 friends so far, and I totally misunderstood the situation. Do not teach about the git plumbing to a newbie, obviously. Actually, if he's completely new, I'd advise not to teach anything but the bare minimum required to collaborate. That would be a specific GUI client and telling him exactly which buttons to press and in what order to
    - create a new repo and publish to github (or whatever you use)
    - receive your updates and merge them
    - push his updates for you to merge
    You can wait with the rest until he gets an idea about the software development process. The whole concept of git doesn't make sense without that anyway.
    Btw my friends were maths enthusiasts whose primary leisure activities at the time were learning interesting concepts and throwing chalks through tetragonal grids, so I had success teaching plumbing along with the porcelain from the beginning. That wouldn't apply to anyone but long time programming/maths enthusiasts.
  • 0
    I like vim. I did a dev project a while back where I had to do all development on a remote machine through ssh. I decided to use it as an opportunity to get familiar with vim.

    It takes some adjusting. At first I used it with Tmux to get multiple files open at a time. Turns out vim can do that itself. Can also browse files, run code, has spellcheck and lint. But the powerful stuff is in the command mode.

    Also working with lines at a time and moving around words and paragraphs at a time instead of clicking made my workflow faster.

    To this day I can edit code on my phone through ssh because vim only requires an escape key and the alphabet.
Add Comment