11 ms·
Terminal game to test Git skills
- lxe 12y agoThis is very well done!
- hybridtupel 12y agoLooks promising, but did I read correctly "each one harder than the next"? ;)
- skrebbel 12y agoI recognize that this is hardly a constructive comment, but it still bothers me that "Git skills" are a thing. I want to keep my code versioned and share them with my colleagues. There's no "Dropbox skills" game either, why do we need a "Git skills" game? There has to be a way to do what 90% of people use Git for, but then simple, right?
- pjmlp 12y agoMy way is called TortoiseGit. It does everything any enterprise developer needs source control for.
- twelve40 12y agoNot really, just think about merging two branches. You can't really ask Dropbox to merge two diverging versions of a Word document, preferably automatically, maintaining coherency and correctness of the texts.
- learnstats2 12y agoDon't you think there is a sensible reason why writers don't merge branches?
- icebraining 12y agoWhat makes you think they don't? They just do it manually. https://en.wikipedia.org/wiki/Collaborative_writing https://en.wikipedia.org/wiki/Collaborative_writing https://en.wikipedia.org/wiki/Collaborative_fiction https://en.wikipedia.org/wiki/Collaborative_fiction
- learnstats2 12y agoIn fact, I've been involved in collaborative writing and it was organised so that it didn't require any awkward merging procedure. 'Git skills' take people away from writing. Or, put another way, 'git skills' increase cognitive load on programmers and is just another area where mistakes can be made.
- icebraining 12y agoIn fact, I've been involved in collaborative writing and it was organised so that it didn't require any such thing. That just means your group chose to limit the potential quality of the work (by not allowing people to improve on other's parts) or expand the timespan of the project (by disallowing concurrent editing) on behalf of simplifying the process. They're valid tradeoffs, but too limiting for most software projects, in my opinion.
- learnstats2 12y agoI would argue the exact opposite, but I don't think we are getting anywhere :)
- detaro 12y agoThey do, but it is a feature in Word and therefore not part of the Dropbox game ;)
- ExpiredLink 12y agoCheck-in and check-out is all most people need to know who use a 'traditional' tool like CVS and SVN.
- luch 12y agoTotally. At my work, a team of 5 devs manage to version their 25 years old software (>10.000 files) using SourceSafe ! No branch, no merge, only a central repo and intelligent check-in/check-out. They are way more efficient than the agile-y teams working with Git/Mercurial.
- rootlocus 12y agoHow often do they release? Do they do hotfixes? Do they have UAT versions? I bet they would be just as efficient using git as they are using SourceSafe (whatever that is). That's because YOU choose how you use git.
- skrebbel 12y agoExcept when it breaks. And what about feature branching? I think the name "feature branch" is an implementation detail, but I really do like that Git enables me to "only ship features that are considered somewhat 'done'", so that I can ship often yet not ship half-finished work. SVN and CVS make this notoriously difficult. So I need a DVCS. But those are all super complex. I think Git/Hg/etc are great innovation and obviously the step forward compared to SVN and friends, but I'm not convinced were there yet. There has to be a way to get the major tangible advantages of Git with the ease of use of SVN.
- lelf 12y agoDarcs. Super easy and has a formal theory behind it.
- skrebbel 12y agoGood one, it actually looks really cool. I played with it last many years ago, when there was a notorious bug that occasionally, merges would take super long because the algorithm was exponential in nature. Do you know whether things have improved on that area?
- wldlyinaccurate 12y agoI understand the sentiment, but Git is hardly meant to be a simple tool that anybody can pick up and use without any prior experience. I don't use Git just to version and share my code -- I'd use Dropbox if that were the case. No, I use Git because I want to perform complex operations on a directed acyclic graph which represents the history and structure of my project. I use it because it can be interacted with in a programmatic way, and extended to meet my needs. Git is supposed to be complicated, and you do need "Git skills" to use it properly.
- skrebbel 12y ago> No, I use Git because I want to perform complex operations on a directed acyclic graph which represents the history and structure of my project. To accomplish what? Note, I'm not trying to diss you, I really want to understand why you want to do that. I mean, I never woke up in the morning and said "woa, I really want to perform complex operations on an acyclic graph today". Maybe you and me are just different, but I usually want to make software, together with my team. I want to hack on the same software as them at the same time, so we need a way to deal with all the technicalities that make emailing ZIP files around unpractical. I want to keep track of history so that I can see why we did what when, and so that I can undo stupid mistakes. That's really all I want. I don't completely understand why I consciously need to perform complex operations on a directed acyclic graph to accomplish these things, but somehow that what I end up doing, and that makes me sad. I find it to be a horrible distraction. For me, the "D" in DVCS is an implementation detail, and I bet this holds for 90% of GitHub's paying customers.
- Ao7bei3s 12y ago> I usually want to make software, together with my team 1. Small-scale history: Developers make mistakes. When things go wrong, a clean history of small, incremental changes is priceless. Git helps you craft such a history. It's not about what actually happened. It's about helping you solve future problems. 2. Large-scale history: large projects branch. Especially commercial ones, where you need to support old versions, or maybe have custom versions for laaarge customers. Git handles this well. And it's good at helping you get identical changes into multiple branches without loosing track. > and I bet this holds for 90% of GitHub's paying customers. 90% of everything is crap ;)
- krisgenre 12y agoBecause for projects that are developed and maintained for years, with a new developer taking over almost every year, the history can be a real treasure. Developers suck at documentation ( or lack the will to do it ). History gives you clues on what was done to fix what, a glimpse of the requirement and 'Git skills' helps to keep this history clean.
- skrebbel 12y agoI'm not sure we disagree. I'm not saying "we should use Dropbox instead of Git". I'm saying "we should design a tool that makes the most common Git tasks, including tracking history, much easier so that we don't need a terminal game to learn it".
- colanderman 12y agoMaybe if its default CLI wasn't a total piece of horse shit. Seriously... some commands (like reset and show) do wildly different things based on a single flag or whether they're given an argument or not; the interpretation of arguments is by default context-sensitive (files vs. branch names); the "simple" way to do some things (revert local changes) is via a seemingly unrelated command (checkout); informational commands tend to show no useful info by default; etc. The infuriating thing is that git's internal model is very simple. It's often easier to resort to working with the files under .git/ directly than figuring out what incantation I need to do simple thing X. The only redeeming quality of the CLI is the existence of git rebase --interactive. It's one of the few commands that directly maps a user goal (editing the DAG) to a simple action (moving lines in a text file). (Yes, I know there probably are replacement CLIs. That doesn't help when I need to help co-workers do something.) Darcs is an example of a great DVCS CLI. Its commands each do exactly one thing; are well-named; only need options for the uncommon cases; and there's exactly one command for each basic operation on the repository.
- djcapelis 12y agoI got to the point where it wanted me to run a shell script without examining its contents... and that's where I just stopped. Also, I didn't use git to do any of it, but maybe that's because I'm a terrible person.
- w00kie 12y agoYeah, I had to cheat on that part and check out the file content. No way I'm running it without looking.
- jimmyboyb 12y agoYou can also try this one, its been around a while - https://github.com/Gazler/githug https://github.com/Gazler/githug
- rahij 12y agoAnybody stuck on this? -Sn The Next Clue Is: YtrydjKsYqebDoI3h bTINUeV6 pTVY8jnK2re HRwwNy25Ps6 u0YChCo5Jtw N3xkH3G nx aGo6yQTW RVZMsf3xk tBL0sG9GAR HQbyGYdqs i6dx1fyIPGJVciz8Z1NzdrvGE CKgkFauXqfKJmas cDLerWvBTRzUikmP2 0sqk2Xhie2DcIv KtCyYTlNx7WxJp6A2yox3r aJX4r7FpUhgsyGIwc prCCNx46GKVgzaerab3gXS7ieoOf1 Jp +Sn The next clue is: YtrydjKsYqebDoI3h bTINUeV6 pTVY8jnK2re HRwwNy25Ps6 u0YChCo5Jtw N3xkH3G nx aGo6yQTW RVZMsf3xk tBL0sG9GAR HQbyGYdqs i6dx1fyIPGJVciz8Z1NzdrvGE CKgkFauXqfKJmas cDLerWvBTRzUikmP2 0sqk2Xhie2DcIv KtCyYTlNx7WxJp6A2yox3r aJX4r7FpUhgsyGIwc prCCNx46GKVgzaerab3gXS7ieoOf1 Jp
- w00kie 12y agoI'm stuck at this clue though... The next clue is: YtrydjKsYqebDoI3h bTINUeV6 pTVY8jnK2re HRwwNy25Ps6 u0YChCo5Jtw N3xkH3G nx aGo6yQTW RVZMsf3xk tBL0sG9GAR HQbyGYdqs i6dx1fyIPGJVciz8Z1NzdrvGE CKgkFauXqfKJmas cDLerWvBTRzUikmP2 0sqk2Xhie2DcIv KtCyYTlNx7WxJp6A2yox3r aJX4r7FpUhgsyGIwc prCCNx46GKVgzaerab3gXS7ieoOf1 Jp
- volent 12y agosame here :(
- deleted 12y ago[deleted]
- liviuchircu 12y agoGreat game! We should make a "bash skills" game for you in return, Henry!
- finalight 12y agoI can't even get the first one...what's the answer for the first one? i thought it's "new"?
- phaemon 12y agoRun "git log" and you'll see the commit messages. Checkout the commit that makes you think of a "new programmer"
- chinchang 12y agoNeat idea to test GIT skills :D Gr8 wrk!
- danra 12y agoNice, looking forward to the sequel ;) By the way, let's say I don't "remember" which other branch contains a file at a certain path - what's the easiest way to find all other branches which contain a file at that path?
- kokonotu 12y agoI thought I was decent with Git and I fail the first task :(
- kokonotu 12y agonvm I got it
- Aissen 12y agoI kind of ruined it with my reflex to run "git branch -a" (DO NOT run this command if you want to play fairly); but I was able to complete it fairly quickly nonetheless.
- manojlds 12y ago> Clone this repository by running What if I didn't know how to git clone? :)
- mbubb 12y agoAh - how do I make sure that cpp file is safe before running a shell script which I am not supposed to read with it as an arg? (I mean this in practice - not in the course of this game)
- altoz 12y agoFun game. Just finished. May I suggest a part 2? It can include rebasing, cherry-picking, stashing and resetting, among other things.
- phatak-dev 12y agoReally nice game.