It's time to take control of your terminal! This course teaches you about tmux's pane and window management, session management, copy-paste, and more. This trail is a no-brainer for those who live in the terminal (and especially Vim users). **No prior tmux knowledge is required.**
It's time to take control of your terminal! This course teaches you about tmux's pane and window management, session management, copy-paste, and more. This trail is a no-brainer for those who live in the terminal (and especially Vim users). **No prior tmux knowledge is required.**
Learn about the various ways to configure and extend tmux's behavior including defining custom key-bindings, tweaking the interface, and setting options to match your desired workflow.
Learn to create, organize, and efficiently navigate between tmux's panes, windows, and sessions as well as how to interact with scroll back and copy & paste.
Integrate Vim and tmux by unifying navigation within and between them, optimizing window layout, and sending commands from Vim to tmux.
Learn to efficiently create and destroy panes for one-off tasks, navigate between sessions with fuzzy matching, build prompted key-bindings, never leave tmux, and get a sense of what is possible beyond tmux's default behavior.
Learn how to make the best use of tmux's man page and help, as well as where to find additional online resources to continue learning your learning.
Got the basics of Git down? **Master it in just a few hours with this course.** Git Wizardry is closer than you think, and your instructor Chris will help you get there rapidly with this series of 11 videos and extensive notes.
Got the basics of Git down? **Master it in just a few hours with this course.** Git Wizardry is closer than you think, and your instructor Chris will help you get there rapidly with this series of 11 videos and extensive notes.
"Who the heck changed this code, and why?" Git knows the answer—we'll show you how to find it. This step covers the many ways to slice and dice your Git history when you need answers, fast.
Made a typo in a commit message? Forgot to do your work in a branch? Not to fear. Chris'll show you how to easily fix up the simple errors that are (sadly) a constant in the life of a professional developer.
You refactor your code, why not your Git history? It's time to take control and make that history squeaky clean. If you're tired of ugly merge commits, this step is definitely for you. Chris covers selective staging, cherry picking, and the many ways you can rebase.
It's time to open the hood, pull back the covers, and participate in other revelation-related metaphors. This step does a deep dive into Git's internal object model. Madness, you say? Once you understand how Git is put together, your relationship with Git will permanently change for the better.
This is like part 2 of the previous step. Now that you understand the underlying objects in Git, it's time to connect the various Git commands you already know to what they do to those objects.
While Git is awesomely powerful, it does have a number of UX rough edges. The good news is that Git is tremendously configurable. This step will teach you how to take a belt sander to the rough bits, and build a Git workflow that's smooth as butter.
Git really shines when you start to connect it to other things, like GitHub and Heroku. This step dives into useful command-line tools, aliases, and tips for managing these remote interactions.
Git and Vim: two great tools, even better together. You're probably already writing your commit messages in Vim, but it's time to start diffing, blaming, fixing merge commits, and more. This was the lesson that Chris was born to write.
You've done a lot of learning, now it's time to put it all together. This step will touch on everything covered so far in the process of developing a small feature on a Rails app. If you've ever wondered how a thoughbot developer uses Git in the real world, this one is for you.
You now definitely know enough Git to be a confident, productive developer. But while we've covered a lot, you might someday need specialized knowledge on a narrow Git topic. These are our favorite resources to continue your learning.


In this video, Chris shows off his highly-efficient programming workflow.


In this week's video Chris is joined by Derek Prior and they run through...


Ben and Joe review several pull requests against the Learn database, pointing...


In this week's video, Chris is joined by Josh Steiner to discuss the git and...


Intro to Dotfiles In this weeks episode, Chris & Gabe dive into the...


In this week's episode, Chris is joined by Gabe Berke-Williams to discuss...


On this episode of the Weekly Iteration, Chris and Ben discuss the...


In this episode, Ben and Joe demonstrate the ping-pong approach to pair...


Learn how to debug confusing test failures using interactive tools like byebug.


Internationalization (i18n) is well supported in Rails.


On this week's episode, Chris is joined by thoughtbot CTO Joe Ferris...


By popular demand, Ben and Joe return with the "Ship A Feature" series.


In this episode, Ben and Joe extract a matcher written in a project and...


In this episode, Ben and Joe ship a feature from start all the way into...


In this episode, Joe demonstrates his setup for development including: How...


In this episode, Ben shares a story of how he screwed up but still had some...


What are Command Line Utilities To start, when we say "CLI" or "command line...


Opening the DevTools There are a handful of ways to get into the DevTools,...

Gitsh is an open-source project by thoughtbot.