And the data structure and model are solid.
But even understanding what is going on behind the scenes, I find git to be an unintuitive mess at the CLI issue.
Let me start by saying things that git got right:
- The dag structure is nice
- Recursive merges are good
- The data models and what goes on behind the scenes is solid.
- It is the most full-featured vcs I have worked with
However, I still have real complaints with the software These include fundamentally different concepts merged into the same label and the fact that commands may do many different things depending on how you call them. The fact that the concepts are not clear means that it is worse than a learning curve issue. One cannot have a good grasp of what git is doing behind the scenes because this is not always clear. In particular:
- In what world is a fast-forward a kind of merge?
- Is there any command you can explain (besides clone) in three sentences or less?
- What does git checkout do? Why does it depend on what you checkoout? Can you expect an intermediate user to understand what to expect if you have staged changes on a file, when you try to check out a copy of that file from another revision?
- What does git reset do from a user perspective? Is there any way a beginner can understand that from reading the documentation?
- In other words, git commands try to do too much at once and this is often very confusing.
- Submodules are an afterthought and not well supported across the entire tool chain (why does git-archive not have an option to recurse into submodules?)
These specific complaints come from what I see as a lack of clarity regarding what concepts mean and they indicate that those who wrote the tools did so at a time when the concepts were still not entirely clear in their own minds. In essence it is not that things are named in unclear ways but that concepts have unclear boundaries.
Some of this could be fixed in git. fast-forward could be referred to as a shortcut to avoid a merge rather than a kind of merge. Some could be fixed with better documentation (we could describe git reset by what the user-facing changes are, rather than the internal changes). Some would require a very different set of command layouts.
Very Helpful Blog. Well thanks for sharing such a nice blog.!!
ReplyDeleteBest English Classes in Bangalore
nice blog
ReplyDeleteandroid training in bangalore
ios training in bangalore
machine learning online training
useful blog
ReplyDeletepython interview questions
cognos interview questions perl interview questions vlsi interview questions web api interview questions
msbi interview questions
laravel interview questions
ReplyDeleteaem interview questions
salesforce interview questions
oops abab interview questions
itil interview questions
informatica interview questions
extjs interview questions
sap bi interview questions hive interview questions seo interview questions
ReplyDeleteas400 interview questions wordpress interview questions
accounting interview questions
basic accounting and financial interview questions
Iot Training in Bangalore
ReplyDeleteArtificial Intelligence Training in Bangalore
Machine Learning Training in Bangalore
Blockchain Training bangalore
Data Science Training in Bangalore
Big Data and Hadoop Training in bangalore
Devops Training in Bangalore