Transcript from the "Course Agenda" Lesson
>> Nina Zakharenko: Just a little bit about Git. I'm sure some of you [LAUGH] have felt this way before. This is a classic XKCD comic.
>> Nina Zakharenko: So how do we use it? No idea, just memorize the Shell commands, type them, sync up. Something goes wrong, just blow up the project, delete it, copy it, download a fresh copy.
[00:00:22] Have you felt like this? Yeah, lots of emphatic nodding in the room.
>> Speaker 2: I did that yesterday.
>> Nina Zakharenko: You did that yesterday?
>> Speaker 2: [LAUGH] Yeah.
>> Nina Zakharenko: Are you excited to never have to do that again?
>> Speaker 2: I am.
>> Nina Zakharenko: Good, you're in the right place. [LAUGH] I have also been here.
[00:00:38] It's a sad place, and so you think, I'm gonna help myself. I'm going to open a manual page, and then let me read about the internals of Git. Well, it might look something like this, git-acquire-pack Manual Page. Acquire the non-remoted applied packs to some blamed unstaged logs. And you're like, what does this even mean?
[00:01:04] So, this is a joke website. It is a git-man-page-generator. It does a pretty good job. They had to put a big warning at the top to tell people that hey, this is not an actual git-man-page, [LAUGH] but it's pretty good. If you have some free time, I recommend clicking around.
>> Nina Zakharenko: So, the goal of this class is to talk to you about the porcelain of Git versus the plumbing of Git. So, the porcelain is the interface. It's the commands that you type into the terminal to interface with Git. Git branch, Git add, Git commit. The plumbing is how Git works under the hood.
[00:01:56] So I assume you have a familiarity with those basic porcelain commands. But I want you to be able to leave the workshop and immediately implement some of the ideas that we've gone through in your workflow. So by understanding what's going on under the hood, you're gonna have a much easier time troubleshooting, debugging problems and just conceptualizing what's going on in Git.
[00:02:25] Towards the end of the class, I wanna show you some tools that I use in my daily work, and it's gonna supercharge your daily work flow. It's really easy to talk about the theoretical. I mean, you can spend weeks, even months, trying to learning about Git. Learning about all the different nooks and crannies.
[00:02:48] People use Git in different ways with different goals. So my goal is to give you enough of a foundation of the plumbing so that you can understand, have an easier time deep diving into the tools and features that you personally find useful for your personal work flow.
>> Nina Zakharenko: So class overview, we're going to be doing exercises at the end of almost every chapter.
[00:03:16] The exercises are gonna contain any of the relevant commands that you might need. So don't worry about trying to write things down while we're looking at the slides. You have a copy of the slides on your computer. They're on the Git. That repository is not going away. So try to kind of focus on the content instead of writing things down.
[00:03:36] It's all available for you. Some of the example code is gonna be in Python. So if you don't know Python, don't worry about. We're really focusing on Git, and not the programming language. And I can walk you through what the code is doing. In Part 1, we're gonna go through, what is Git?
[00:03:58] How does it work under the hood? Next, we're gonna dive into the working area, the staging area, and the repository, the three main areas where Git stores your code. We're gonna do a deep dive into the staging area. We're gonna talk about references, commits, branches, and stashing.
>> Nina Zakharenko: Then merging and rebasing, history and diffs, fixing mistakes, rebase,
>> Nina Zakharenko: The command that everyone's afraid of, forks and remote repositories. And in the final part of the class we're gonna talk about the danger zone. So how you can really mess things up and some strategies for recovering. We're gonna talk about some advanced Git tools. We're gonna talk about how to customize your Git configuration.
[00:04:52] How to set up global ignore files, Git Hooks, Git Templates. And in the last two sections, we're gonna focus on GitHub, so the social version of Git, how to integrate with GitHub and continuous integration tools. And in the final chapter we're going to work with the GitHub API.
>> Nina Zakharenko: First, I really want to drill in why it's important that we use the command line for this class. Because there are lots and lots of graphical Git tools out there that show you pretty visuals and they let you double-click to edit. And drag things around and drag and drop commits and do all sorts of other wizardry.
[00:05:40] And so now the people in the room are sitting here looking at me like great, why am I even here? [LAUGH] I should just go download one of these tools and all my problems will be solved. Well, that's not the case, bad news [LAUGH]. If you start out using Git with one of these graphical tools, you're really never going to fully understand what's going on under the hood.
[00:06:02] And you'll just be left in the dust when it comes to fixing mistakes. To truly get Git, you have to use the tools as they were designed. And to do that you need to use Git on the command line. I like to think of some of the graphical Git GUI tools as putting lipstick on a pig, still a pig.