I like that you can add git repositories inside eachother using git submodule add but when it’s time to say goodbye to a submodule you need some convoluted statements. So I really wish one day there will be git submodule remove.
Until then, these links will help you to get rid of a git submodule:
Besides the very good point it raises about DVCS (Git, Mercurial and most other DVCSes treat the whole state of the repository as the atom) it also indicates quite a few shortcomings:
most people hardly ever need the full history to be off-line
having the full history means repositories get huge in size, including your off-line clone
pseudo-solutions for huge repository sizes – like git-LFS or git-annex – are a no-go because now you loose atomicity
huge repositories in file or commit counts make them slow, especially when the trees are deep
splitting up repositories isn’t a good idea either because again: you loose atomicity
all DVCS are hard, not just git, because they are distributed and full of features
the workflow for submitting pull requests is quite a bit longer than submitting a patch, even though merging in a DVCS can be hard too (despite atomicity which does help a lot for DVCS systems)
I see many other advantages of DVCS systems (for instance that you only need to locally have the branches you are interested in, way better tooling for DVCS systems, ditto for sites hosting DVCS), but it always a good thing to know the weak spots of what you are working with.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Time to experiment with [WayBack] Gitless: a simple version control system built on top of http://gitless.com/:
…
Gitless is an experiment to see what happens if you put a simple veneer on an app that changes the underlying concepts. Because Gitless is implemented on top of Git (could be considered what Git pros call a “porcelain” of Git), you can always fall back on Git.
git-complete-tip completes a few staged tips inside any forward-ported non-staged unstaged indices, and a few checked out subtrees fscked by histories in the tree, but that are not in HOLD_SUBTREE, are checked out in a temporary pack.
The difficulty of using Git in common situations is belied by the apparent simplicity of its use in tutorial-style situations. Committing and sharing changes is fairly straightforward, for instance, but recovering from situations such as accidental commits, pushes or bad merges is difficult without a solid understanding of the rather large and complex conceptual model. For instance, three of the top five highest voted questions on Stack Overflow are questions about how to carry out relatively simple tasks: undoing the last commit, changing the last commit message, and deleting a remote branch.
Actually the “easy to learn” means “there is easy to find documentation for it“.