I like Git, or at least the idea of it. However I can not get my head around how to use it. Therefore I would not like to teach it.
(This question is about learning to use Git. Not about comparing it to other revision control systems.)
I have used a range of revision control systems: SCCS, ClearCase, RCS, CVS, and Subversion. I then tried to learn Git. In reading the manuals I got a full understanding of its internals. I even managed to use it, but after a few days I would forget how to use it. The interface seems unintuitive. I then adopted Mercurial (hg
) — a similar, but easier to use revision control tool.
I have noticed that Git is very popular, and maybe superior to Mercurial (internally, if not from a usability point of view). And am therefore thinking of giving it another go.
What can I do to make this journey easier for me?
What good user interfaces should I adopt?
I am not interested in proprietary tools; All tools should be Free Software / Open Source. They need to be available for GNU/Linux and Microsoft Windows (I have to use the latter at work).
Who are the learners?
- Myself (a software engineer > 20 years experience of revision control systems).
- My pupils (age 11 to 18), if I find it easy enough to learn my self.
My preference for user interfaces are
- Unix (GNU/Linux) command line.
- Unix (GNU/Linux) GUI.
- Microsoft's Windows GUI.
- Microsoft's command line.
So it is important, for me, to have a good command line tool, on my GNU/Linux machine. And important to have a good, and the same, GUI on GNU/Linux and Microsoft Windows.
My goals
- To use the tool to store the history of my, and pupils, projects.
- To be able to look at past history.
- To be able to revert to past state.
- To merge and resolve conflicts.
- To not be un-necassarily serprised.
- To never think, that life would be easier without it.
- Have a smooth progression from the basics (that should be very easy), to the complex (that should be as complex as necassary, but no more).
I am not against command-line usage (it is my favourite way to use the computer), I am against cryptic, hard to remember commands, that have surprising results.
git bisect
), so having a specific goal might be helpful here for others to guide you more accurately. $\endgroup$