0 1 00:00:00,750 --> 00:00:01,110 All right. 1 2 00:00:01,110 --> 00:00:08,670 So whereas in the last lesson we were looking at local implementations of using Git and version control, 2 3 00:00:09,240 --> 00:00:13,530 in this lesson we're going to talk about how you can create a remote repository, 3 4 00:00:13,740 --> 00:00:20,520 so a repository that's hosted on somebody else's server or somebody else's computer by using GitHub. 4 5 00:00:20,790 --> 00:00:22,740 Now most people would have heard of GitHub 5 6 00:00:22,770 --> 00:00:28,770 and certainly by now you would have used GitHub many times in order to grab the skeleton projects that 6 7 00:00:28,770 --> 00:00:32,330 we provided for some of the tutorials and challenges. 7 8 00:00:32,340 --> 00:00:37,490 So if you haven't yet set up an account on GitHub then this is the time to do it. 8 9 00:00:37,590 --> 00:00:44,560 So head over to github.com and simply fill out this quick form to create an account on GitHub. 9 10 00:00:44,580 --> 00:00:51,430 So it's completely free and all you need to do is just confirm your email so that you can access it. 10 11 00:00:51,600 --> 00:00:54,200 Once you've done that go ahead and sign in. 11 12 00:00:54,210 --> 00:00:59,580 So once you've signed in you should be looking at this page and all we're going to do is we're going 12 13 00:00:59,580 --> 00:01:04,090 to create a repository inside the browser based GitHub. 13 14 00:01:04,290 --> 00:01:10,480 So if you navigate to this top right corner and click that plus arrow, then you can select new repository. 14 15 00:01:11,370 --> 00:01:13,340 And I'm going to call my repository 15 16 00:01:13,620 --> 00:01:14,310 same name 16 17 00:01:14,310 --> 00:01:18,000 I guess we'll call that story. And let's give it a description. 17 18 00:01:18,010 --> 00:01:28,080 Let's say 'My masterpiece.' Now by default all repositories that you create on GitHub are public. 18 19 00:01:28,290 --> 00:01:34,380 That means that anyone can see all of the files inside your save repository. 19 20 00:01:34,380 --> 00:01:41,620 So everything that you commit to your remote repository or to your GitHub repository will be public. 20 21 00:01:41,700 --> 00:01:48,110 So if you don't want that then you can select private which requires a subscription on GitHub. 21 22 00:01:48,300 --> 00:01:53,730 But in most cases if you're not doing anything that's top secret or if you're not developing technology 22 23 00:01:53,730 --> 00:02:00,430 that is completely brand new, then having a public repository is not such a big problem. 23 24 00:02:00,660 --> 00:02:06,510 And on the other hand as well you can see loads of other people's public repository and you can see 24 25 00:02:06,510 --> 00:02:08,930 for example how they structure that code, 25 26 00:02:09,000 --> 00:02:10,660 what is their style 26 27 00:02:10,860 --> 00:02:12,770 and you can see how people do things. 27 28 00:02:12,900 --> 00:02:19,950 So for example on GitHub there are whole repositories on things like swift flappy bird. 28 29 00:02:19,950 --> 00:02:27,680 So it's the entire implementation of flappy bird in Swift and you can run it in a simulator or 29 30 00:02:27,720 --> 00:02:35,200 you can also look through their code base to see how they did this. So this is the beauty of open source 30 31 00:02:35,200 --> 00:02:35,770 code. 31 32 00:02:35,830 --> 00:02:43,270 And as you develop in your journey of becoming a developer then you might find that you want to contribute 32 33 00:02:43,390 --> 00:02:45,310 to other open source projects, 33 34 00:02:45,430 --> 00:02:51,340 help them out a bit and work in a virtual team to try and contribute your knowledge and your programming 34 35 00:02:51,340 --> 00:02:52,450 skills. 35 36 00:02:52,480 --> 00:02:58,860 Oay. So now once I've selected public, the next thing is that I'm going to leave this part empty. 36 37 00:02:58,960 --> 00:03:03,000 I'm not going to initialize a read me from my repository just yet. 37 38 00:03:03,340 --> 00:03:09,200 So the next thing is I'm going to go ahead and click the big green button and create my repository. 38 39 00:03:09,670 --> 00:03:16,130 So now you can see that there are two ways that they tell you you can set up your repository. 39 40 00:03:16,360 --> 00:03:23,830 You can either set it up in GitHub for Mac on desktop their desktop client which I am not a big fan 40 41 00:03:23,830 --> 00:03:24,110 of. 41 42 00:03:24,160 --> 00:03:30,100 But instead what we're going to do is we're going to use the command line instructions to set up our 42 43 00:03:30,100 --> 00:03:31,050 repository. 43 44 00:03:31,240 --> 00:03:38,860 So we are going to push an existing repository that we've got locally onto this remote repository and 44 45 00:03:38,860 --> 00:03:45,230 to do that we need to copy the address of our GitHub repository 45 46 00:03:45,610 --> 00:03:53,230 and we're going to use these two lines of code in order to transfer or push our existing local repository 46 47 00:03:53,500 --> 00:03:54,730 from the command line. 47 48 00:03:54,730 --> 00:04:00,670 All right. So I'm currently inside my story directory which also happens to be the working directory 48 49 00:04:00,940 --> 00:04:02,530 for this particular project. 49 50 00:04:02,860 --> 00:04:10,450 And here I am going to again take a look at git log to see what previous commits we've got. 50 51 00:04:10,600 --> 00:04:12,990 And you can see that we've got two previous commits. 51 52 00:04:13,060 --> 00:04:17,750 And I would like to push both of these commits on to GitHub. 52 53 00:04:18,070 --> 00:04:26,050 So to do that the first thing is creating a remote. So it's telling my local Git repository that I've 53 54 00:04:26,050 --> 00:04:35,140 created a remote repository somewhere on the Internet and I want to transfer all of my commits over 54 55 00:04:35,140 --> 00:04:35,530 there. 55 56 00:04:35,710 --> 00:04:40,830 So the command that we're going to use is git remote add origin. 56 57 00:04:41,020 --> 00:04:48,130 Now origin is simply the name of your remote and you can theoretically call it anything you want. 57 58 00:04:48,130 --> 00:04:50,430 You can call it bacon if you want. 58 59 00:04:50,710 --> 00:04:57,880 But by convention and it's highly recommended that you simply keep the name origin and the reason is 59 60 00:04:57,880 --> 00:05:04,840 because most programs are used to the conventional naming and that means it will be much easier for 60 61 00:05:04,840 --> 00:05:09,580 them to understand what's going on in your projects when they have a look at it instead of you doing 61 62 00:05:09,580 --> 00:05:14,500 something completely different which will be very surprising and will be a lot harder for people to 62 63 00:05:14,500 --> 00:05:16,080 understand what's going on. 63 64 00:05:16,390 --> 00:05:24,760 So gid remote add origin and then we're going to paste the URL of our remote repository on Git 64 65 00:05:24,760 --> 00:05:27,830 Hub and then we're going to go ahead and hit enter. 65 66 00:05:28,630 --> 00:05:36,880 And now that remote is created so we can push our local repository onto our remote repository which is 66 67 00:05:36,880 --> 00:05:38,150 called origin. 67 68 00:05:38,290 --> 00:05:44,920 So we're going to say git push -u origin master. 68 69 00:05:45,220 --> 00:05:52,840 And what this line of code does is that it pushes your local repository to the remote repository using 69 70 00:05:52,840 --> 00:06:01,180 the u flag or the u option which basically links up your remote and your local repositories. And then 70 71 00:06:01,360 --> 00:06:06,610 we're going to push it towards the remote that's called origin and we're going to push it to the branch 71 72 00:06:06,640 --> 00:06:08,650 that's called master. 72 73 00:06:08,650 --> 00:06:15,410 So the master branch is simply the default branch or the main branch of all of your commits. 73 74 00:06:15,520 --> 00:06:21,340 And later on when we cover branching, then we're going to talk more about what is a master and what is 74 75 00:06:21,340 --> 00:06:22,130 a branch. 75 76 00:06:22,150 --> 00:06:28,750 But for now we're just saying that we're going to push our local repository onto this origin remote and 76 77 00:06:28,780 --> 00:06:30,810 we're going to push it to the master branch. 77 78 00:06:30,880 --> 00:06:33,140 So let's go ahead and hit enter. 78 79 00:06:34,030 --> 00:06:38,680 And there's going to be a little bit of work being done in the background because it's actually going 79 80 00:06:38,680 --> 00:06:46,450 to have to upload your local repository to the remote repository on GitHub servers and depending on 80 81 00:06:46,450 --> 00:06:52,320 the size of your local repository this can take various amounts of time. 81 82 00:06:52,330 --> 00:06:54,570 So now once we see our prompt, 82 83 00:06:54,610 --> 00:07:00,150 so the flashing cursor or the dollar sign, that means our push is successful. 83 84 00:07:00,490 --> 00:07:06,350 And as you can see it says, 'Branch master set up to track remote branch master from origin' 84 85 00:07:06,370 --> 00:07:12,670 Sounds really confusing but if you head back over to GitHub and if you're on the same page, all you 85 86 00:07:12,670 --> 00:07:19,720 have to do is hit COMMAND + R to refresh or just press the refresh button and you can see that all of 86 87 00:07:19,720 --> 00:07:27,370 our files are now hosted on GitHub and it's complete with all of our commit messages. 87 88 00:07:27,400 --> 00:07:35,810 So if you go to insights, graphs and go into network, you can actually see our mass the branch which currently 88 89 00:07:35,870 --> 00:07:42,290 only has two save points or to commits. If you hover over them you can actually see the commit messages 89 90 00:07:42,320 --> 00:07:43,640 of each of these. 90 91 00:07:43,670 --> 00:07:50,720 So as you build out your project, as you add more commits either locally or pushing it remotely or probably 91 92 00:07:50,720 --> 00:07:56,870 doing both, then you can see the progress of your files in your GitHub repository. 92 93 00:07:56,870 --> 00:08:05,400 So now you can see all of the code if it's code file or in all cases just a text file, hosted on Git 93 94 00:08:05,410 --> 00:08:08,510 Hub and you can point anybody towards this. 94 95 00:08:08,570 --> 00:08:14,780 And there are actually cases where people do a lot of story writing using GitHub just because it's 95 96 00:08:14,780 --> 00:08:22,100 so good at tracking your save points and being able to revert to previous versions in the past. 96 97 00:08:22,100 --> 00:08:30,110 So for example, if you head over back to the main page and you go to your commits, you can see both of 97 98 00:08:30,110 --> 00:08:32,520 those commits when they were committed 98 99 00:08:32,690 --> 00:08:38,540 and also if you click on it you can see the version-- you can see the changes that were made at those 99 100 00:08:38,540 --> 00:08:39,220 time points. 100 101 00:08:39,260 --> 00:08:45,500 So if we have a look at chapter 1 you can see this is all we had at the point when we made our first 101 102 00:08:45,500 --> 00:08:46,250 commit. 102 103 00:08:46,250 --> 00:08:52,340 So previously we said that we have a working directory which is the directory where we initialized Git. 103 104 00:08:52,550 --> 00:08:58,380 Then we can push our files to a staging area where we can pick and choose which files we want to commit. 104 105 00:08:58,520 --> 00:09:06,560 Then once we're ready then we can commit our files or save safe point to our local repository. 105 106 00:09:06,560 --> 00:09:13,130 So once you've done a few commits then you actually have this timeline of various commits. 106 107 00:09:13,340 --> 00:09:16,540 And this is called your master branch. 107 108 00:09:16,610 --> 00:09:23,840 So the master branch is your main branch of commits or save points and it is sequential. 108 109 00:09:23,840 --> 00:09:29,900 And this is usually where your main progress is saved or committed. 109 110 00:09:29,900 --> 00:09:36,240 Now later on we then introduced this idea of the remote repository. 110 111 00:09:36,260 --> 00:09:42,200 The important thing to note is that you can have a local repository completely in parallel with a remote 111 112 00:09:42,200 --> 00:09:43,040 repository. 112 113 00:09:43,100 --> 00:09:49,100 Check the differences between them but you can also sync them so that they all the same. 113 114 00:09:49,100 --> 00:09:54,450 But you can also sync them or push things from your local repository to your remote posturing. 114 115 00:09:54,560 --> 00:10:02,300 So in our case, the local repository is the git file that we've got inside our story directory and the 115 116 00:10:02,300 --> 00:10:10,460 remote repository is the git directory that we've got inside our story directory and the remote repository 116 117 00:10:10,580 --> 00:10:17,750 is GitHub which hosts our code and also host all of the changes that were made in between the different 117 118 00:10:17,750 --> 00:10:18,290 committees. 118 119 00:10:18,320 --> 00:10:24,650 So we have this master branch of various commits first commit, second commit, third commit in our local 119 120 00:10:24,680 --> 00:10:32,750 Git repository and when we performed the command git to push, then that effectively pushed all of those 120 121 00:10:32,810 --> 00:10:42,290 commits, all of those various versions and changes and code pieces to our remote repository on GitHub. 121 122 00:10:42,290 --> 00:10:45,030 So that's what Git pushed us. Now in the next lesson 122 123 00:10:45,050 --> 00:10:50,630 I want to talk about using git ignore and how you can avoid uploading sensitive pieces of information 123 124 00:10:50,900 --> 00:10:56,690 such as API keys or passwords to your remote repositories for example GitHub. 124 125 00:10:56,780 --> 00:10:59,280 So all of that and more on the next lesson, 125 126 00:10:59,300 --> 00:10:59,840 see you there.