On Tuesday, 8 November 2016 at 16:57:27 UTC, H. S. Teoh wrote:
On Tue, Nov 08, 2016 at 11:40:31AM -0500, Nick Sabalausky via
Digitalmars-d wrote:
On 11/05/2016 11:48 AM, Marc Schütz wrote:
> On Saturday, 5 November 2016 at 01:21:48 UTC, Stefan Koch
> wrote:
> >
> > I recently lost 3 days of work because of my git-skills.
>
> Unless you haven't committed your work yet, almost
> everything in Git can be undone. Make a copy of your entire
> project directory (including .git) and then have a look at
> `git reflog` around the time the disaster happened. It will
> show you commit IDs that you can check out.
Yea, but unless you're a git-fu master, sometimes figuring out
how to fix whatever got messed up can lose you 3 days of work
;)
I really want to make a saner CLI front-end for git, but that
would require learning more about git than I really ever want
to know :(
If you study carefully the data model of git you will then come
to the conclusion that its CLI is not that bad.
The thing about git is that at its core, it's really very
simple. Dumb, even. It's basically a program for managing a
directed acyclic graph (DAG). That's all there is to it. The
rest is just frills.
Trying to rationalize git in terms of traditional version
control systems is what usually causes lots of confusion,
incomprehension, and frustration. To truly grok git, you have
to just forget about traditional version control concepts, and
think purely in terms of DAGs. Once you do, everything falls
into place and it all makes sense in its own peculiar way
(including all the flaws :-P).
I describe git not as a vcs but as exacly what Linus Torvalds
described it when he first presented it the Kernel mailing list:
a directory content state recorder optimized for text files. The
DAG is already an abstraction above i.e. a mean to that end.