<story><title>Two Commits and the User Experience of Git</title><url>https://redfin.engineering/two-commits-that-wrecked-the-user-experience-of-git-f0075b77eab1</url></story><parent_chain><item><author>CJefferson</author><text>I really agree with this, it&amp;#x27;s too late for git now, but I consider the overloading of &amp;#x27;checkout&amp;#x27; to be one of the worst pieces of UI I&amp;#x27;ve ever come across, and the source of confusion for many people when I try to teach them git.&lt;p&gt;I didn&amp;#x27;t know that &amp;#x27;git reset&amp;#x27; has a similar problem.&lt;p&gt;If git gained the &amp;#x27;checkout-tree&amp;#x27; and &amp;#x27;checkout-file&amp;#x27; (and other) commands mentioned, I&amp;#x27;d personally use them instead of checkout.</text></item></parent_chain><comment><author>ajarmst</author><text>It&amp;#x27;s not really too late for git, if there is sufficient energy around rolling back the change.  The relatively standard process for API changes of (1) adding a new command that does the same thing for a major version, (2) adding a deprecation warning and description of the new way to do it (say &amp;#x27;Please use checkout-tree instead&amp;#x27;) for another major version or two before (3) it stops working in major version 3.  That allows people to get used to a syntax change without breaking scripts for a while.  The git project has already used that process for other API changes.  In fact, it&amp;#x27;s pretty common practice to do that sort of thing when a given CLI option starts getting too baroque and complex.</text></comment>
<story><title>Two Commits and the User Experience of Git</title><url>https://redfin.engineering/two-commits-that-wrecked-the-user-experience-of-git-f0075b77eab1</url></story><parent_chain><item><author>CJefferson</author><text>I really agree with this, it&amp;#x27;s too late for git now, but I consider the overloading of &amp;#x27;checkout&amp;#x27; to be one of the worst pieces of UI I&amp;#x27;ve ever come across, and the source of confusion for many people when I try to teach them git.&lt;p&gt;I didn&amp;#x27;t know that &amp;#x27;git reset&amp;#x27; has a similar problem.&lt;p&gt;If git gained the &amp;#x27;checkout-tree&amp;#x27; and &amp;#x27;checkout-file&amp;#x27; (and other) commands mentioned, I&amp;#x27;d personally use them instead of checkout.</text></item></parent_chain><comment><author>stephengillie</author><text>Git is really 2 tools in 1: a manual Distributed File System, and a Version Control System built on hashing. And much new vocabulary. Instead of helping to make the system simpler and easier to understand, the vocabulary actually makes the system more complex and increases the slope of the learning curve.&lt;p&gt;It shouldn&amp;#x27;t be so complex to indicate you&amp;#x27;ve copied files from Github, made a personal copy to work on, and have switched to that copy. But this involves finding where your Head is, having an Origin, a Master, and somewhere Remote, finding the right branch in the tree to hit with a fork, and going to a checkout counter.</text></comment>