GitHub Foundations Certification Course – Pass the exam in 10 hours!

185.25k views106135 WordsCopy TextShare
freeCodeCamp.org
Learn about GitHub and pass the GitHub Foundations exam! Learn the core concepts of collaborating, ...
Video Transcript:
hey this is angrew brown over here at exam Pro bringing you another complete study course and this time it's the GitHub foundations certification this one's all about GitHub and practicing some of your git skills and this is a great certification if you're looking to show your developer skills in the cloud or Tech the way we're going to help you get the certification as always is the lecture content doing Hands-On labs and giving you that free practice exam so you can go as that exam get that certification and put it on your resume I want to
point out if you love these kinds of courses the best way to support more free study courses is to buy the paid additional materials that is optional but you'll get uh things like cheat sheets U more pratice exams and other things like that so I just want to tell you that I've taught a lot of different kinds of certifications in cloud and in Tech you name it I've taught it we got adab us Azure gcp terraform kubernetes and more more and obviously now GitHub and if you're wondering why I'm in a snowsuit it's because my
office it's really cold it's like7 so this is how it has to be but I will see you in class in two seconds [Music] ciao hey this is angrew Brown from exam Pro and we're at the start of our journey asking the most important question first which is what is the GitHub Foundation certification well it is an entrylevel GitHub certification teaching you Git Version Control Basics working with GitHub repos collaboration features modern development project management uh GitHub privacy Security Administration GitHub community and open source now I put in Git Version Control Basics but uh they
don't really required in the uh certification itself but you will implicitly learn them as you work through uh this course The Unofficial course code uh for the certification is ghf because there are no course codes uh that GitHub has published so I've used the um small initial initializations that they use on their um certification page GitHub is the leading uh Version Control service in the world it's one of the most common ways for developers to Showcase their code uh if you go for developer interviews a lot of times people want to have your GitHub link
so they can see your activity um and your code so who's the certification for well consider this certification if you are new to Cloud programming and need to learn Version Control fundamentals um more like Version Control workflows online I I would be better to say uh you're a non-developer uh at Tech role so you are in Tech but you're just a non-developer looking to quickly add developer skills uh you want to be effective uh collaborating on code bases with other developers this GitHub certification will not test your git skills it's focused on GitHub you will
use git but you may have serious gaps in git knowledge um to be used in a uh work or production environment so make sure you polyfill that information where you can um in terms of the road map they have four certifications the foundation the advanced security the actions the admin and this is where I would put them in terms of difficulty they don't um categorize them into levels but uh you level 100 I would say the foundations is is very easy um the advanced security I put it at 150 because it looks like an extension
of the foundations focusing on the security features actions is very technical so a level 200 makes sense an admin is I wouldn't say hard but it goes into Enterprise so it's harder to get access to the Enterprise account and test it out and you have to understand Enterprise Concepts so I put it the level 300 uh there's a lot of different routes you could take you could go from the level 100 uh or sorry the get foundations to Advance Security to the admin or the foundations to the actions to me the advanced security seems like
such little effort to do that it seems like a good follow-up or something you should do at the same time uh if the content's available to to um study when doing GI GitHub foundations uh if you're looking for particular roles you could probably say the cloud security engineer is where you'd go for the advanced security so You' start with the foundations for all of them go there if you want to be a cloud developer GitHub actions is super useful because it's a cicd pipeline and it's becoming one of the most popular cicd pipelines out there
if you're an Enterprise engineer then the administrator is good for having that Enterprise knowledge if somebody wants to run GitHub uh there but you know these are just titles you're not going to actually have that role from completing these certifications it's just part of uh content for those particular roles um get up certifications do not validate programming technical diagramming code management other technical skills that are required for obtaining technical roles so just understand the limitations of these certifications they are useful for learning but understand that uh it it stops at a certain place okay how
long should you take to pass if if you're a beginner uh and you've never used GitHub before and you've never used git or written code before and you're new to to Cloud in Tech maybe 20 hours um there is no uh historical information about this certification because it's brand new and I'm the first one with a study course out so we'll say 20 hours is a sufficient amount of time uh for experienced folks um if you have practical knowledge working with GitHub if you have technical knowledge working with Git uh you have strong background in
technology worked in a technical developer role it's going to be 4 hours if you're an if you're in a technical role but just not a developer you might be more in the middle um and so I would probably say 14 hours of average study time 50% lecture 50% Labs uh or sorry 50% lecture in labs and then 50% practice exams that's usually always the same thing I always say and one to two hours a day for 14 days if it's 14 hours you can do an hour a day and you'll be in really really good
shape what does it take to pass the exam watch the video lecture and memorize key information this exam in particular is very fact toal and unfairly so so make sure where I call out fact toal information to memorize it because it is silly and you'll lose points for that do the Hands-On Labs it's going to really help cement how all this stuff works together and even though the exams don't really require it I I want you to have that knowledge and I want you to have an easier time passing so please do the follow follow
alongs do paid online practice exams because this one in particular again it's very fact toal and you need to see some variations so you don't get caught off guard if you think that you go through my course and go I'm really good at GitHub now uh you'll be thrown a bunch of Enterprise questions and stuff that you didn't think that would be there and in particular what information's there so make sure you utilize practice exams make sure you utilize my free practice exam which will come out with this um and you'll do fine again not
a hard exam but you know I don't want you to be frustrated on that exam losing out some particular points because you didn't know that you had to know the uh uh the lineup of GitHub work uh workflow actions inside of uh GitHub projects or something like that there are seven domains for this certification and I need to point out that for some reason GitHub uh does not share the waiting of each domain most exams do that and my experience when I sat the exam it was kind of imbalance where I had a lot of
Enterprise questions so just understand that you might not even see a question in the domain that you are expecting or you might have very few a lot in other areas I don't know why they did this it was a bad choice but that's what they did we have seven domains we have support uh GitHub Enterprise for users and key stakeholders uh domain two manage user identities and GitHub authentication uh domain three describe how GitHub is deployed distributed and licens domain four manage access and permissions based on membership domain five ensure or sorry enable secure software
development and ensur compliance domain six manage GitHub actions domain seven benefit of benefits of the GitHub Community there's no development stuff in here but I've crammed in the exam development stuff because you really should know development stuff and GitHub is a developer platform for some reason they decided not to include it in here but I feel that it really makes it easier to utilize GitHub if you know the developer tools uh where do you take this exam at an in-person test center or online from the convenience of your own home GitHub delivers it with PSI
um so PSI has an online version and then they have a a bunch of test networks that they partnered with um it is a it it is a proctored exam so there's somebody that's supposedly watching your exam so that you do not cheat I just want to warn you PSI is not known for having a good test experience when I saw at my exam um uh I was 30 minutes early checked in and uh I waited 40 minutes after my check-in time because it said it was connecting me to a special specialist it never did
I had to contact support they uh they made me uh fill in a bunch of information which seemed weird because they should know who I am already cuz I'm in their app and then they told me oh I'm not actually connected to anybody and so the app lies to you so don't get stressed out if you have technical issues with PSI it's extremely common and uh if you're doing it online if you can do a test center I strongly recommend doing so because it just makes the whole experience a lot less stressful from the environment
perspective from uh the technology perspective but if you got to do online just uh don't stress out and understand that everybody has these issues uh doesn't make sense but everyone has these issues and not to not to to sweat it or throw you off before your exam starts in terms of grading they don't give us a grade GitHub does not provide a passing score we don't know how many points there are we do know how many questions there are but uh for some reason they've decided not to provide that information uh they say in their
FAQ because they can't exactly calculate it they don't want to give you an inaccurate number it really makes no sense but I'm going to tell you that you still will pass pass this exam it's not that hard but yeah you just have to make sure that you can get get as many points on those fact total questions and don't stress out about not knowing what your passing score is there are 75 questions in this exam 60 scored 15 unscored so you can afford to get 15 questions wrong at least there is no penalty for wrong
questions at least as far as I'm aware of and I saw U both multiple choice and multiple answer uh sometimes it was choose two choose three it was never more than three there wasn't that many multiple answer uh like basically multiple select ones so it wasn't that bad don't stress out about the unscored questions because there's 15 of them they don't count towards your exam why is there unscored questions uh they're used to evaluate the introduction of new questions to determine if the exam is too easy and the passing score or question difficulty needs to
be increased to discover users who are attempting to cheat the exam or still dump exam questions if you encounter questions you've never studied for that seem really hard keep your cool and remember they may be unscored questions the duration of this exam is 2 hours so you get 1.6 minutes per question so that exam time in minutes is 120 Minutes your C time is uh 30 minutes or sorry 150 minutes because you add 30 minutes there when I say see time that's the time you need to go in and check in and re review the
instructions and get your workspace set up and sign the NDA and show them your space um provide feedback at exam uh I was able to check in 30 minutes online prior you you probably want to be 45 minutes prior to your exam okay so give yourself a few minutes to get set up and try to check in early sometimes they let you start exams early right so even if you're scheduled for 5 uh sometimes 5 minutes after your check-in you can start and get rolling on it but uh yeah there you go and we'll see
you in the next one [Music] ciao hey everyone it's Andrew Brown in this uh video I want to show you uh where you can get uh the exam guide and other additional information so you can understand where I'm getting this stuff and make sense of it yourself and you might hear my space space heater here I have the tiny space heater to keep my feet warm my hands warm so sorry if the background noise picks up but let's go take a look so the way you can get to this is you just type in G.I
certifications love the short link by the way and I mean they have stuff down here below but what you really got to do is go to register and then connect your account and it'll do something with GitHub and then you'll see this stuff here okay now I want to point out that um they have an FAQ down below uh I guess they have a candidate handbook which is something I don't even sure if I open that [Music] up this is more about like how to run stuff yeah okay not really useful but um what we're
looking for is the exam guides okay so if we were to go into the foundations which is this is the certification we're focused on you can see the price here it says you pass with the exam of 82% hooray I actually can see my score now I didn't know where that was you can't see it I'm trying to move my head here not sure why uh it's not letting me do that there we go and so I actually got an 82% which is pretty good considering I thought I flubbed a bunch of questions but that's
pretty good remember there is no study course or practice exams before I took this um so that's great but they really should tell us the the non-p passing score so if we go down H to FAQ okay and we look up passing score since there are multiple versions of the certification exam the passing score can have minor variances depending on which version you take to ensure the Integrity of exams to avoid confusion on why there is a small variance will not provide you a specific total score and I mean I think that's kind of a
failure of uh any kind of certification program I think that would be very frustrating for the person taking the exam not knowing what the score is but again again I passed it so I'm just telling you like you will pass it but understand that they're just not going to tell you what it is at least not at this time so that's one thing that I found uh stood out there but let's go back over to here and we have the learning path which is on Microsoft learn they might have some content that um that gets
covered a little bit differently here I found it not to be uh very good but there was some stuff about like Enterprise um that I don't really go much more into detail where they're talking about like bringing identities it might be this right so again I didn't I didn't look at this until afterwards so yeah I don't really go this full top into this um I do like UFA but um you know you might want to top off in that one section here but the rest I don't know about the rest like in terms of
quality it's it's not uh it's not there um so let's go into the study guide and we'll just open that up okay and we have our domains so we have our seven domains and if we go and scroll on down we can see they have git and GitHub Basics so they have like a little bit about expect you know about git like commit and branching um I made sure to include other things like what is remote uh I don't know I have a big list of it it's in the uh we have a uh a
git and GitHub quick and dirty crash course to get you through all that stuff we have uh GitHub ident identities so understanding the different types of accounts GitHub markdown what's unusual is like they talk about GitHub markdown but they don't talk about GitHub flavored markdown really odd they have a markdown section but not that GitHub flavored markdown Is Amazing by the way you have GitHub desktop you have GitHub mobile um coming down here all about how to work with GitHub repos um how to work with issues how to work with pull requests how to work
with discussions how to work with notifications I don't I even got a question on notifications on my exam uh gists wikis and GitHub Pages nothing on GitHub Pages surprised it didn't promote that a bit more I really like GitHub Pages we have GitHub actions um in this for GitHub actions you know you need to know a little bit about the syntax of the file because I was getting very specific questions about that um co-pilot so we have co-pilot we have code spaces I actually was surprised how little there was on codes spaces but I do
do a very thorough CH job of covering codes spaces with us because we need to you utilize it to be effective and so we get a lot more knowledge in that than expected we have uh GitHub projects um it's weird because they say GitHub projects but it's really project management so like labels and Milestones aren't specific to GitHub projects so I kind of broke that up into a different area there and there was some other things that were Project Specific that um um that I uh that I had to put in here and things that
I didn't what's weird about GitHub projects is they need they want you to know very specific things like they want you to know um the types of built-in workflows right the types of of charts and that kind of threw me off because they seem so trivial to know but they asked you in the exam so I was surprised this thing is not specific to GitHub projects I'm not sure why they put it in there um but anyway and this this as well so I'm not sure why these are in here or even create template repos
these all these here shouldn't be in this section but they are uh we have privacy priv privacy Security Administration so we have a few here uh for uh security then we have GitHub admin rtion I might call it administrator I'm not sure why but I might messed that up this is supposed to be about like the management of your repo I actually covered a lot of it in the GitHub repo section so I end up repeating the content a little bit we have the benefits of the GitHub community so knowing what sponsors is what is
open source what is github's relationship with open source um inner source and there you go so yeah I would say that again it's not a hard exam um and I really make sure that you're super prepared for it just make sure you do do uh uh some practice exams just so you don't get caught off and lose some points on that factal information but there you go [Music] okay hey this is Andrew Brown I'm just going to do one ask of you if you can uh if you if you like this course and it helped
you out they have this program called GitHub stars and they basically recognize people that did good work uh uh promoting GitHub or educating and communities I think I'm doing that because I'm making a free course and if you want to do me a favor you can go get here to the nominate up at stars. github.com you can say I nominate and it would be like Omen King because it would be something about the actual uh you know like I taught you GitHub and you thought that was really great and I really great greatly appreciate that
and you know maybe that way I will go make more of GitHub content and we can help the community more so there you [Music] go hey this is angrew brown and we are taking a look at Version Control Systems which are designed to track changes or revisions to code and there's been a lot of software over the years that helped us do that we had CVS aers mercal and get so back uh in 1990s when we got CVS though even though we had it I don't think a lot of companies were using it it took
some time to adopt if you ever heard of like Doom or Wolfenstein you'd be uh interested to learn they didn't use Version Control Systems and what they would do is they would literally copy files onto floppies and hope that they don't lose their files but of course AV Version Control Systems makes it really easy to not worry about losing floppies or CDs or drives because they keep track of all the history then came subversion in 2000 but the real game Cher was in 2005 when we were introduced to a new type A version control system
and we had Mercurial and get um but the key difference between the old ones and the new ones was the old ones were centralized and the new ones were decentralized and these decentralized ones became very popular for very specific reason reasons they had full local history and complete control of the repo locally they were straightforward and efficient for branching and merging which was a really big deal uh better performance improve fall tolerance flexible workflows work fully offline um and out of the two git was the one that won and there are reasons for that we'll
talk about that when we look at version control services um but uh yeah git is the one that everybody is using today and that's why we are taking this course I just want to point out they're going to come across a lot of terms that sound like trees tree trunk branches um the reason for this is that Version Control represents um the revisions or changes in a graph-like structure you can even say a dag um if you're familiar with that and so uh you know you'll see these terms and we're not talking about real trees
we're talking about uh the components of a verion control so there you go [Music] hey this is Angie Brown and we are taking a look at git so git is a distributed Version Control System a dvcs that's going to be hard to remember uh and it's created by lonus torold if you've ever seen that name before you might know that lonus is the creator of the Linux kernel but he is also the creator of git and git right now resides with the Linux Foundation which I believe is a nonprofit set up by Linus as well
or has some a part to do with it where a lot of Open Source projects reside um but you know I don't really want to focus on that I want to focus on the practicalities of git so the idea with Git is that each change of your code a git commit can be captured and tracked through the history of your project a git tree so I'm going to get my pen tool out here for just a second and so I just want to make this very clear so we have over here a file and a
get commit can or a commit can be made up of multiple files with multiple changes in them and then they're represented over with a a a message okay so here this is a single um git commit and it can have multiple files and uh files and changes in that single one and then that's your tree okay so hopefully that is clear if it's not don't worry we'll get Hands-On skills and we'll definitely be able to remember them later I want to take a look at a bunch of common get terms um and it doesn't matter
if you remember these now but you will know what they are hopefully by the end of this course um and so there is this nice graphic here that is provided by Wikipedia that gives an idea of how all of these terms uh work together uh but let's go quickly through them and see what we can make sense of so the first term is a repository this represents the logical container holding the codebase in fact you you could interchange the word codebase repository and mostly mean the same thing we have a Commit This represents a change
of data in the local repository and so um that's pretty clear then we have the tree this represents the entire history of a of a repo so when you see tree just think of that graph we have remote uh this is a version of your project hosted elsewhere used for exchanging commits uh some people might be a bit uh picky about this because they might say remote is actually a remote reference to a repository so it's pointing it's a pointer but I'm just going to make it think that it's a remote uh repo it's just
somewhere else and there uh there are branches so these are Divergent path to development allowing isolate Chang you're absolutely going to know what branches are you're absolutely going to have to work with them quite a bit um there is a branch known as Maine it was formerly known as Master uh the word was changed because it was not a popular term anymore and so now main is the new name uh and this is usually the default Branch or the base Branch uh if that makes sense there too so we have clone this creates a complete
local copy of a repository including its history so this will create like a littleg folder um so it's not just the contents of the files but some configuration around the git repo we have checkouts so this switches between different branches or commits in your repo we have pull so this downloads changes from a remote repository merges them into your branch we have push this uploads your local repository changes to a remote repository we have fetch this downloads data from a remote repo without integrating it into your work um we have reset so undoes local changes
without options to unstage revert commits we have merge this combines multiple commit histories into one we have staging files this prepares and organizes uh changes for commits it's not a command but like it's just where you would work with your files um in the uh example here I'm just going to get my pen tool out again it's kind of over here it has to relate with this up here as well and So within staging files we're going to have commits which we already talked about prior and then there's that add command so adding things that
will get committed so hopefully that makes sense and we'll see you in the next one [Music] okay hey this is SRE Brown and we are taking a look at version control services and if you're thinking that we already covered this it looks that way but the other one was Version Control Systems this one is version control services and yes they have the same initialism which is confusing but it's very important to make that distinction because those are two separate things so version control services are fully managed services that host your version controlled repositories these Services
often have additional functionality going Beyond just being a remote host for your repos git is the most popular and often the only choice for a VCS and we often call these get only uh providers get providers um I need to also point out that some people call version control services Version Control Systems and vice versa and it just gets really confusing so I did did my best to make that clear distinction between the two okay let's take a look at some vcs's so the first here is GitHub and it's owned by Microsoft it's the most
popular VCS uh due to offering uh due to its ease of use offering and being around the longest at least forgit um and they've always been very developer focused and super friendly uh GitHub is primarily where open source projects are hosted and offer Rich functionalities such as issue tracking automation pipelines and a host of other features I remember the day GitHub came out and I signed up for it because I was so done with using subversion then came along gitlab so gitlab was an emerging competitor to GitHub and at the time had unique features such
as cicd Pipeline and improve security measures this is no longer the case as GitHub is now on par with gitlab um but yeah at one point a lot of people were looking at gitlab then there's bit bucket this one is owned by at laian you might have heard of laian before because they are are uh the same company that makes jira and jira is the most commonly used project manager uh for um people in Tech so you know even though GitHub is really great for developers a lot of companies still use bitbucket and the interesting
thing about bitbucket was that they originally hosted Mercurial so remember I said back in 2005 mercal and get came out well alatan adopted mercal GitHub adopted um git and git one and GitHub one and so what's really interesting is that bitbucket then eventually added git and then sunsetted mercal so everything basically is get now there is another provider called sourceforge they're one of the oldest places to host your source code they existed before GitHub um and they were the first uh to provide free of charge um uh get repository hosting to open source projects um
the only thing about Source Forge is that they never really dominated because they just had so many ads and bad practices and so it just didn't work out for them they are still around and a lot of Open Source projects like to only host there they might mirror make a copy to other providers like GitHub um but for the most part everybody's on GitHub um but there you [Music] go hey this is Andrew Brown we are taking a look at GitHub and this is a version controlled service that initially offered hosted manag remote get repos
and is expanded to provide other offerings around hosted code bases if you go look up what GitHub calls themselves today they call themselves like an AI uh developer powered platform um it's really bizarre because they are basically a host for uh for get repos with extra stuff on top of it but I guess since AI is so popular they got to try right but let's take a look at all the functionality that they have so we have get repository hosting that is their main bread and butter we have project management tools issue tracking PLL requests
and code reviews GitHub pages and wikis GitHub actions GitHub co-pilot GitHub code spaces GitHub Marketplace GitHub gists GitHub discussions collaboration features for organization organizations and teams API access development so GitHub development they have a GitHub CLI they have sdks um we have security features autod detecting credentials in repos they have education specific things or course automation like GitHub classroom and I'm sure they have more uh we're going to learn about all of these things because this is what the GitHub course is about to understand the full offering of GitHub and to make best use of
it and just a fun fact is that GitHub was originally built in Ruby on Rails Ruby is my favorite language rails is my favorite framework so I've been uh uh on the the ride or the train since day one with GitHub um so I know it pretty well but let's jump into it [Music] okay hey everyone this is angrew brown and this fall along I want to show you how to set up UFA or multiactor authentication we'll talk about it later in the course but it's very important that we get this set up early uh
so we get it out of the way and that's our opportunity to also install a really useful application called GitHub mobile so I'm going to go into Google and just type in GitHub mobile so we can take a look and so what GitHub mobile is it's an application that allows you to U basically interact with um uh GitHub on your phone but the major reason why I want you to install it is because it's also used as a uh authentication tool for GitHub now you can use another tool if you already have Google Authenticator Microsoft
authenticator aie you can use what you want to use and you can actually add both of them there but I find the easiest way to um do UFA is to use G uh GitHub mobile mobile so I really do recommend that you install it's for both Google Play and your Apple phones I'm on screen for a second sorry for the uh the upward camera I'm in standing desk mode right now but the idea is that you're looking for the app it's literally just called I if you can see it GitHub right so you want to
install that application okay so here it's showing my profile as I'm logged in here and this will be what we use to log in or confirm when we log in the future so what I'm going to do is go up here I'm going to turn off the video so I don't have to look at my self and we're going to go over to um settings I would think and then from here it' probably be under passwords and authentication and so if we scroll on down um I mean there is a passwordless way of logging I
have yet to use that but what we're looking at is the two Factor authentication I'm going to go ahead and enable that now what's interesting is that if you have a lot of um open source contributions you have to have UFA turned on so in my account they turned it on for me they said I couldn't use my GitHub account unless they turned it on but we have this QR code so what I'm going to do is I'm just going to take a quick look here um I mean this is one way of doing it
I guess we could do text message as well let's go back here because I thought if you had the GitHub mobile application it would showed here but since we have nothing attached we'll have to attach something so I'm going to go here I'm just going to carefully look here and um you know what I'm going to do s no I'm going to stick with the authenticator so I already have aie installed um so I'm going to use that I really like aie it's by twilio and I find it is one of the most light ways
of um getting a multiactor authentication so I'm just going to show you what it looks like again on my phone but I really want to use GitHub mobile but I'm really surprised that they don't show that in the setup but yeah so for example this is uh aie it's really simple you put in a pin and then you can get into your actual codes uh that rotate out um so you can go install that it's in the Google Play Store and the iOS Apple Store but um I guess I'll add that so what I'm going
to do is scan this QR code with my phone and all phones can scan QR codes you just open your photo app and hover over and it'll pick it up you'll get a link and you'll click through and then it'll ask you what app you want to open with and so I already have ai installed so I'm going to click aie if you want to see this again I'm trying to show as much as I can on my phone but it's asking me what app do I want to open with aie after scanning that code
right and I'll say uh this time yes and then uh I have a pin so I'm have to enter my pin in okay and ay opened but it didn't automatically add it so what I'm going to have to do in aie I'll just show you this for a second because I thought it would add it but it didn't so I'm going have to say add account at the top there's a little drop down for for that okay so now it's asking me to scan the QR code so I'm going to do that okay and so
it's Brad it in here and so now I have it here it says GitHub and then my username I'm going to hit save and so now I have a code and so that's the code I need to enter in all right so I'll just turn off my screen and enter the code in as quick as I can 705 839 really doesn't matter if I tell you this code out loud and now we have our backup codes you should never share your backup codes with anybody this is a way that people can get into your account
um I really did not mean to show them to you here I'll have to do some editing to um hide them okay so I've downloaded my codes and make sure you print out these codes and you put them somewhere safe and have it offline do not have it online that's the whole point so go get the special duang you have permission to go buy some uh stationary and put that in and put it somewhere safe okay so I have mine downloaded to my computer and I'll go print it out later and what we'll do is
we'll go ahead and say I have saved my recovery codes and so now it shows GitHub mobile this is so silly the GitHub mobile app on your phone can be used as UFA enable it by installing the GitHub mobile app so maybe the reason it didn't work was because I didn't sign into it so if I had signed into it initially maybe we didn't have to do this to begin with so what I'm going to do is just go hit done and I still think again it's easier to use the GitHub mobile app so I'm
going to go and see if I can log out of GitHub mobile and log into this other account or maybe I can be logged into both of them at the same time so I'm opening up GitHub here and I'm just seeing if I can be logged into multiples so what I've noticed here I'm logged in already I just want to show you something so here I am in GitHub mobile and there's a little Cog at the top so I'm going to click that Cog and then I have my settings right and I'm going to scroll
on down and there's I think that says accounts I know I'm sorry about the glare so there's accounts I'm going to click accounts and it looks like that I can add multiple accounts and that's what I'm going to do okay so I'm going to go ahead and hit add account and it's going to ask me to sign in with GitHub okay so I'm going hit the big white blob of a button and then it's going to show this here sign in with different account so I'm going to go ahead and use a different account and
I'm have to enter my uh username email and password so just give me a moment okay all right so I had to like email myself my password because my my Dash Lan wasn't letting me log in but once you're there you're going to see the that authentication code that it's going to want so I'm going to go grab that from aie and it's good to have ay installed I like having it uh because you can't use GitHub authenticator for everything so I'm going to go real real quick and put that code in nope I missed
it so I'm going to have to try that again sometimes you miss it you'll have to try it twice okay there we go it's going to ask uh to get access to authorize It Go Down Below say authorize GitHub that green button there and it's signing me in and it looks like I'm now in so I'm now in here with my account I imagine I can switch between the two what I'm going to do is just turn off my screen here and let's take a look and see if this is showing up now so we'll
give this a refresh and there it is so it's now configured so the idea here is that you can also set the default so again I would recommend GitHub mobile doesn't hurt to have more than one but I find this to be super convenient because um it like when you go through this you only have to enter in like two letters it's a lot faster it'll it'll it'll jump up on your screen whereas these other authenticators will not not um so that's my recommendation to you there and now that we have two Factor we are
in great shape I'm going to just go back to Home by clicking the octocat and uh that's it so I'll see you in the next one okay [Music] ciao hey this is angre brown and in this fall along I want to show you how to create your own GitHub account every single developer on the planet should have a GitHub account because it's a great way to Showcase your work uh we'll talk about that later but you can see that I'm already logged in here so I already have a GitHub account and what I'm going to
do is log out and I'm going to create a new one from scratch so here we can see uh we can have multiple ones um I'm going to just sign out of all of my accounts here and let's go ahead and create ourselves a new one so I'm not sure remember I told earlier I told you they're like the leading AI power developer platform which is such a silly term but um let's go ahead and see if we can make a new one so just in case it's a future and they've changed this homepage I'm
going to go up to sign up and and I'm going to see if I can make an account if I can find an email that has not been used so far so I'm going to type and your exam prod. so if you're using Gmail so I can't use that one if you're using Gmail you can use like plus signs to um create multiple ones so like my really really personal email don't email me because I don't ever check this one it's like Omen King gmail.com you'll learn that my username on GitHub is Omen King why
is that I don't want to talk about it it's like forever ago I made this account like so long ago and I really wish I could have got Andrew Brown as my username but that's not what it is and so I'm just going to go here and say alt okay so this is a trick with Gmail that you can do you can put a plus alt on it or uh maybe a minus I'm not sure but let's go ahead and see if that works and I need to create a password so I like to generate
really strong passwords um you can use whatever you want I like to use hold on here I like to use this site which is the uh password generator plus password generator.net um I should make a disclaimer if this isn't insecure don't use it blah blah blah but I'm pretty sure it's fine so I'll us to go like 24 and get a nice long password um and I'll just generate a few different ones off screen here and I'm going to enter that in okay so just generate out a few and I'm going to drop this in
on here okay we're going to hit continue says it's strong that's good and then I got to choose my username so I probably can't get Andrew Brown and um so I need like another name I'm going to try Dono not available that's like my game uh gamer uh tag on um steam so what's another one that I could have uh we'll just say Andrew Cloud can I get that one so hard we'll just say Andrew WC Brown Canon I get that there we go WC is my M middle initials it doesn't stand for water closet
okay I know it looks like that we'll go ahead and hit continue I hit continue again and so now what I need to do is do this verification please solve this puzzle so we know you're a real person uh verify okay use the arrows to rotate the object to the face in the direction of the hand okay use the arrows so I think I have to make it face the same way match the angle okay uh this way okay there we go create my account and so now I need to open up that email just
give me a moment okay all right so I've been waiting a few minutes and I haven't seen anything and I resent the code so maybe it doesn't like emails that have that plus in there it's totally possible so I might actually have to go ahead and create a new email which is quite the headache as I've ran out of emails here uh unless I can think of another one you know what I think I have another idea I'm going to use uh a different one here so it looks like unverified can I change this I'm
G to try um because you have an privacy uh privacy email uh will be used for account related stuff um yeah I'm not really sure what's going on here I thought maybe my account even exists but it looks like it already does exist so what I'm going to do is I'm just going to add another one I can do Andrew maybe at teacher seat.com we'll try that oh it's already in use oh my goodness it's so hard to get an email out here okay let me just think about this for a second all right all
right another thing I'm going to try is I'm going to try uh maybe Accounts at teachers seat.com that's another one that I might be able to use okay and I going to change this over here and save it great and that should be my primary now right it really wants to send it to this one maybe what I can do is I can click oh looks like we have both okay so we have this one um please verify that I'm going to get rid of this one here because that one's not working I'm going to
try uh accounts teacher.com so that's in my Outlook so I'll go take a look there and see if I get it all right so uh this is working out totally fine so over here we have um the confirmation email so I can go ahead and just verify that email we can also just grab this link I kind of prefer using the link here um because that just gives me kind of a guarantee and we'll go here and now we are in so this is exciting um it's been a long time since I've made a new
GitHub account so I'm not sure exactly what to expect but it looks like we have some places we can start stting a new project collaborate with your team learn how to use GitHub hey I'm already doing that you don't need to do that GitHub let's go ahead and skip this for now and we should get back to our main dashboard so we are now in and we have an account that we can use um so yeah that's all I wanted to show you in this video uh but I'll see you in the next one okay
[Music] ciao hey this is Angie Brown and this fall along I just want to show you that I'm going to be setting up multiple accounts to quickly switch between them um if you want to take full advantage of learning how to use GitHub you're going to need probably another account because you're going to have to have somebody else to work with so I already have my primary account I already showed you how to make an account so what I want you to do is make a secondary account I know it's a pain but go ahead
and do that but what I'm going to do in this video is show you how you can log into both and switch between the two and I'm also going to set up a repository um that I'm going to put code examples in if we happen to put any in there so what I'm going to do is go up here at the top right corner I'm going to go add account and so this is going to allow me to log into my other account I can put in my username or my email so this one is
um this is monsterbox pro.com that's my old my old company that's not been around for a long time but I've never updated it and the exam Pro email is on a another GitHub account but I'm going to go ahead and find the password so I can go log into this one so just give me a moment I'm just trying to find it here it is there is the password I'm going to paste it in here okay we'll hit sign in okay notice it says GitHub mobile so now it's my opportunity to show you GitHub mobile
so what I'm doing is I'm opening up my phone and right away it pops up it says uh you know new signin request now it says reject or approve I'm going to hit approve it says authentication request was approved uh the first time I I had to do that I had to enter in like a code like two numbers but now from then on I just have to do that and it's very easy to uh to do that so if I want to switch between accounts we can go here and just switch between them uh
freely so that is really easy and so what I want to do is go to exam Pro this is my other organization you'll learn about organizations in this um this here that didn't really help but what I want to do is create a new repo I can create a new one up here in green or I can go up here I never notice these up here but this is another place to do that anyway you're just watching you're not doing right now okay so I'm going to go ahead and hit new and in here I'm
going to go to exam Pro I'm going to say um GitHub examples so this will be the um GitHub we'll say a repo containing GitHub examples for Pro for programmatic examples for programmatic examples this will be public because I want you to have access to it I want to have a read me I'm going to create that repository and so this will crop up later in the course and you'll have to know where this this is but just remember that is but the key part of this video was how to log into another account um
and be able to switch between them okay so we'll see you in the next one ciao all right so what I want to do in this fall along is set up a GitHub organization and the reason we want to do this is so that uh it's going to make it easier when we get to that section so what I'm going to do is go to the top right corner and I want to I can make this in either or account I'm going to make it in the alternate account because I already have enough organizations in
my main GitHub account and what I want to do is go over here to um maybe organizations and here it says uh you are not a member of an organization we could turn this account into an organization I don't want to do that or we can make a new org so I'm going to make a new org and notice right away it's going to hit us with some pricing so um you know teams gives you the full functionality we just want to have the free one uh which might have some limitations but um it should
get us started if there's are things that we can't do um then I'll switch over to our paid one that I have in my account for the most part we should be able to do um pretty much everything as long as we're using a public GitHub um public GitHub repo so I'm gonna go ahead and hit create a free organization and so I need some kind of name for this organization um [Music] so I don't know but we'll just say uh GitHub Cloud Learners or journeyers okay notice that's be the name of it I say
Accounts at teacher seat.com and this organization belongs to a personal account we could say uh business or institution but then we get a little bit more details there so I'm going to just stick it to normal and go to personal account then down below we need to solve our puzzle so we've seen this one before we'll rotate that out and we'll submit okay and you'll have to name your organization whatever you have to name it but that's what I'm calling M you can put some numbers on the end here if that makes it easier you
do like four five six s or something because these are going to be unique names just like your your username going to go ahead and hit next and so now it says add organization members so we can go ahead and add some people so what I want to do is I want to add um Omen king so I'm going to go ahead and do that please don't add me all right add your own other account your two accounts okay we'll hit complete setup and so now this person has been invited not sure if they're instantly
added um not yet but I believe that I was yeah here's the invitation so we'll go here so the invite has been sent and we'll have to go look for that so I'm going to go over here and switch to my other account okay and so now what I'll do is I'll click up here and maybe it's up here my notifications no do I have invites here no and um maybe I got an email check my email no email and this is something you'll learn about GitHub which is like invites are a pain and you
always have to really figure it out so I'm just trying to think about where that or that could be um what we could try to do is type in the organization name which I thought we already did um so this one let's see my profile is this yeah so the organization's going to be what was it cloud oh I don't even remember we'll switch back to the other one what a pain okay and we will look for that organization GitHub Cloud journeyer so I'm just going to copy this URL I want the um view organization
I want to go to this page actually I'm going to copy it here I'm go switch back and I'll enter this in and so now notice that it's showing me where the invitation is so it says Andrew Brown invited you to join this organization view invitations okay and I I don't know if there is but I'm just going to double check here because a lot of times GitHub will have like invitations invitations they might have a page for it they don't GitHub if you're watching make a SL invitations page so we can easily find them
across them here so as you've been invited to GitHub Cloud Juniors ask for a GitHub co-pilot seat optional I guess this is kind of an upsell they're like hey do you want to be able to use GitHub co-pilot but I'm going to go ahead and join this organization and now I'm in there so there's two people in here again we'll come back to this later I'm the member this is the owner um and uh you know if your company is using GitHub they're likely going to be using using organization so it's good to get some
knowledge on that but I'll see you in the next one [Music] ciao all right so I'm on the my oat.com and we can go ahead and build our own octocat so what I'll do is create your octocat you also getting started we'll do the exact same thing and it'll have a fun little animation here there's no audio but it's kind of showing you something we'll give it a moment here and so now we have the default octocat and we can do something fun so you can choose obviously a color I'm just going to go down
one shade here for face um I'm pretty pale so let's go real pale here these just look like off colors to me but we'll do that for eyes we could choose anything else but I usually will do glasses so it's not going to matter anyway so if I go down here uh I'm going to want some glasses on uh we'll go to mouth we'll choose something there you can choose hair there's probably something that kind of looks like my hair um facial hair it's bizarre because they show like other ones that I could have I
don't have a full beard but like they have this one and it doesn't show up do not want mutton chops okay we'll go over here to Tops I'm in Canada so it would probably make sense if I was to choose the Canadian one I know it's somewhere here where are you it was here the other day I wonder if this is like region specific nope there it is okay so I have Canada um I'm going to keep the bottoms off maybe have some skates and got a toque I should be wearing a toque shouldn't I
no any accessories props whatever you want to have and the funny part is I don't play hockey but this looks good enough so what I want to do is save it so we can share it I'm not sure what happens if we do that click the share button oh that downloads the file so that's perfect so now we can use that as our profile I'm just going to quickly open that up in Explorer it's opening somewhere on my computer I'm sure it went to downloads but I'm going to go ahead and close that out I'm
going to switch back over to my other account and obviously for your primary account you should treat it like a profile just like your LinkedIn profile if you're alternate alternate it doesn't really matter we're just goofing around so if we go over to um profile it's still not showing up here it is great so I want to go ahead and change this I'm going to change my avatar and then I'll click here and I'm just going to move this off screen here and I'm going to go find it there it is right there I'll hit
open and there it is say Andrew Brown okay alt account this is Andrew Browns so at sign Omen King's alternate account for the purpose of learning GitHub since you need another GitHub account to make use of learning all of update our profile all right I can go and view my personal profile and I mean that should be there I don't see it we'll go back to edit I'm going click it again maybe it didn't upload it is there so probably what's happening is it's just a caching issue right um and so it's just going to
take some time for that to show up so or maybe if I open it up another browser it will show up there but you know eventually it'll show up and I'm not really worried about it but that was octocat so um yeah I'll see you the next one okay [Music] ciao let's take a look at GitHub octocat so this is github's official mascot and it's a cat because and an octopus because it's supposed to symbolize friendly and engaging nature in the world of software development collaboration I don't know if I believe that but it looks
cool so cool uh you can actually create your own octocat I thought that'd be a great opportunity for us to create a profile for our alternate alternate account or for both whichever you want to do you will see octocat in other places so um they have a bot that's called octocat that is used throughout the platform their SDK is called octo kit so you're going to see that themes in a few other places so you know where that is originating from [Music] okay all right let's make sure we understand clearly the difference between git and
GitHub I don't think it's that confusing but it is in the study guide or exam outline so so I'm just trying to make content that they want us to know um so let's do a comparison and go through some things to make sure we understand the difference so git is a distributed Version Control System a dbcs and GitHub is a version control as a service I called it a Version Control service it can also be called a get provider or you can call it a version control as a service I'm just trying to get you
exposure to all those different terms you could call what GitHub is for functionality for Git it manages source code history for GitHub it provides cloud storage for git repos of course it does more than that but that's its main functionality um for Access you're doing this via your local system installation or it's basically wherever it's installed the point is is that you're working on it on a machine on a server or some kind of compute uh and GitHub is accessed through a web interface because it is a cloud service for the scope we're talking about
local repository management and then for GitHub we're actually talking about the online collaboration and remote hosting uh so anything that has to do with remote or things around the repo the git repo itself for collaboration it's for local changes requires manual sharing for GitHub it has integrated tools for collaboration like issues and PR and a lot of other features for usage you're going to be using this primarily by the command line interface there's definitely software out there that makes it a lot easier to use um we'll get into that but generally it's a command line
tool that you're using for GitHub it has a graphical interface and it also has its own CLI tool but most people are interacting with it via the website okay so there you go [Music] ciao so a git repo or repository is your git repo think of your local one that you push Upstream to GitHub to be uh hosted remotely and GitHub allows you access to manage your re repo with several functionalities so here is a screenshot of a GitHub repo this is when I ran a boot camp in 2023 uh and so let's talk about
what is on this GitHub repo page I don't know what they want to call this page I just called the GitHub repo page for a specific repo um but you can view different branches view tags view commit history explore repo files view releases uh see codebase language breakdown view top level markdown files and so those top level files might be the read me the license security other things like that you can perform actions from this page or quickly to it such as pinning watching forking starring cloning so uh a lot of stuff going on this
page and this is going to be we're going to be spending a lot of time or uh going from here to somewhere else but that is a GitHub repo so there you [Music] go all right in this follow along I just want to give you a tour of GitHub repos so that you have a a general Fami familiarity uh so that when we start diving a bit deeper we understand what we're looking at so I'm on my dashboard I have a lot of different repositories um and so I can go here and find a repository
I can search stuff and say like if I'm looking for my boot camp I can type in boot camp here and then make my way over here and find it um a lot of times when you are looking for stuff you're going to use the global search so up here you could do that as well well and I could find my own repos or other repos um there are a lot of Open Source repos on GitHub and so um I know rails pretty well so I'll go ahead and type in rails and so we have
this rails repo I'm going to go open this open this up and take a look and see what we can see because this is a very mature Li um uh GitHub repo and we'll make it very clear of all the functionality that's happening so notice we have our main area this is where all of our files are uh we can actually view any of these files so I can click into any of them so I can go into the gem file and it will show me the contents of the gem file what I like about
uh GitHub is that when you click into here then you kind of get this file explorer and it's extremely powerful uh if I click this on the right hand side it will show me symbols that's not a very good example I might open up a ruby file to show you what I mean so I'm just looking for Ruby file here and so this will show you like places you could jump uh jump towards in your code um that's really nice you can see who did what by going to blame so we can see exactly what
some he doing by the way I'm going really quick here it's not important for you to remember any of this I'm just giving you a tour of stuff so just relax and uh enjoy the information that we're learning here you don't have to write it down if I wanted to find a file really quickly in this repo I could go here and type something in so maybe I'm looking for um something like View and so it's going to drop down and it has this fuzzy search if I want to find a ruby file I can
type this in we have a lot of them here I believe there's a hotkey here so if I hit T if I'm over here and I hit t T it will bring me over there I can switch branches really easily um does that let me add a file it's not my repo but if I add a file I'd have to create a fork um the search brings that up there but we'll go back over to code okay so my point here is that you have all the files here and you can browse them um you
can switch branches you can go and take a look at all of your branches you can take a look at all your tags you can star you can Fork you can watch here for code you could launch this up in code spaces which is a cloud developer environment I normally have um G pod installed so if I hit refresh that button might show up here this button you will not have this button I installed this because it's like code spaces but different um on the right hand side you get a bunch of information about the
repo like stars watching Fork uh some of these probably are conditional because I don't remember seeing these on my repos you have releases so maybe you are building up binaries like downloadable files that people can uh utilize so some people they will host all their code here and they'll build the binaries for quick downloads so that's somewhere else you can go to packages is probably similar to releases I don't I don't think I've ever used packages ever in my life uh let's go over here and take a look browse browsing all packages yeah I don't
know what packages do we can see who's using it the contributors so people that are writing uh writing code um we have the languages so you can see this is mostly a ruby LI or uh repo which makes sense because it's Ruby on Rails down below we get a preview of our readme file so that is in the top level directory they have a codes of conduct I imagine that is a markdown file here and as well the license file I'm sure that's in here as well the security policy as well um so yeah there's
a lot going on in here and then there's all this stuff up here this these are features on top of your repo so lots and lots and lots of stuff if we want to see our commits we can go here and click on commits and this is kind of like a tree it doesn't give you the full view because when you are looking at um when you're looking at a tree uh there's branches and stuff so we're missing that information here but the idea is you can go here and uh go to different branches and
look at those commits and that's basically all I wanted to do here we'll get into it a lot deeper later on but that is your tour of GitHub repos [Music] ciao hey this is Andrew Brown and in this video what I want to do is a quick and dirty get crash course um you are supposed to already have this knowledge uh coming into this uh certification even though they kind of suggest that you do and you don't um this is not going to be a complete crash course um it's just going to be uh the
least amount of knowledge we need to know in order to be able to be productive in GitHub uh you really do need to make sure you know git very well and should look at other additional resources to go be on this little component but it'll be good enough uh we did create that repo or I created that repo earlier in exam Pro I think that's a great uh great place to start so what I'm going to do is I'm going to go and log into my other new account so over here and uh I'm going
to go and make my way over there so I'm going to type in for slash exam proo up here I'm going to look for this new repo here and um the reason I'm doing this normally I would just open it in my regular account but what I want to do is I want to show you how to fork and then we're going to do some work in here and you'll commit it to your own repo but what I will do is I will end up U bringing those changes over into the original repo okay so
anyway the way we're going to get started is um there's a few ways we can go ahead and open up a terminal but probably the easiest way is to open up github.io that's going to make a copy of it and have a reference to it so I'm going to go and click that and notice it'll prefill the name in make sure it stays the same it says copying the main branch only that's all there is right now and that's what we're going to do so we'll create that fork and now we have GitHub uh uh
uh GitHub examples and notice under our name we have it here it shows that it is a fork so I want to open this up in github.com okay and we'll give it a moment and I think that we can do stuff in here if we can't we'll have to open up a developer environment like a GitHub code spaces but I'm hoping that we can use this initially because we can write commits in here so this is open and um we have our readme file and on the left hand side we have this GitHub icon so
this is obviously an extension installed specifically for GitHub but if we don't have a terminal we're not going to be able to do a whole lot here so we could commit stuff over here and maybe we'll start with that and I'll just show you how to do it with the goey so let's go ahead and I'm going to make a new folder I'm going to call this git crash course okay and in here I'm going I'm going to name it lower case I actually prefer when they're lower case get crash course and there's a few
things that we want to cover okay so I'm going to make a new file here I'm going to just say readme MD and um a couple things I want to cover uh commits I want to cover branches I want to cover remotes I want to cover stashing because I think that's really [Music] useful I guess merging is something that would be really important and so I think that's sufficient enough to begin with and whether we'll do this in order I'm not really sure but we'll start at the start so the first thing I want to
do is I want to go ahead and create um a a get commit and we're not doing this programmatically we're just going to start out by uh doing this over here in the source control so Source control is a built-in extension in vs code that allows you to um uh basically write commit messages it's really simple so what I'm going to do is just right here and say um create skeleton readme for get crash course okay and so I have my commit message and notice that we have changes that are staged so changes can be
either staged or not staged so if I right click this here um I can H I click stage changes and now it's up here so what's the difference between being up here and being down below well when I go ahead and click commit and push it will only take the stuff that is from the stage changes anything else will be left behind because sometimes you're working with a lot of files and you don't want to commit them all okay so that is the reason for that um but the idea is that you can hit minus
and plus and move them back and forth so hopefully that is very clear we can click on a file we can see the difference and changes this is a completely new file that we're adding so we're basically having having stuff that's added and prior there was nothing so it's showing that on the left hand side and we are ready to do something with this if we drop this down we can have Commit push I've never clicked on this before so I'm not going to do that but I'm going to go ahead and click commit and
push and so what it's done is it's committed it and it's pushed it Up Normally you wouldd have to perform those as separate actions okay but we'll talk about that when we start using the terminal so now that we have pushed that up what we can do is click on this little icon or maybe not what I'm looking for is a visualization for our um uh for our tree here it is view as tree and that's not helping okay so I guess that doesn't do what I thought it would do and that's totally fine so
what we'll do here is we'll go back and open this up in uh GitHub the repo so I'm just trying to find if there's like a short way to do that no there's not so we'll have to go ahead and type in GitHub I'm going to have to type in my name uh Andrew WC Brown this will be GitHub examples to get back to this repo and we can observe that we've pushed that commit so if I go here you can see our uh get commit we can click into it we can you can see
our get commit we canot comment on stuff here so I can say this looks great all right add a single comment and so that should be pretty darn clear we have a uh commit Shaw so that's over here um there should be some way to get the full Shaw I'm not exactly sure where it is uh because I can see parts of it a lot of times if we click into here it might show it here so if we go here I could copy that go back here I can get the full Shaw right okay
but what I'm realizing is that github.com mans but it doesn't so that's okay but we can use this as a means to quickly edit files what I want to do is go ahead and close this out and we'll go back over to our code and what we'll do is we'll launch up GitHub codes spaces so GitHub codes spaces has a free tier um and that's what we'll be utilizing okay I'm going to try to find the pricing here if I can and I'm not exactly sure where the pricing is but that's totally fine we'll go
ahead and open up a new Cod space on Main there's a whole section of code spaces in the course so we will come back to this and cover it in more detail so we'll give it a moment to launch up is spinning up a virtual machine underneath uh so that's why we have to wait a little bit um or if it's not spinning up a virtual machine it's spinning up a Docker container on existing virtual machines that's probably what it is and so now we get a terminal and that's going to allow us to interact
um with GitHub using git commands so I'm going to go down to the bottom left corner here I'm going to change my theme because I cannot stand working in a light theme and I'm going to change this over to something that is dark um so I'm going to go to GitHub dark and so this is a little bit easier to read we can also increase the font here if this is hard to read I'm going to do that by going to settings and I'm just going to bump up the font here to 20 for font
size and I'll do the same thing for terminal so I'm typing terminal in here and I'm looking for font size we can also just type in font sometimes it's a bit tricky to find terminal font there we go and we'll turn this up to 20 okay so that should be a lot easier to read so I can go in here I'll click into read me now this is going to come pre-installed with Git if I type in Git it should be here okay so I didn't have to do anything it's already installed I'm not covering
how to install git on your local machine I'm going to be doing everything in the cloud developer environment because it's just easier and I don't want to uh work through all those challenges of trying to show you how to do that um so normally what you'll do is when you start working with a repo you're going to clone it now this repo has already been cloned because we opened it up but let's say it hadn't been let's go ahead and just do that ourselves so what I want to do is I'm going to just CD
back a directory and type in clear and type in LS and we're going to see where we are so right now we're in workspaces okay I'm just going to make uh a new directory and just call it temp I'm going to CD into that and what I want to do here is I want to take the first step into bringing in this repo okay and the way we're going to do that is by going back over to here and we're going to go over to code and we're going to go to local and then we
have these commands we have htps SSH and the GitHub CLI and so these are ways that we can bring in um our repo okay and so the most common way is by using SSH where you will actually have to add a public key and we can do that the second one is https where you'd have to use your personal access token and there's the GitHub CLI and this I think is probably the way we should do it in the future but we're just going to work any way we can here so what I'm going to
do is go back over here and we're going to go all the way to top and we're going to talk about cloning okay so we have three ways to clone so we can clone three ways HPS uh SSH and GitHub CLI okay so what I'm going to do is I'm going to start with htps so we'll go over here I'm going to copy this and I'm going to go over here I'm going to type in get clone I'll write it in here so we can copy it out but this is going to be get clone
and I'm going to paste this in okay and since we're working in markdown and that's part of the course you have to learn how markdown works I'm going to put three back ticks and put an MD here okay you should do all this because we're just learning everything up front if you're wondering what the the back tick is it is is a character that's above your tab key see if I can find it for you here back tick key and it's this key right here okay so notice that there's a back tick it's a tick
that goes back and so that's what I'm pressing I'm pressing three of those and the reason I'm doing that is that it will then render that out um it's actually not MD It's Just sh I don't know why I did that and if you go up here in the top right corner we can preview all the stuff we're working on for our documentation but anyway this is the first command that I want to run um so I'm just going to go up here we'll make a directory uh since so we'll say since we're using we
are using GitHub code spaces we'll use we'll create a temporary directory in our workspace okay and so that's what we did so that's going to be sh stands for bash I mean it's not exact it's shell or whatever but it's pretty close to it and so what we did there is we typed in mkd slw workpace TMP and then we're doing CD workspace TMP okay and then the next thing we want to do is clone this uh repo so I'm going to go ahead and attempt that so it really matters whether the repo is public
or private if it is public then we don't need any credentials to clone it but when we want to push it back up that's a different story so I'm just trying to copy that this is a bit finicky the the copy paste here control command V uh and it's not letting me paste it I'm going to try this again copy there we go right click paste for whatever reason from here to here it didn't work so I'm going to go ahead and hit enter and so I'm actually cloning from here now now we have this
this is attached um to that other location so just ignore this for now we're going to pretend this doesn't exist and we're just going to strictly use the git commands to do everything so we've cloned this and I'm just type in clear and what I want you to do is type in LS hyphen La so what LS hyphen La does is it will show you all the hidden directory or hidden folders and um we don't have any yet but we're going to have to CD into this directory I'm going go go ahead and type in
GitHub examples right and um so what we'll do is just type CD GitHub examples and so now we're in this directory and I want to type in LS hyen LA and so I'm showing you here that there is a hidden folder called dog this is how it knows that there is a GitHub repo okay so I'm going to go up here for a second and we'll make another thing so we'll just say GitHub or sorry get get a hidden folder so there is a hidden folder called doget which tells you that uh your project is
a git project or a git repo okay and normally what we would do is we create our git repo outside of this so if we wanted to we'll see you back here I know this is a mess but I told you it'd be quick and dirty is that if we wanted to create a new repo we could actually go ahead and just type in get a knit in a new folder so uh you know if we want to to create a get repo in a a new project we'd create the folder and then initialize that
repo using get nit okay so what we would do here try and get those back ticks here get a n cuz we're using Code we always use back tiex for codes so what we would do here is we'd create a new folder so so we make we'd say um mkdr slw workspaces and then we would say temp uh new project and then in here we'd have uh that new product so we' CD CD into it so we just say workspaces temp new project and then we would do get a nit we'd create some files so
we' say touch make a new file so you say readme.md then we could open that file up so I could say open readme.md then we' make some changes to it uh so make changes to readme.md then we could Commit This so we' say get commit hyphen M hyphen M hyphen a sorry hyphen a hyphen M so add readme file all right and so let's do a little bit of that right now so I'm going to say mkd I'm going to say new project okay and then I'm going to go get a nit it initializes a
new git repo we end up with this dogit uh folder here okay and then we could touch a new file so we say readme.md and then if I want to open that up I probably can type in open. MD I would imagine that it would open up in here it didn't what if I type in vs C vsvs code readme.md no how do you open files in vs code from terminal I thought it was just open terminal command what is it there must be like a command code I think we type code that's what it
is code okay I us usually use Vim so this is not my primary editor so we open that up and I can say hello world okay we'll save that I'll type in clear here and now what we can do is we can type in get status so we can see what's going on here so we'll say get status to see what files are being tracked or untracked this is the exact same thing as this thing here when you're typing get status this is what this is right here that's your get status okay so we have
files that are are tracked but nothing's change uh uh stage so we can do get add all okay I guess I missed that there get at all take this part out here because we don't need it and um it says you've added another git repo inside your current repo we'll just ignore this because it it's it's just confused because we have that other repo we'll type in get status and notice now these are changes to be committed okay so the idea is that these are going to be the things that get pushed let's say we
didn't want to add in GitHub examples we definitely don't want to do that so I'm going to say git remove GitHub examples get status didn't really work that's okay um we can say sorry get I didn't mean to do remove I meant to say get um uh um Ty reset sorry get reset get status there we go so reset will'll put them back in here I actually only wanted to add that say get add readme.md okay so we go down here you'll say get add readme.md and while we're on it I'm gonna have to go
and just say um reset get reset so reset allows you to um move changed files back to untracked files or un like change or sorry staged staged changes to be unstaged okay this is useful when you don't want to uh you want to when you want to revert All Stage change all files not to be committed sorry I know it's a bit messy but the idea here is that we're going to go here and we'll just say get add all get reset so I'm going to go here and just say uh G reset will revert
a git at all okay we have ADD so this is get add readme.md get ad when we want to Stage changes that will be included in the commit we can use the period to add all possible files all right we have get status get status shows you what files will or will not be committed okay let's get status all right so I want to type in get status again here okay so this is what we want to commit so we'll go back up to our commit section here and um yeah over here which we were
kind of working on it and we we'll go ahead and type in get commit okay so if we just type in get commit it's going to try to open up the editor so it actually opens up here so what I want to do is just comment something here so get commit when we want to commit code we write we can uh write get commit which will open up um the commit edit message in the editor of choice and so this is already configured to open up in vs code if you're running this in your local
machine it would complain and say Hey you have to set a default okay so get config set default editor okay so if we had to do that I'm just going to look this up really quickly here editor normally you'd have to set it right so you'd have to first set that um okay and so this would be emac or whatever um set the global editor I don't know what it is for this um we could take a look and see what it is I just hit control C to get out of that because I really
don't want to do that right now so let's go find where this is actually configured um so I believe that there is like a global get folder somewhere it's not there yeah I'm not sure where it is let we type in get config can we see that we type that in I just want to see what is being set for the editor um so I'm not exactly sure I just want to know what it is so uh you know get uh editor vs code default I just want to know what that value needs to be
um so that would be set as what oh it's dog config that's the file we're looking for okay hold on so this would probably be in our home folder let's try this again so let's say code get git config where's git config stored where is git config stored um oh we just list it out okay let's see if that works okay um we'll go down here for a second the git config file is what stores your Global configurations uh for G such as email name uh editor and more okay so we go here and I'm
just going to say get config hyphen hyen list [Music] uh and that's showing the contents of our git config file still don't know where that file is but at least we know what some things are set at and so what I'm looking for in here is that editor and it's not showing up so what I'm thinking is that it already knows what to do but it is setting our user. name and user. email this is something that you would normally have to set so I can go back to just get config here and customize and
get and notice these are the first two things that they set right so um when you first install get on a machine you are supposed to set up your name and email okay and so those are the examples there all right so they're right here and you can see that they already set it for us but normally you'd also have to set the editor and it would complain but for whatever reason it knows to open it up already in uh envious code here so I'm going to go back up to here and so that's going
to open this up interactively so I'm going to type in get commit whoops editor down below here I'm going to type in um first I want to make sure I'm in that that folder that new project oh you know what I created that read me in the wrong spot let's go back here for a second type in LS hyphen LA and yeah I didn't even make it in the right place so remove that folder we're going to remove the readme file new project I'm going to type in clear and I'm going to try this again
so we'll type in m mkd or sorry just touch touch readme.md we'll open up this file so code read MD we just say hello world save that we'll close that and now we will type in get status there is no get repost we'll type in get AIT and then it's initialized an empty repost that's good we'll type in clear and then we will type in get status and now it's not complaining about that it us or that um GitHub examples because this is now in a subfolder so it's not trying to add a sub module
so now we can do get add all we can do get status and now this file will be added and we'll do get commit which will open it up in here and so now we can write our message so let's just say add readme file okay I'm going to save that and close it okay so now it completed it it's created it if I type in get status you'll see it's gone and so if I want to see the tree for this I think I can type in get uh was it get log and it's
going to show me uh that commit there so if I added another one it should show multiple commits here so let's let's go ahead and and modify that readme file again so I'm going just open it up again here uh code readme and what I'm going to do I'm just going to take this other Tab out of the way and open a new tab and have it over here so we can make sense of what we're doing I'm going to put another exclamation mark so another way that we can commit is in line is by
putting the m flag so I'm going to type in get status and then uh what I want to do is add that file okay and type in get status again and now I want to commit that change this this part here and so what we can do is type in get commit and now we'll type in hyphen M and I'll just say add another exclamation mark all right and don't worry about the spelling I do not care and I'm really bad at spelling and here we'll type in get commit hyphen M add another exclamation okay
so uh make a commit and commit message without opening at editor and so what we'll do is go ahead and hit enter and so that added there we'll go ahead and type in get status we'll do get log to see stuff so we'll go here and say log so get log will show recent git commits to the git tree um if we want to see more of the tree I don't know what command it is like is there git tree I always forget and the reason I don't remember is because often you're relying on these
tools so there's some stuff you should know here and there's some stuff you should just utilize in here but you should know the basis of get commit commands Okay so that's good so we learned about get commit status a few other things okay and so if we wanted to take this project and push it up uh to GitHub it's not going to it shouldn't work because we don't have credentials but technically this account uh or this environment is actually um tied um to GitHub so it actually might work um how it would work I don't
know maybe we add our personal access token um but we could just find out by trying to push so what I'll do let go down here below and type in uh push so uh when we want to push a repo to um our remote origin and so this is so just be simply get push this should not work because we don't have a repo to push to okay and so we have to add a remote um so we can do get remote add origin and then put the name there but we haven't created a repo
so there's nothing for it to go to so even if we added a remote it's not going to work okay so this project here is done so I'm going to go ahead and just clean this up and we'll just go ahead and type in remove RF new project so that's going to give you some ideas what you can do there so what I want to do is LS and I want to go back into this one because this one has um sorry a get folder and let's just open that up really quickly so we can
take a look at what's in there so we open this up I typed in code it opened it up in a new repo I'm not really sure why try this again code. git I don't know why it's opening up in a new repo there I guess it's confused um but it did work the only problem with this is that it's opened up another developer environment so in here this is all the files that are in this why couldn't do it over here I don't know but um if we just take a look here uh closely
we have the config folder and this is what I showed you earlier in those slides this is how it knows what the origin is this is how it knows how to push to main we have some core configurations here and there's some other stuff like we have reference and stuff like that I don't really want to get into all this stuff um because it's just too much but uh the most important thing to know is this config file because that's where these things are and so if you ever get this stuff mucked up like your
remote or origins or something's not working you can fiddle with stuff in here um and that's all I wanted to point out here so I want to just stop this um this one here so I'm just going to go ahead and close this out there's some way to shut this one down I'm just going to close it out and should stop it with with GitHub code spaces you you got to really be aware of all the ones you're running because then you can run through your free hours very quickly so I'm going to just see
what's running I'm going to see if I can just type in code spaces up here there we go I just want to make sure that I'm only running one okay it looks like I'm just running one so I think all it did was it opened the same uh running environment in another tab because it got confused which is totally fine but anyway this file is now gone and let's focus on this one so we created this repo here and technically we should not be able uh to push up to it now we might be able
to because it might be storing our personal access token or some credentials but in uh technically it should not work so what I'm going to do is I'm going to go ahead and try to add a file to this repo okay sorry I don't want to lose this one um and see what happens when we try to push okay so uh what we're going to do make sure we're in this repo we're going to type in touch readme.md and then I want to open this one up so I'm going to type in this here I'm
going to say hello world we'll save that and the idea is that this is the same repo as that other one so actually we just um we just technically edited this one so you know what I actually don't want to make this file here because I realized that's going to causes a problem uh what I'm going to do I'm just going to LS here I'm going to CD in to get crash course and I'm going to make a new file here we'll just call it um uh hello so just say touch hello okay and then
we'll open up this file here oh sorry code and then we'll say hello all right so it's not here because of course we're ignoring this okay but if we type in LS Ty and La we have this hello file right and so if I type in get status I can see that this file is untracked so I want to add it and do get status type in clear and now I'm going to do a get push so this should fail but it still might work let's see what happens it says everything's up to date and
the reason why is that we didn't create a commit right if we do get log you notice we don't have anything this is the last one we ran so I'm going to do get commit hyphen M add hello file okay and now I'm going to do get logs so I can see that it's there right and now I'll do a get push and it did work so it probably worked because this environment already has the stuff loaded up if I was using my local developer environment this should not work um and I suppose I could
show that I'm just trying to decide whether I want to do that or not um give me a second to think about it yeah I think I really should show you this so what I'll do is I'll open up vs code on my local computer and we'll do that okay so my point is is that even if you're not doing this I just want you to watch and understand what you'd have to do if you're using your local developer environment the trick with local developer environments is they're really finicky because um especially on Windows because
you have to get Linux installed and you need the windows subsystem Linux and that's such a pain to work with so I'm here in vs code this is on my local computer and what I want to do is I want to uh bring down that repo um and so what I'm going to do is just open up terminal okay if I can find it any day now here it is um and I need to store this somewhere it's opening up in Powershell but I want to use Windows subsystem Linux okay and I'll give it a
moment here and so it's it's starting up Linux and so here it's on my desktop in a folder called code okay I'm just going to type in LS not sure what this is but I normally like storing things in a folder called sites so I already have one here and the idea is I want to um I want to clone that repo into here so what I'm going to do just bring this over here for a second all right so this one was uh this was this one was no good I couldn't really show you
this example here so I'm just going to go ahead and [Music] remove this one and we'll just get this back to normal okay type in that clear and I'm going to go back over to here into our G GitHub crash course so we can keep working on this and I want to go back up to commits or sorry cloning and I want to go ahead and attempt this clone uh that we're doing earlier so this is mine right of course you'll have to switch this out for yours so understand you can't just copy and paste
this you have to modify it but I'm going to copy this I'm going to go over here and in my Linux system I'm going to go ahead and paste this in because I think I already have get installed right and it's downloading it here okay so I've downloaded it because it's a public repo but the question is can I push to it so I want to open this project up here in vs code I'm going to go ahead and type in code period and that should reopen vs codes in this context I'll get rid of
this old one here out of the way that was some other thing I was working on I'm going to say I trust the authors it's totally fine and apparently there's a newer vs code I do not care and it's opened up this entire directory so I kind of messed that up and I'm G to go into terminal again so sorry you can see I have a bunch of stuff in here I'm going to CD into this by typing in um GitHub examples and we'll try this again I'll type in code period and then I'll close
this one all right and then this time we now have our local developer environment in good shape okay so just understand that you can connect GitHub codes spaces to your local one I don't want to do that I because I want this to be detached from git so I can show you the challenges of cloning so this has been cloned already we already did that and if I go over into terminal here okay new terminal and I want to make sure I'm in uh WSL which I am I'm going to type in lsy La I
want to see that I have that dog directory here and we're going to go ahead and modify this hello file I'm going to put an exclamation mark I'm going to hit save and so the idea is I'm going to do get push and I'm expecting it not to work so it says it doesn't work work would you like to sign in with GitHub no I don't want to sign in with GitHub even though that's awesome I don't want to do that and the reason why is because I want to show you how you would use
a personal access token so what I'm going to do is I'm going to go over here bring this down and I go back to GitHub and we're going to go over to here and we're going to go to settings and then all the way down to the ground we're going to go to developer settings and we're going to click into personal access tokens and we have a fine grin access tokens you don't need to use access tokens very often this is just for this specific use case we're going to go ahead and generate this token
I'm going to say um temporary token uh local Dev and I want this to expire uh in the least amount of time so today is Sunday I'm going to say tomorrow uh this token is just for today and I want this for a very specific repo so you can say say all repos we're going to say a select repo I'm going to go here and select my one repo and for repository permissions um I just want to be able to push this and work with it count permissions so I just have to make sure I
give this proper permissions um PLL requests merges issues um I'm trying to give it permissions to just push code push commit so I think we definitely want this read and write want commit statuses read and write and I think that should be sufficient I'd probably put poll requests in here as well before GitHub used to just have like you'd make a classic token you wouldn't have to do all this but they're trying to make it more secure so that's how it is uh um and so I think this is sufficient so I go ahead and
create this token and so I now have this token so the idea is that um when I'm over here normally this would prompt us it wouldn't do this oh yeah we have the username up here so it's asking us to enter our username in here normally this would prompt down here but it's not so I'm just going to hit clear okay and I'm going to try try this again say get push I'm saying cancel and so it's prompting up here if you're not using vs code it would normally show up here so I'm going to
type in my username like this and now it's asking for a password and before you could put your actual password in here you can't do that anymore you have to use this personal access token so if I got those permissions right this should work okay so I'm going to paste that in hit enter and so now it says everything up to date so did it push that's what I want to know so we'll go back over to here um and if we click here we can go um um oh sorry down here I'm looking for
how to find this repo there was a button here before why can't I find it maybe it's over here no that's fine but we want to go ahead and look at that repo so I'm going to go and type in Andrew WC Brown and I want to look at our only repo that we have and I want to see if those commits work so if I click in here we have ADD hello file and that didn't do anything so maybe it's because we didn't add anything let's go get status here get status we have to
add it if we want it to work right we say get commit update and then I'm going to type in get push and so it's trying to log in so every single time we want to push it's going to ask us for that because it doesn't remember what it is we can technically cach those credentials um I'm not sure what the flag is I've never had to ever have have to to do it but there is some way to Cache it we're going to just hit cancel because I just want to show you how to
use that personal access token okay and uh then I'll go go back there and grab that I think we still have it there good okay I'm going to go back to our local vs code I'm going to paste this in hit enter and so now it pushes okay so it's pushed it there and so that's one one example of us doing that okay we'll just confirm that it's there we can see it right there so that's one method of cloning so go back over to here to our uh documentation in GitHub code spaces so here
we'll just say uh you'll need to um so you'll need need to generate a GitHub access token or sorry personal access token and we'll go grab that link so we know where that is so it's right here okay says this it's a beta feature but I can't imagine they'll revert that you will use the pat as your password when you log in uh and the permissions we you know give it I think we need that all right so that's one way another way is with SSH okay so what we'll do is I want to get
rid of this token because I don't need it anymore I'm just going to go ahead and delete that and I want to go back to our repo which is over here and we want to clone this VI the SSH and because I can't trust GitHub because I think it's uh the GitHub code spaces it already has our credential somewhere we're going to have to do it this way so I want to CD back here I'm going to remove this directory okay clear and I want to clone it again and so this time I'm going to
grab the SSH if we go over here we'll paste this link in here and it looks really similar but this is not the same link SSH okay and we'll want to CD into that so the difference here is that look at this this says htps is the protocol this one puts the stuff in the front so it's a different protocol um and and URL for cloning so we go ahead and copy this and we'll go down below I'm going to paste this in and hit enter okay so it can clone because it's a public repo
if this is a private repo we would have to already have our credential set I'm going to go ahead and um close this out and we want to reopen this so it should know this is the same thing but because we deleted that repo it's confused so I'm going to go into GitHub examples and I'm going to reopen this up in vs code it'll open up a new window not sure what's taking it so long okay it just autod detected it so I guess it didn't have to do that it's fine but um we'll open
this file up again and I'm going to put an exclamation mark on the end and so I'm going to do get status right again we can do it over here we refresh it but I'd rather do it from here so that's not there I'm going to say get add read me or period now let's refresh it notice it moved to Stage changes and then we can do get commit hyphen M update SSH way all right and it pushed um how did it do that because it's not supposed to work um so it makes me think
that that personal access token is still there okay oh no no no no no no it it didn't push it didn't push the reason I'm confused is that notice that this said push so when we go here this will let us commit and push sometimes but we've only just committed it locally okay so if I type in get status all right it's here okay it's not um it's not it's not remotely there okay so in order to actually get it get it up we have to type and get push so that's a separate action so
we'll go ahead and type in get push so now it should complain so this says rejected um and the reason why it's rejected is because we don't have an SSH key so what we'll need to do is generate out an SSH key and the way we do that is we type in SSH key gen hyphen T I believe it is and we type in RSA to be specifically what it's for we even say the length of it this is a Linux command uh mode Linux distributions should have this pre-installed so you can definitely do it
the place that you would put this key would be in a very specific location so I already have a default one and I'm going to rename it to something else but you can leave it as a default if you want if you've never ran this command in your life I'm going to go ahead and hit enter oh you know what it's key gen SSH or key gen SSH keyen I forgot what it is already keyen SSH it's SSH key gen okay so go back here I'm Type in SSH key gen TR RSA okay and it's
saying where do you want to create it it will usually create it here I want this to be named a little bit different I'm just going to say um GitHub alt and then I'm going to say ID RSA okay and then I'm going to hit enter for no passphrase a passphrase passphrase is a way to password protect it I don't want to do that you don't always have to do that um but it makes it more secure notice that it generated up both the private key and the public key we're going to talk about key
pairs later in the course I made sure to cover this they didn't make it a requirement in the in the uh uh the uh the guide or the uh the C the certification course but I know you need to know this so I made sure to put that in in there so we've generated out this uh private private and public secret and they're located here so we're going to need to get the contents of this one and send it over um to to GitHub so the way we can do that is we can just grab
this URL or write this out and and Cat it out so cat is a way in Linux to print out to the terminal and so I'm going to type this full path I'm hitting tab to quickly complete uh this so I don't have to write it all out by hand and I'm looking for GitHub GitHub alt ID RSA it's kind of not showing me all the files I'm going to just go ahead and type this here for a second okay and um weird it's not there so it says TS RSA enter the file in which
to save it oh it didn't actually save it here did it save it over here it did all right I don't want it here I'll try this again so we'll hit up because it wants the full path that's why um and so we'll do this again we'll say home Andrew SSH I'm going to say uh alt GitHub ID RSA enter enter enter so now it's where we think it is so it's actually here I'm going to copy this and we'll type in cat and we'll paste this in that's going to give us this funky looking
thing so this is the contents of the public key and I I need to copy that so I'm going to just do this and write copy I I did contrl C because I couldn't rightclick it um and I'm going to go back up to here and then in GitHub we got to add that to our account so I'll go to settings and I'll go over to SSH and I'm going to add a new SSH key I'm just going to say paste this in here I'll just say uh local uh environment you might even say what
computer this is from you might have multiple computers with local developer environments so I'm on my my my Windows machine so Windows local and you know we have two things here I believe it's an authentication key and we'll put that in there so this should allow us uh to now push okay because it will it will match the private and public key out I explained in the course how it works like the logic behind it but this should work assuming I set it right so what I'll do is I'll type in get status because we
should have something ready to push right so notice it says here your your branch is ahead of origin by one commit so we have one commit that hasn't been pushed yet we'll go ahead and hit get push and if we did it correctly it should work and so I did something wrong um what I did wrong I'm not 100% sure um so we can try that again so I'm going to go ahead and go back up here because this format might matter it might be in the the wrong format but I'm pretty sure it should
just be this give this a refresh here um says never used I'll try this one more time maybe takes time sometimes it's VY like that nope so if it didn't like that I'll try signing I don't remember there being to key types before so I'm a little bit confused myself and I don't remember this stuff off the top of my head if we copy this wrong that could be the issue as well but we really want to copy the public key okay notice it says begins with R RS or that okay so I'll paste this
in it's definitely the right format so I'm not sure why it doesn't like it Windows local we'll try this again okay and we'll go back over to our local environment and we'll say get push still doesn't work yeah I don't think it's the signing key we'll try this one more time new paste and like that doesn't seem like that's the problem right maybe it's supposed to have a space let's go back and take a look at uh vs code this has a space in between it okay this has a space okay so SSH key gen
key not working GitHub it's not uncommon to have issues like it just happens to me sometimes um sometimes we can test it out we don't have to set the origin because we cloned it e that should be fine I'm not really worried about that um SSH key gen GitHub because maybe they might tell us like it give us an example and then um maybe I entered it in wrong maybe it wants it in a very particular format because it can be finicky give me just a second okay so not sure if we have to do
this but maybe we need to add the SSH or the the key to our our SSS agent um I remember doing this one time but normally it usually picks up anything that's in that directory so I'm actually kind of surprised but if that's the case let's go ahead and just explicitly set it so let's give that a go and um so we'll just hit up here and I'm just going to go ahead and type in SSH add and add your SSH private key okay and that's just RSA there like that put enter could not open
a connection to your authentication agent just a second um it's suggesting you run this line again I'm kind of getting the territory of like doing anything which I don't really like the SSH program runs in the back room to hold your private Keys keeps them ready use by SSH okay well let's try this um and again this is why I don't like showing local development because it's so finicky it's a lot easier on a Mac but I can't share my screen on a Mac so I mean you could but I I it's very difficult for
me to do so so now we've added the the identity and I'm hoping that now this will work there are debug commands that you can use so like GitHub SSH debug um like here there there is like this you could run so attempts to connect to SSH to see if it works so we could use that and give it a test um go back over here right and hit enter hi King you successfully authenticated but GitHub does not provide shell access so that's one way we could test that's a good command to know um we'll
go here and say put this here we can test our connection here we will need to create our own SSH keyy key pair RSA key pair so that' be SSH key gen TR RSA for uh WSL users and if you create a [Music] um you WSL users and if you create a key in a a different a if you create a non default key you might need to add it so that was us running that um like this here so that might fix that issue for us um this is for testing our connection so that's
telling us that we can push okay and so what I want to do is go back over to here and let's see if we can push get push fingers crossed and normally what happens the first time you add something it's going to add it uh to the key ring usually ask us to uh say yes but it's still not working so I mean that might establish connection that we can reach you you successfully authenticated but does not provide shell access okay um so our keys still not working we have permission denied are we pushing to
the right repo yeah we are it looks like we are um one thing we could do is check that hidden folder it's not showing them here there's some way to show hidden folders and get not sure why it's not showing up give me two seconds I've being told the hcky is control shift G control shift G if you're on a Mac it might be Control G that didn't work for me I tried it what is it command shift period control shift period nope no good so we'll just go to our settings and open it up
hidden Files come on show hidden files I just want to see them show hidden files files exclude preference settings files um yeah so I I want to see that there we go so it's it's it's hiding some of them the reason I want to go here is check the config I want to make sure that we're going to ours because if you try to push to mine let's say you cloned mine it would not work because you can't push to mine you don't have permission to do so but I I should have permission to push
to my own here's another question when I upload those keys what account was I in okay I'm in the correct account so this is the one that I'm supposed to be in uh uh is it though because I might have had another tab open let's make sure we're 100% in the right location we are here I'm going to go to SSH Keys it's not here you think you know what I think I did I might have added it to the other account or we deleted it we didn't add it back in so I'm going to
go ahead and add this in Windows local you really have to think these things through and think okay check check check check check all right and so I what I want is that SSH key again I think it's going to work this time okay uh I don't want to add it I just want to C it okay and we'll go back up here and we'll paste it in and we'll hit uh add the key and now this time I think it's going to work get push excellent okay great so that's now done I want to
go back here I'm going to delete the repo again because we have one more way that we can do it okay and the last way is going to be with the GitHub CLI so I'm on local so I might as well just go ahead and install it I'm going to delete this key because I don't want to have it I want to see if it will work without a personal access token or or without SSH so that we can attempt to log in so what I want to do here is I want to install uh
that and I believe that it would use Brew or whatever so type in GitHub CLI install we'll go here and um it's going to be different based on what you use so if you have home brew installed you can use Homebrew if it's Linux um it's going to be different um I'm looking for Ubuntu in particular so Debbie and Ubuntu are basically the same way of installing it and um I think that we could probably just do it this way so we need to do a pseudo app update I guess I have to put my
password in here is this my password like I don't know yep that was my password so that's doing an update once that's done it will do the next step so I'm going to go grab this here we're going to go back over to GitHub codes spaces close this one out I guess we never saved it that's why it didn't work um and so our third way is GitHub CLI install the CLI okay EG Ubuntu for Linux Okay so in this particular case I believe this is Ubuntu and that's Ubuntu they're both Ubuntu and I'm going
to grab the next line here and we'll paste that in that's going to install it could not locate the package if it couldn't locate the package it probably doesn't know where the package is so I have to go back over here and so this adds The Source that's what it wants so I'm going to just go grab this whole darn thing is this all the same command no it's not but we we'll grab the whole thing and this will actually install all of it in one go paste you can actually see that it's doing an
update and then it's installing it here so I'll go back here and update our docs a bit messy okay and so once that's installed uh we'll have to do a couple things we'll have to do GH login and then we'll have to do GH clown and get that link we'll go grab it from our repo um so go here we'll go to code we'll go to CLI we'll grab this and we'll bring this on up here and I'm going to do GP well I want to paste that into our uh example here see GH clone
Okay g GH login now we technically don't need to log in for uh this to work should be oh I think it's j off login that's probably why there we go GitHub um oh we're going to choose a method uh htps authenticate with your GitHub credentials yeah I thought it was going to just do something for us but apparently it's going to have to rely on on something like that so if that's the case I think what I would rather do is use the SSH key so I just hit control C to log out of
that and what I'm going to do I'm going have to go back and put that that SSH key back in because we deleted it um it doesn't matter if you see mine because you don't have my you can't see my private key so you really shouldn't show anyone your public key but it's not going to hurt that you see mine um I'm going to go back over to here and add it again I guess we're going to go down to here we're going to add that SSH key Windows local okay and then I'm going to
go back over to here we'll type in clear um I want to just update the doc so that says off here we'll save that we'll bring this back up we'll type in clear and I want to do GH off login and we'll log with GitHub we'll use SSH and we'll tell it which key to use which is pretty cool and the title for your SSH [Music] key well why do I need to upload it title for your SSH key oh it'll actually upload it for us oh that's cool okay clear it let's go back I
didn't know could do that we'll go ahead and hit delete and we'll try this again GH login that's really cool I like that and we'll say SSH I also wonder if it would generate out your token for you so we'll use this one and we'll say windows local and um we'll log in with a we web browser first copy this onetime code into your browser press enter to open github.com your browser okay I'll hit enter and I'm going to log in with this we'll enter that code in we'll continue and we'll authorize it and so
now we're logged in okay so we can now use GitHub to clone the the CLI and we'll go back over to here okay and we'll copy this and we'll go back over to here and we'll paste this in and we should be able to clone so maybe I I typed that command wrong it doesn't look right it looks like it's doubled in here I'll try this again we'll hit enter sorry try this again that's not working so I'm doing something wrong let's go back over to our docks have it in here double and uh oh
maybe it's like GitHub repo clone that's probably what it is there we go and so we clone the repo all right we'll CD into that directory as per usual um we'll go in here and just say hello get add uh all get commit say GitHub C way and we'll say get push oops get push and that worked okay so that's all of our ways that we can do it locally I'm pretty much done with this I'm going to close it out and so we've learned um all the ways here so that's pretty sweet um this
get get repo clone so that's good we learned about commits okay um learned about adding we haven't learned about branching so branching is pretty straightforward we're going to be doing a lot of branching so I don't feel like I have to do a lot here right now um but uh what we can do here is we can type in get Branch to get a list of branch branches say list of branches okay and we can go ahead and create ourselves a new Branch so I'm going to go ahead and type in get Branch um and
then type a name so we'll say um Dev and I'll hit enter so create a new branch Branch name if I type in get Branch I can get a list of them okay and so I can check out that Branch so we'll say check out the branch get Branch I'm sorry get checkout Dev get checkout Dev and notice I'm in dep this highlighting stuff here will not be in your local terminal uh you might have to install something or additional or invs code it may or may not show up just understand that this is pre-loaded
with some stuff in here um so we're in Dev right now we're actually in a different branch so I'm going to do um get um uh I want to change this file here so we go ahead and just change it uh where is it'll refresh oh you know the thing is is that we've been making changes but we haven't been doing them in here so if I do get fetch for a second you'll notice that origin main is there's more going on here than you than you think and so by doing fetch we can actually
see if we're out of date or not um and so my issue right now is there's that file I don't have access to it but I'm going to go ahead and make it again I'm say hello here and I'll say uh Branch version okay and I'm going to do get status and so we have that there um so what we can do is go ahead and go get add all and I'll say get commit hyphen M uh changes okay and now what I want to do is get push and push that branch and right away
you're going to notice that it's not going to work and the reason why is that Branch does not have a remote right that's really important because if it doesn't have a remote reference it's not going to be able to push and there is no branch in our GitHub repo right now if we go back to our repo um in mine is listed over here remember your name is different than my name so type yours GitHub examples let's go here into here um you know I have a branch here it should well we don't have one
yet we haven't created one yet so that's one thing uh that we need to make note of um so the thing is and the other thing is like um have we been making these changes this entire time yeah we have um but anyway so yeah we have a branch that's that locally but we don't have one that exists yet and so the idea is that we want to we can either create the branch and then push to it or we can basically run this command and do it in one go okay so what I'm going
to do is type in get push and I'm actually going to type in U because that's a much shorter version of this I'm going type in origin Dev okay and now it is tracking our Dev to the remote Dev if we go over here this Branch might exist now okay and if we drop down you can see Dev is there we haven't pushed anything into it if you go to commits our new commits not there yet right go to main you'll notice main is over here right um my point is is that uh we need
to for this to work we will need to um uh push this change so we have this one file and I'm going to go ahead and say uh get status okay oh did we actually push it oh I think we accidentally pushed it so maybe we did make that change yeah we did it's over here okay sorry so I thought we had not pushed it yet but we did um now the question is how do we visualize this in a way that is easy to read and that's where we would have an extension normally there's
one installed like in git pod they'll have pre-installed but apparently this one doesn't um so what we'll do is go to extensions we'll type in get tree okay because I want to be able to see what we're doing and there's G graph so G graph is the one I usually use I think we'll go ahead and install that there's another one um I'm not sure like get lens some of these can get pretty crazy so I try to keep it really simple get history yeah we'll stick with G graft and so once get graph is
installed if we go over to here we should have a new icon up here um and so I don't see it sometimes down below it'll be down here so I can click this no that doesn't help either and so maybe what we need to do is reload our environment for it to show up I'm going to hit Refresh on here and just hit enter and so hopefully what this will do is load it up again so we can see that because I want to see that g graph what do you mean doesn't exist uh okay
it's telling me it didn't exist because I hit a refresh there um okay I'll open up code spaces because it seems like it's confused right now this one's running open in browser we'll try this again here give it a moment to reopen what do you mean ites doesn't exist it's right here you're crazy we have it open so it's saying it doesn't exist but we clearly have it open but it's opening the dogit directory okay let's CD back for a second what is going on oh no I really don't want to lose my changes I
don't think I'm going to because everything's pushed but this is where it's kind of acting weird again I don't use gith GitHub codes spaces I prefer git pod but this one's acting a little bit funny um and so in this case I'm not 100% sure what to do because it does exist here so what I'm going to do is stop this code space okay and I'm going to start it up again and maybe what this will do is it will un Jank it okay so I'll be back here once once it stops and then restarts
it takes a little bit of time okay okay it shows me this button I'm going to hit restart start code workspace and hopefully this will resolve our issue it's saying the workspace does not exist the terminal process failed to launch the starting directory so it's getting confused I don't know what's going on here but this workspace is is defunct so what I'm going to do is again stop this workspace we'll open up code spaces I'm going to stop this one and I'm going to delete it because it's not really doing what I wanted to do
I'm not going to lose anything because everything we worked on we should have pushed at this point but uh yeah you just got to be careful code spaces because it kind of Acts a little funny but uh we'll go back over here and what I'm going to do is I actually want to open up this Branch we have the two branches but I want to open up code spaces in this Branch I'm going to go ahead and drop this down I'm going to say create a code space on dev okay and so hopefully we don't
run into any more issues it looks like it's losing all my settings so it's not persisting them uh there are ways to persist them syncing settings um there's an option I think here we go into here because this is going to drive me crazy if we don't do this and we'll say automatically detect not DOT files but um sync settings so I'm going to click this and I'm hoping that what this will do is anytime we change branches or stuff it's going to remember my settings I don't want to keep changing them so I'm going
to go here and it should be syncing settings now I'm going to go and change my theme again and I'm going to go over to settings I'm going to go to uh uh I'll change the font size to 20 here 20 was a bit too large we'll say terminal font here I'll change this to 18 okay and so I also want to make sure that my extension's installed so I'll try this again personally I think they should have this pre-installed that's the other one so there's get log graph and get graph I'm going to install
both of these because I actually like both of them to be honest and uh we can add this to our Dev container yeah make a new Dev container um I don't know make an empty Dev container I want whatever the base one is base Bare Bones you know I just want the configuration I'm going to go ahead and just say barebones Ruby here sure and just say Okay I I don't want that so I'm just trying to create this file in here so it knows to remember our extensions um for this repo go back and
do that also for here it should remember it but in case it doesn't I'm going to put this in here and I'm going to go modify the step container this is also something we're going to learn about later on um I don't want to build anything so I'm just going to take this out here here and I'm just going to take this out as well U just say basic config get graph I don't see the other one added there I'm G to go back over here and try this again get graph um add to Dev
container there they're both added there but the reason I'm doing that is I really want to get these tools in here so now they're here they show up here and they show up down below so this is one of them we'll open that up it's before I made a pull request and there's the other one so I just want to show you there's more than one kind of tool that you can visualize the stuff and sometimes it give you different information and so right now we're here we're in Dev okay and we added that one
those couple changes over here and the idea is that we branched over here so this doesn't know about these changes and vice versa and we got a whole lot going on here okay and so this is is where we get into things like merging so if we want to bring um Dev up to date with main which we really should do we should merge main into Deb and that's what I'm going to do so I'm in dab I'm going to type in get merge main um and sorry I should I should note that there's origin
Main and then main so that's there's what's on Origin there's what's on our local Main and so our local Main might not have this stuff okay if I go over here it's a bit more clear because it shows them as separate thing so our head shows us exactly where we are right now we have origin Dev origin main so I'm going to do a get fetch because I want to know where we are right now and it looks like we're all up to date so we're fine what I'm going to do is I'm going to
type in get merge Main and it's saying did you mean to merge no I wanted to merge Main and so it looks like we don't have a local branch of main okay so what I'm going to do is type in get checkout main okay and so now if we go back up here we maybe there's some way to refresh this like a refresh button notice there's two now okay so before it didn't even know there was a main I did check out and immediately it said there was no main branch but it said oh you
have one on Origin main we'll just add it here now it's here okay so now we have a main and I can go back to Dev and I'm just going to do get fet it's just out of habit and so now we see both of them here okay so now I'm going to do get merge main it says we have a conflict okay and the reason why is that we went ahead and we changed read me and that other file and they exist there as well and so sometimes you have to resolve conflicts okay so
this say Auto merging merging conflict automatic merge failed fa fix the conflictions in order to complete this here and so normally what happens if you pull or sorry if you try to do if you try to do a pull or you try to merge and there's a conflict you have to resolve it and so notice right away that now we have new files over here this wasn't here before we go here we can see type in get status it wants us to resolve it and the message is a little bit different here says you have
un unmerged paths so we gotta fix this here and so it's showing us in this file we have two versions which one do you want to keep the top one or the bottom one so I'm going to just take the top part and take out this part because we don't want that committed and so these it had no problem and so what I want to do is I just want to go ahead and add this and we're basically just adding everything uh adding everything at this point so I'm say get add all and then I
going to say get commit and in this case you do not want to put a a get commit message in here because it needs to put it its own in here I'm going to hit enter and it's going to open and this is the this is the merge message it has to be this you don't ever set this so notice I typed in get commit and it also filled it in here and so all I'm going to do is close this and now it's merged it so if we go back over here now we can
see it represented okay so we took that and we brought that up to dat right okay so and the reason we want to do that is so that when we merge back into main we don't have to deal with conflicts you really don't want to deal with conflicts merging in main you want to do deal with those those conflicts in your branch before you merge back in main okay so that's good now what we can do is now that we're all up to date we can continue to work on our readme file so I don't
need this dogger file this wasn't supposed to be here but that's a great opportunity for us to delete it because I don't want to launch up a ruby environment um so what I'm going to do is type in get um get remove well first I want to yeah get remove Docker file no no no I don't want to do that um I just want I'm going to go ahead and delete this here we'll just delete this permanently so if we go over here this should show up here yeah we can do that I think we
could have just typed in if we deleted the file it would show up there anyway but um G remove is a bit funny because you can have files you want to remove from tracking that are in your repo to say stop tracking this forever um or uh if there's even there's pre previous versions of it and there's removing the file so we'll just delete and now we'll keep it simple so I'm going say get ad and we'll say get commit hyphen M remove Docker file we don't want to build a Ruby Ruby environment um so
this I have to put a single comma there so I need to point out that like we can rebuild our codes space um and and then it would build that Docker file but but we'd have to manually do that because it won't do that until we rebuild it manually but anyway so we have that Chang there and I'm going to go ahead and do a get push and we go back and take a look and we can see that this is now pushed up to date it wasn't pushed there a moment ago and so now
Main's starting to get out of date but let's go over to our readme file in our crash course and what I want to do here so I want to do a few a bit more documentation so we'll go down here here below and so we can add remotes but often you will just add remotes when you are doing uh when you via Upstream when adding a branch so be get Branch um U origin new feature but you could do it like a get remote at I like I rarely ever do that so I I don't
feel like really covering that here that would be something I would actually cover in a proper uh get crash course um I don't know if we really need to do stashing right now we could leave it or take it get merge main so get checkout Dev get merge main okay so I like we've done a lot here I don't want to overload you folks um I think I'll just show you stashing really quick so um let's say let's say I wasn't I wanted to work on something else and I just wanted to move this to
a side and come back to it later what I can do is add all the file so it's staged get status okay and I could just stash these for layer I type in get stash and what that will do is it will put it in in I'll just put it somewhere okay it'll put in my stash if I type in get stash list it's here in my stash okay and I can bring it back and say get stash pop and pop it off the stash and bring it back you wouldn't want to do this in
a cloud developer environment because you could lose changes but if you're in a local developer environment you might just have stashes and just hold on to them for a long time but a lot of times you need to move things out of the way but usually you want to name your stash so you'll say get stash save and then say um read me change so we know exactly what it is and then we can do get stash list and see what's there and then we can say get stash apply and instead of popping it'll just
apply the last one um so there are some commands there that are useful so we have get stash list get stash get stash save my name then get stash uh apply a pop and we have apply and then we have get stash pop okay so those are really useful I use them all the time again I'm hoping that as we go through this course we'll run into scenarios where we need to use them um but I do actually want to add this so I'm going to go ahead and get get commit hyph M minor updates
um I'm just going to refresh this make sure I have that latest one there sometimes you miss them and I'm going to go ahead and do that and I just want to show you what the graph looks like so you can see even shows the stashes as well and dev's in front of it we're going to do get push okay now let's say we wanted to do a pull request that's something we're going to learn later in more detail but I'm going to just do it really quickly a common thing that you should do is
open up pull request so um I'm kind of done with this uh workspace I'm going to go ahead and just close it out because I think the rest of this we don't need to do in here I'm going to go ahead and stop this okay we can leave it in this state if we come decide to come back to this but I'm going to just stop it for now and I want to go back to our repo GitHub Andie Brown and we'll go to our repo and I'm going to go ahead and open up a
new pull request so I'll go here I'm going to create a new po request and I want to have the polar request come from Dev into this it's showing me everything I'm not sure why it's doing that but I'm going to go here and go from Dev into Maine and from Andrew Brown into Andrew Brown I want to be into my own I want to merge I want to make a pull request into my own there we go it's simplified that's what you should see and so what I'll go go ahead to do is hit
create pull request and the idea is that this would be an opportunity for people to review it so uh will you accept my code right and the idea is that somebody's supposed to review it now because I'm the only one in my own repo um I'm just going to merge it myself and confirm that and so the idea is that that is now merged if we were in GitHub we would see that that was now merged into main okay all right so now what I want to show you is just the last thing is I
just want to show you how I would bring these changes into my Fork so I'm going to switch back into my other account actually before I do that I'm going to go ahead and go into my poll request and I'm going to create a new pull request and I'm going to make a pull request from Main from this GitHub account into the exam Pro one the base one I'm going to go ahead and create this poll request I'm not telling you to do this please don't do this because I don't want to deal with a
bunch of pull requests this will be uh documentation changes documentation for GitHub uh or sorry git crash course I think I called this like GitHub crash course which it should be really GitHub git crash sces show me the basics of G okay so go ahead and create that pull request all right and the thing is like I can't merge it from here because I don't own that other one so what I'll do is switch over to this and now I'm going to go and see that there's a poll request and it's coming in from Andrew
Brown oh how nice of this person and I'm going to go take a look here and I can see that they have some changes and I can go and review their C Cod and then ask them to make fixes I can go here and say hey do this do that and then I might accept it but I'm going to go ahead and approve it I don't need to approve it here because there's no required reviewers for this but I'll just say it's approved and then we'll go over to code and I'm going to go ahead
and sorry pull requests I'm going to go ahead and merge this stuff in because I I want this stuff okay and we'll merge that in and now it's merged just one other thing I want to want to see if I actually named this right get crash course yeah it's named right okay great and so there's our stuff that's all the stuff we learned was this a mess yes could I have taught this a lot better if I organized it yeah but I got to record the rest of the course and again you know if I'm
going to make a a proper get crash course I'll do it somewhere else um but I just want to get you the basics and hopefully that was helpful we wasted a lot of time on cloning but that's something that's really important to know how to do and I'll see you in the next one ciao [Music] hey this is Angie Brown from exam Pro and we are taking a look at get commit so we're going to take a look at a series of G components uh in this course um it's not really a focus on get
skills but more so GitHub but I want to make sure you still have some git skills so after we go through uh some of these things I'll then do like a really quick and dirty uh git uh command crash course okay so a g commit represents incremental changes to a codebase represented with a git tree so a graph at a specific time so here we can see that git tree um this is in GitHub so it's not the full representation when we go into U vs code we will we can see a better representation of
it there are external tools for that but for the most part the idea is that you have um uh you have get commits that are over a historical period of time then we have have our uh git commit here is one within uh GitHub that I clicked through and I looked at okay and from here a get commit contains additional modifications deletions of files uh additions and deletions of file contents and it's not the whole file themselves and this is a strategy to make the uh commits efficient because if you if you were to store
full copies in every single commit your repo would get really big really fast I'm going to repeat that again and we'll talk about the contents of commit fils here just shortly each commit has a Shaw hash that acts as an ID so it looks something like this we can use this uh to check out very specific commits which is very useful I want to repeat git does not store the whole files in each commit but rather the state of changes this greatly reduces the file size so uh so for developers to the developer you it
will look like a whole file but really when you store it in in uh your git tree it's not going to be like that um so what are the components of a git commit we talked a little bit about that but we have that commit hash that is a unique Shaw one hash identifier for the commit I don't know if it's really Shaw one because I'm not really familiar with all the different types of Shaw but it's Shaw something uh we have the author information so we have name and email often you have to configure
git to say what email you're utilizing the name so that's attached to the commit message uh or the commit itself you have the commit message this is the description of uh the the Commit This is we're going to be spending a lot of time when you are making commits because you want to write good commit messages you have a time stamp so this is the day and time when the commit was made um you have the parent commit hash this is a sha and hash of the Commit This commit is based on I don't really
understand that because I've never had to bother with the parent one but it is something that's in there and the snapshot of the content a snapshot of the project at the time the commit not the actual files but references to them and the changes that are occurring so if you had vs code open and we were taking a look at a um at uh changes that we have staged so they haven't been committed yet but you can see here we have uh the commit message it says remove old comments we have files changed that we
plan on putting in the commit and you can see some deletions there on the right hand side we can have additions so hopefully it's very clear what a uh a git commit is you are going to need to know these basic commands and we will get a little bit practice again quick and dirty this is not a full-blown git course but it'll be enough to get you by so that you can do the GitHub stuff so we have a bunch of stuff there like get add get remove get Comm message with the The Hyphen m
flag to add a message hyphen a to automatically stage all track changes if you have a commit you haven't pushed it up uh to your uh your remote repo you can amend it um you can create empty commits uh you can specify the author if you need to you can check out a very specific commit but yeah that is get commits in a nutshell I'll see you in the next one [Music] ciao hey this is Angie Brown and we are taking a look at git Branch so G branch is a Divergence of the state of
the repo there might be better uh descriptions than that but that's the way I think of it you can think of branches as being copies of a point in time that have been modified to be different and so what I want to do is Step you through what it would look like working with get branches and this is going to be a little bit messy and it doesn't matter if you can remember or make sense of all this because it will make more sense when we start working with it but do your best to follow
along here so imagine we have a git repo in that git repo we have a main branch and basically all git repos have a main branch and that's pretty much the standard name for them now and we're going to also have a production Branch so the main branch is where we're going to have code uh that features and bugs will be um rolled up into and then when we're ready to push it out for production it will go to the production branch and some cicd tool we'll push it out and automatically deploy it so um
let's imagine we already have a commit in the main branch uh maybe there are previous versions in the production Branch we're not going to worry about it so uh you have developer a developer a needs to to work on a very specific feature they're going to open up a feature branch and in there they're going to put in some commits and they're working along uh meanwhile in the company somebody already has pushed some stuff into the main branch it's not ready to go in production but that commit is now out so what's important to note
here is that feature Branch one is not aware of that new commit because things are happening asynchronous a in async manner in different branches and this is the challenge with get is that you have to deal with all this Asing stuff and make sure you bring those changes into yours deal with conflicts things like that now let's say we have developer B and developer B is working on feature Branch to and when they started on their on their um uh their feature they decided to Branch from this point in time okay and so they start
working on it and they get their feature uh done and um they get they talk to their um uh the director of engineering and and they make a poll request the poll request gets accepted it gets merged back into main okay and so developer a who's working on uh feature Branch one has all these changes that they still don't have so let's remember that they're going to have to deal with that at some point but anyway that feature got merged into Main and it looks like it's ready to go into production so it gets merged
into production and so this particular commit contains I'm G get my pen out here contains all of this information right and it's all packed into here if that makes sense okay I'm just going to erase that here and so that gets ped production and it gets tagged a lot of cicd systems will trigger when a tag is applied that's definitely how I do it but now coming back to developer a they're on feature Branch one and they have all the stuff um that they need to get their Branch up to date so what they'll do
is they'll merge back in in their Direction I know it doesn't show a merge but they'll merge that information into feature Branch one so they are now up to date and they have now finish their feature by doing a bit extra work and so they've merged back into into the main branch and now their stuff is to be rolled up to production so it gets merged into production and then that gets Tagged so hopefully that gives you kind of an idea of uh this kind of workflow this should have really been like that uh and
this actually has a very particular name it's called the GitHub flow now there are some variations of this so that's why I say very close to it because in case I'm wrong I want to have that buffer to say that well I didn't say this is exactly the GitHub workflow but this more or less is the GitHub workflow where you are creating branches feature branches merging it back into some other branch and then you have a branch for production uh you can have branches for all sorts of things you can have specific environment Branch branches
like staging development production you can have specific branches to developers so like based on their names you can have branches per feature features branches per bugs is going to be based on what your team wants to do all right uh there are definitely get Branch commands you should absolutely know and we will do again a quick quick and dirty crash course so you are familiar with it this is a extremely common pattern that you're going to find that you'll be doing which is you'll be creating a new Branch for a feature you're going to be
adding changes you're going to be pushing it Upstream we might do this via vs code using the G CLI we might be doing this using using GitHub uh creating a branch from an issue but we'll definitely be doing this because this is something that happens a lot um in professional um uh teams is that they're creating feature branches so hopefully that makes sense and again if it doesn't wait till we go ahead and do it and then it will make more sense then okay [Music] ciao hey this is Angie Brown and we are taking a
look at get repos so these represent the reference to a remote location where a copy of your repo is hosted so when I say remote get remote I'm saying remote reference or remote ref you might see those terms uh used all over the place uh you can have multiple remote entries uh or remote references for your git repo and the most common one you're going to see is called origin it's almost always uh there everybody seems to use it it indicates the central or golden repo everyone is working from and represents the source of Truth
uh the remote entries or references are stored in your dogit config we don't really talk about this dogit folder in any of the slides but the dogit folder is how you know that your project is a uh has a a git repo in it because it needs that folder uh to initialize a git repo we'll look at that in the quick and dirty crash course um so in here in the config file you can see we have remote defined so this format of a file is called a toml file um so anytime you see those
Square braces and then definitions that's usually a toml file but I'm just going to get my pen tool out here the idea here is we're saying we uh we have a remote named origin and the URL is pointing to our GitHub repo this part says how it should fetch I'm not going to get into that right now and then down below we can see we have some branches that we are tracking and they're pointing to remote origin and then they they're saying that we want to merge um there so hopefully that is clear notice remote
names can be referenced so we have origin up here and it's referencing this up here okay so I'm just going to clear my annotations here so this is a little bit more clear and there are a bunch of get remote commands you should know I don't remember the most like the git remote ad I don't ever remember that one because often when you clone it's going to add them anyway and so usually you pull them from GitHub but you should know push you should know pull you should know fetch uh and when you are creating
branches you should know um how to uh push upstream and we'll talk about upstream and downstream next [Music] okay all right let's talk about the concepts of upstream and downstream so imagine we have GitHub who is hosting our remote repository and then we have our local developer environment or Cloud developer environment uh this is local basically where we are doing our work and so they both have a main repo because we know that git is decentralized so we can have repos in more than one place we might already have some commits on the remote side
but what's going to glue these two together is going to be the remote and so we set up a remote tracking Branch okay and and you'll see that turn when you create uh and you push branches up because the idea is that it's tracking uh the origin is pointing to main so this is the way we track them uh we saw that was stored in theg getconfig so when we go ahead and we perform a poll from our local developer environment we call this Downstream we're pulling Downstream so a repo that pulls or clones from
another repo and just understand this is relative to the direction or the perspective um of who's pulling so if the remote was pulling it would be down stream it's it's anytime you're pulling it's always Downstream and now imagine we have commits we've been working locally we want to push those up to remote we would call that Upstream so this is when you are pushing changes so that's Upstream that's Downstream and when we have a remote reference it is a tracking Branch so there you go [Music] okay hey this is angre brown we are taking a
look at GitHub flow so this is a lightweight workflow for multiple developers working on a single repo there's a lot of variations on this uh so this is not a technically perfect description of it but there really isn't one and I want to show you a really old graphic um I don't know how old this is but I've seen this in older ones maybe all the way back to 2008 at least and I remember before GitHub flow because GitHub came or sorry git came out in 2005 and it took a few years to gain adoption
so for a long period for a few years we just had a mess of stuff and then somebody came up with this maybe it was GitHub I'm not sure but uh it's called the GitHub flow and um here we have a bunch of branches and it looks very similar to the one that I showed you in get Branch it's a little bit different and so the big difference is that well first of all uh we don't call it Master anymore we call it main but my main was the develop branch and then I would call
this Branch master I would have called it production because I think that makes more sense and a lot of people do that these days but when it first came out this is how we were doing it okay so understand as variation but the idea is that you have this one branch I call it main this is developed and it holds things that um that uh that hold feature branches or hot fixes and everything it's basically like rolls everything up but it's not in production yet and so the idea is that when these things are ready
for um production you can push them out into a release Branch a release Branch could be also called staging that's normally what we call uh today and this could be where it would roll out so once you push stuff here this could go out and execute a cicd pipeline and it would set up a staging environment so that QA could be done on it or any kind of load balancing could be done on it or stress testing um there and the idea is that as developers you would open up feature branches off of develop and
as you complete them they would come back in here uh and they would get merged in and then when things were really ready you take it take it from uh release branches and push it out to your production branch which they're calling uh here uh Master if for whatever reason you had a serious problem you had to fix really quickly you could um uh create a branch off a master into the hot fixes and then merge it back in skipping all the stuff down below uh you know again I wouldn't do it this way anymore
I would be surprised if companies are sticking uh to this method but this is the original way I just wanted to show you that there is variation um and you know a lot of people do skip having a release branch and they'll just deploy often and into production so it's going to be really dependent on your team so here we'll just kind of loosely describe GitHub flow you create a branch for each new task or feature create a new Branch off the main branch add commits make changes in commits commit them to your branch open
a poll request start a discussion about your commits reviewing code in the poll request discuss a review share your poll requests with teammates for feedback deploy test your changes in production environment um so yeah oh and the last thing would be merge so once your changes are verified merge them into the main branch so that's the general concepts of it and hopefully that makes sense and we will see you in the next [Music] one hey this is Angie Brown and we are taking a look at the GitHub CLI so this is a command line interface
to interact with your GitHub account you can quickly perform common GitHub actions without leaving your developer environment and uh if you went through the quick and dirty um git uh crash course then you definitely got some exposure to GitHub CLI but the idea is that you'd have to log in you can perform actions there so we have something like creating a repo creating an issue uh reviewing a PR there's a lot of uh CLI commands uh the get up clii can be installed on Windows Linux or Mac OS um that's an example of using Brew
to install it if you have it for um uh Dev containers you can specify it as a feature to get installed so that is a very easy and quick way to have it uh installed there and just to give an idea of commands we have our core commands we have a lot of additional commands and then we have one specific to GitHub uh actions command so we're definitely going to get some exposure uh to GitHub CLI uh in this course but there you go [Music] all right so in this follow along I want to take
a look at the GitHub CLI and see if we can do a few different things with it what I'm going to do is switch over to my other account um this is just my uh playaround account for for GitHub and we should already have a repo in here called GitHub examples and what I want to do is I want to um you know just do some things in the CLI so I need some kind of environment to work in and so what we'll do is launch up a code space uh we do have this older
one um I think what I'll do is make a new one I don't think it really matters if we make an old or new one that other one is stopped so we'll open this one up and we'll see if the GitHub CLI is already pre-installed it could be pre-installed on this because I would think that if well if I was GitHub I would have it pre-installed so people could start using my product right away but if it's not we'll definitely go ahead and take a look at how to install it we did install it manually
locally um in the git crash course a quick and dirty crash course so uh you know if we don't have to show the install I'd rather skip that but we'll wait for this to spin up okay I have no idea why but that took a little bit time to spin up um you know our goal isn't to really make anything just to play around with the um the CLI here the code space is currently running in recovery mode due to configuration error I didn't do anything I don't care it's um I mean it's a new
environment why should it be recovering is there something it can't do yeah I'm not sure about this so what I'm going to do because I don't trust this workspace is um this one is running here I don't know we'll just see what we can do with it but it didn't pick up myh settings when I told it to save it earlier so I don't know if it's because it's in recovery mode or not but for the time being I'm going to go ahead and change the theme so I'm not upset there we go that's a
lot better and I want to see if we have um GH install so it's not installed which is totally fine um so what I'm going to do is if we had this installed can we install it through here sometimes you can install stuff through plugins right and so I'm just curious if we could do that there no okay so that's fine we'll go ahead and install this and I definitely know that Brew is installed or maybe it's not installed on this let's find out it is installed on git pod but I'm not sure about GitHub
it's not okay so what we'll do is we'll look up the GitHub CLI and we'll go ahead and install it we already did this before but we'll do it again and what we're looking for is those install instructions and we want it for um Linux okay so we'll go over into here into Linux and we'll grab this oneline command it looks like a lot but it's really just doing this update and this install like down here but it has to add the repo so it knows where to install it from but I'm going to grab
that big thing there and we're going to go ahead and paste that on in say allow and hit enter and um it failed it failed and I can't look at I can't see what I'm doing so I'm G to bump up this font I do not like GitHub code spaces I'm so sorry I really like G pod and we're going to go here and say terminal font I'll try not to complain too much about it in the course but uh I can't promise anything I'm going to copy that again and we'll try this again it
hit enter no such file directory okay um yeah I don't know what you want so there's this line here okay maybe because gpg gpg isn't installed sometimes you don't have to do a gpg check but we might have to with this and um failure to write destination okay so if that's not working maybe what we could do in an easier way is we could just add it um to the uh uh to the that this file this code space is file so we could just make a Dev container um and maybe that would be less
of an issue so what I'll do is I want to add a Dev container um we'll go up to here Dev container like that we actually already have one from before and maybe we can just throw it in here so grab this maybe we do want to commit this maybe this is a good good idea um and so I'll put this here and I need a comma there and so the idea here is that this should install the CLI into this environment and maybe the reason why this thing messed up was because it wasn't specifying
any base image and that's why it got upset because when we did this in the tutorial earlier um it kind of complained or sorry like when we spun this up it complained but we didn't specify a base image so I'm going to look up what the base image is for Dev container the base image for GitHub is and maybe that will help us if that doesn't help let's go let's go ask chaty BT log in let me in let me in come on I pay for this let me in what is the what is the
base image used for uh Dev container for GitHub Cod spaces let's see if that can figure it out it's probably just going to go to the um the documentation but um I don't remember where it is so if you don't specify one it will create in the default one okay that's what I would rather it do so I'm going to leave it alone and what I want to do is rebuild uh this environment because we've added this change before we do I need to commit this maybe so just say um it should install the GitHub
CLI go ahead and do that and I'll say okay so it should sync it up good and so let's see if we can find the rebuild I'm clicking up here rebuild that's no good we can open up the command pallet this way command pallet has all the commands for for vs code and there should probably be something for codes space so if I type in codes spaces there's probably something here to rebuild there it is rebuild container so I'm going to go ahead and rebuild that container I'm going to go ahead and hit rebuild and
so I'm hoping that we'll install the CLI and that avoids us having to install gpg or whatever it wants because that's a headache and I don't want to deal with that so see you back here when this finish is building okay all right we're in it says the code space is currently running in recovery mode due to a configuration ER please review the creation logs update your Dev container as needed or rebuild the container so clearly doesn't like something about my file I'm not really sure because there's not a whole lot in it uh um
so we have command control shift p okay control shift p hey like learning's learning right and uh we want to view creation blogs oh that's just to open up the uh command pallet view creation log and somewhere here it's messing up now I don't understand how it could be messing up because we literally have next nothing in it um yeah this is supposed to be an easy easy GitHub CLI tutorial failed to create the container an error occurred unified containers error creating fail doesn't even tell us why it's just like nope it doesn't work maybe
it's up here um no matching entries and P unable to find us your Dev container okay maybe it's this okay let's take this out all right and uh that's probably the reason why okay so we'll save that okay we'll have to update that don't change remote user okay want Push to Main and I'm going to try to rebuild this again I'll open up command pallet down here below just in case and I want to say rebuild um I want to do like a full rebuild let's do a full rebuild that's fine let's rebuild and we'll
get it going this next one okay I'll see you back in a moment okay so I think that resolve the issue it took a while for that to rebuild but what I want to see is if the C is in here so I'm going to type in GH and there it is okay great so that's the easy way to get in there as long as you don't make any mistakes in your Dev container uh Jason or J yes or Json Json file and so let's go ahead and see what kind of actions we can perform
so what I'll do is go over and type in GitHub CLI and we'll take a look at the documentation and see that's not what I want I want the uh official documentation so we can see what kind of commands we can get here it is okay so here's all of our commands and the question first is are we logged in because that's something we might need to do so let's go ahead and type in GH login oh sorry GH off log in to log the C and we have two options we'll do github.com it says
the value of the GitHub token environment is being used for authentication to uh okay so it sounds like we already are authenticated because of um get up code spaces and it's loading some kind of temporary um token in here something we could check here is to see if there actually is a token being set so I'm going to type in EnV grep and we'll type in GH and I don't see anything there but apparently it seems to think that it is ready to utilize so maybe what we could do is list out repos so I
imagine if we go here there's probably something like list there is and we could try to list our repos so let's go ahead and try that GH repo list and we have a repo that's actually a really nice display what else can we take a look at here um so again back over to the repo we can list our repo what if we go to view what would that do let's take a look GH repo View and I was hoping that it would set it would select the current one but apparently it didn't but we
can do uh GH repo set default and I got to type it right maybe it'll let us choose the repo so we don't have to goof around and so there it is we can choose one and apparently we have two exam Pro and the Andrew WC Brown curious that it's showing forked ones but this is the one I want CU this is the account I'm in right now and so let's go ahead and type in GH repo View and so now we can see some stuff in here um not a lot of information it looks
like it's kind of the information about maybe the description or stuff like that so I was hoping to see a little bit more there but that's okay let's go down here and see what else we can do um we could edit our repo like we could change features turn things on or off that's not that interesting something we might want to do is maybe we might want to uh maybe change our labels let's go ahead and try that out so I'm going go here and say GH labels list um is it just label or labels
label oh cool yeah we can see our codes can we add a new one in here uh we'll go to create so GH label so we try this one here copy it paste it in and there already is a bug so we can't have two so I'll go here and just say um danger something really not right we'll hit enter and so it looks like we've created another label let's go ahead and hit up okay so that looks really good there bug isn't working good um if we wanted to create a new repo sometimes what
they'll do is they'll um they'll create like a uh a wizard in here so if I typed in GH create repo and I said um GitHub we just we'll just do this I bet it will prompt us oh I got to type it right I seem to be typing everything wrong here today repo create and so it'll ask us some things like create a repo from a template repository make a new one so I could do this say GitHub um repo GitHub CLI example and I'll just go hit enter here I'll just make this one
private I could add a readme file we could add a Gore we could say what we want the get ignore to be so maybe it's for C++ now let's add a license we could choose apachi 2.0 um we want to do this we'll say yes and it seems like it should have created but we get a resource not accessible by integration for 43 so I'm not 100% sure as to why we're getting that it could be a permissions issue because everything is based on um that token right and so maybe we have a personal access
token that allows us to read but not write um and we got a 403 right so 403 error is for forbidden meaning we don't have access to do it so what I'm thinking is that we can probably create our own um personal access token and try to get around that so we going to go to settings here I'm going to go all the way down develop for settings and we're going to go into personal access tokens find grain tokens and we'll generate a new token again I don't know if this will work but I'm just
going to try it so we'll just say um uh repo access right let us create a repo and I'm I'm going to set this for tomorrow because I don't need it forever and if it's for all repos then that's a challenge right but then how would you create a token this is public repos so here it says this applies to current and future repos owned by this resource all all includes public repos read only so the other question is is it because we tried to make it a private repo but then why would it have
it as an option if we can do that I mean we could also authenticate uh via SSH so I'm not sure so I guess that's where I'm not 100% sure so maybe we'll just say all repos here and we'll go to repo permissions and I'm looking specifically for repos contents no and carefully looking here to try to find that uh account permissions maybe it feels closer to this type in repo uh let's see here so what does this one do interaction limits uh interaction limits on repost I don't think it's that and so I'm just
carefully looking to figure out what functionality we would have to Prov divide managing repository environments it could be this read write I would probably put this in just because that is the usual um oh repo creation it's up here so I don't think we need these other ones I'm going to leave them on because they're not that big of a deal um and this one says it's mandatory so sure we'll have that in there got it added in there I'm going to go ahead and generate this token and so now we have this token I'm
going to copy it I'm going to go over to here I'm going to type in export GH token and I'm going to go ahead and paste this in and so the idea is that when we use the um uh the CLI it should pick up this as opposed to what what else is on here so I'm typing EnV hyphen GP because I want to make sure that this is actually set as our environment variable if you have other tabs open here it might not show up so just stay on the current tab we'll go ahead
Andy try this again another reason why it might have not worked is because that name was already taken but I don't think so because it's scope based on our user so we go ahead and try this again from scratch so we say GitHub CLI example and then we'll say uh we'll put nothing in there we'll make it private and it was interesting there's a visibility of internal I imagine that maybe that's for Enterprises we'll say yes yes and it doesn't matter I'll just choose that one we'll say yes doesn't matter I'll choose that one and
we'll say yes let's see if it works now clone the repo locally yeah sure let's do that and so now it's working so whatever key whatever personal access token that is somehow being loaded in there did not have the correct permissions we're able to get around that so I don't really want this repost I want to go ahead and delete it um let's go take a look and see what actions we have there we have delete so I'm going to hope that it just will like give me a wizard so I don't have to pick
it so we'll say G H repo delete um and I don't want to delete our current one so I'm going to hit contrl C because that's totally not what I want and we'll go back over to here and we'll take a look and see what we can see for the uh repo I really wish they would list them up here maybe if we go to the getting started or available commands yeah that's a little bit easier it's not great but uh we'll go to repo here and we'll go to delete and we can can put
the repo name here so we'll go back over to uh GitHub here we'll go to our name this is going to be Andrew WC Brown and we should be able to see two repos in here there's our other one I'm going to grab that name and we going to go back over here and I'm going to say that so do we want to delete it so type the name again sure and we have to put in all so uh the username in front of it we'll hit enter and that repost should be now deleted we'll
go back over to here okay and it's deleted so that is in good shape so that's all good so I'm really happy with that I'm going to go ahead and stop this uh uh code code space I'm just going to delete it and you know I'm going to delete the other one I'm just going to make sure I keep everything nice and clean and and not worry about overspend and what I want to do is just merge this into my other account again you don't have to do this you can just watch me do this
but it's good to watch because this is something that people have to do a lot and actually what I should have done is I should have gone over here and I should have done it from here first so I'm going to go here and create a PR create create a new PR and we'll say create is it going in the direction we want yes it is we'll hit create um fix Dev container we'll create that pull request good we'll switch back over to our other account and then I'm going to go into uh the same
repo I'm going to accept it confirm it and we are in good shape I'll see you in the next one [Music] ciao a common strategy for authenticating uh to perform git operations on your remote GitHub repo is by using an s sh key uh you're definitely going to want to use this because it is a great way um to work with Git uh in your local developer environment it's definitely the way that I like to use it as opposed to using a personal access token but uh the way it works is you'll have to generate
out your own SSH uh key using a command like SSH key gen for Linux there's probably different ways but that's the way that I know and specifically an RSA key I'm sure there's different kinds of uh keys that uh GitHub will take but that's the one that I know and so the idea here is that we have our computer our local computer and then we have the server which is a GitHub and the idea is that there will be a copy of the public and private key on your local computer and then on GitHub you'll
store that private key and so the the process of authenticating and authorizing is going to go like this so the server checks to see if you have the same public key if you both have the same public key it's going to send you a challenge message that challenge message contains the public key uh encrypted and so it's going to send that on over and then uh the idea is that um the private key on the local computer will decrypt it and then it will be able once it decrypts that message it will then take the
private key and do something there and then send back a well it won't do something it'll send back a signature um and then that signature will be sent to GitHub and then they'll verify it and that will establish that connection allowing you to use SS keys to get Clon or push or or things like that uh under your account settings SSH and gpg keys is where you'll be able to add the public keys so here you can see I have a couple SSH keys in one of my GitHub accounts and it's there under SSH and
gpg keys and when you want to go use um or clone a a repo you're going to really want to use that SSH style address it will not not work with the htps one or the GitHub CLI one technically will work with the GitHub CLI one but that's what you're going going to want to do there so there you [Music] go in this video I just want to show you quickly how to create SSH Keys we did cover that in the quick and dirty uh git crash course but it's good to do things more than
once so that we really get good at them I'm going to open up a new environment here in code spaces and we'll get that spun up so I'll see you back here when this is ready okay all right so we have this environment spun up and it's just not remembering myh settings whatsoever but you know that's just how things go and I'm going to make a new folder in here I'm just going to call it um SSH keys and I'm going to just go ahead and make a new readme file so normally what we'll use
is the SSH keyen command I realize that's small I'm just going to jump it up like that and so we use t t RSA to make an RSA um uh style key I would imagine that GitHub can support different kinds not that I know much about the different kinds let's go take a look here and see what we can see so that's from local I'm going to go ahead and delete that um because I don't need that right now if we go here you can see things like SSH RSA sha 2 something like that so
it be interesting to generate something else out so ecd SSH key key gen ecd so I want to see if we can generate something that's a bit more secure I I assume it's more secure is a relatively new crypto cryptographic solution um it's been around for five years okay so how do we make it and the way we make it is probably by supplying this like that okay great so what I'll do is go back over here and we'll change it from RSA to this one and see what happens I've never done this before but
I imagine it's super simple and I'm going to CD into the SSH directory I'm going to go ahead and hit enter say allow yes I want to paste we'll enter and see if it can do this and so we'll go ahead and hit enter um it will create it in the codespace directory so I suppose that's fine and we'll do that and that and so then we're going to get that key and then the idea is that we can then go ahead here and then we could go and cat out the contents of it right
all right and so we could copy this and it's actually a lot shorter that's actually really nice I like that and then we could go over here and then we could add it so just say uh Cloud developer environment for CDE and we can add that key now I want to point out that you can add keys to repo as well so we're not going to really test this to make sure it works I just wanted to generate out another one and show you that but what we'll do is we'll go over to our repo
because I want to show you where that deploy Keys things is and if we're in a repo like this we can go to our settings and there should be deploy Keys down below and we could add a deploy key and it's the same process you just paste it on in you say what it's from uh you can say whether you want to have right access and boom there you go but a lot of these um repos only need readon so especially if you're building you're just cloning the repo so you don't need that but that's
all I wanted to show you so going to go ahead and Commit This okay so we'll just say uh basic instructions for SSH okay so that's all good we'll say okay and then what I'm going to do is just switch into my other accounts and I probably can merge the other way too um if I try that so if we go here to pull requests we go to new pull requests and I could probably try to grab from that other repo so I want to bring in from here from there yep I can do that
and then I'm just basically allowing myself to pull the changes and without the other Andrew having to uh Put It Forward okay there we go and we are merged I will see you in the next one so deploy Keys allow you to attach public Keys directly to a git repo and the use case for deploy keys are if you're using let's say a build server or a c cicd thirdparty service that needs to clone the repo so they can perform a build or deploy or maybe single repo access so instead of using a shared key
pair for the uh for multiple repos you have a single key pair for a single git uh git repo and another reason would be to avoid using the personal access token um I'm going to tell you I've definitely used deploy Keys especially if you're not using GitHub actions and you're using thirdparty cicd tools which is pretty common with GitHub um you will find yourself using deploy keys and I just want to make a wear that's very similar to the other one with some advantages so you have to decide in your use case where you're going
to want to use it but it's as simple as that [Music] okay hey this is Andrew Brown and we are taking a look at personal account access tokens or specifically personal access tokens or Pat which is an alternative way of using a password for authentication now PS are not specific to GitHub but they do utilize them uh and the purpose of these tokens is to give you access to the API um when you're making direct calls or using the command line or using the SDK uh GitHub no longer supports the use uh of using a
password directly with interacting with API they used to but now you have to use an access token uh if you're coming from like the adus world it's kind of like your access secret um so it's giving you that access uh there are two types of pths on um GitHub you have the classic token they are less secure and no longer recommended for use customers with Legacy systems may still be using the classic token like some of my apps uh then you have fine grain personal access tokens these Grant specific permissions they must have an expiry
date uh you can only access specific repo um or if you want all repos it'll probably only be readon you can only access resources owned by a single user or organization you can find the stuff under the developer settings um there are a few use cases where we'll use uh Pats it'll be like logging in using git clone for HPS and uh let's say we are using uh the GitHub CLI you could set a token or sorry a environment variable called GH token to be used uh for for the GitHub CLI for the to pick
that up uh if you're using SDK you're going to be supplying your token I would imagine that this uh that these um sdks would pick up that environment variable as well but there you [Music] go hey everyone it's Andrew Brown and this follow along I want to take a look at personal access tokens yes we've already played around with them but let's play around with them a little bit more okay and so what I'm going to do is go over to my repo and I might already have a code space from before and it's already
still active so I'm going to go ahead and open that to save myself some trouble if you have to launch a new one you can absolutely go ahead and do that remember to close your codes places so you are not using up your free tear usage uh you get so many hours per month I don't know what it is uh you can look it up if you want to know or we'll find out when we make it over to the uh code spaces section in the course um and so what I want to do here
is I just want to uh work with personal access tokens now we might have one set from before so I'm going to take a look here and see what we have so I'm going type in EnV grep GH and see if there's anything set and there's nothing set here so that's great and what I want to do is go to the top left corner here go to settings and then down below we'll go to our developer settings and we have our personal access tokens we have fine grain tokens and token classic now something I would
like to know I'm going go ahead delete this one why I would like to know is can we generate them out from the GitHub CLI You' think you wouldn't be able to because then you need permissions to have permissions but I'm going to take a look here and see what we have have um because I'm just curious to see if it's actually there or not and so I'm going to just type in token and there is a token so it says the this command outputs the authentication token for an account on a given GitHub host
well that's really interesting so what would happen if we wrote that in so I'm going to type in GH off token and see what we get and we actually get a token back so I'm not sure if that means that um that's that token code but let's find out if it is by generating out a new token another thing I might wonder is like what permissions do we have I'm not sure if it would tell us I don't think so what's refresh refresh our token expand or fix the permission scope of the store credentials that's
kind of interesting like you go out and request to have more permissions but I'm not sure exactly how that would work um but let's go ahead and generate a new token I'll just say um create issues and I'm going to set this for one day okay and we'll go down below and we're going to select it for a very specific repo this one here and I'm going to go to permissions and I'm looking for issues we'll say yes to issues read and write and we'll go ahead and generate that token and so we can see
that's what this token looks like we're going to copy it bring it over here and I'm going to set it to this so say GH token equals and then a double quotation paste it in enter and so now it should be set so if I type in E EnV grap uh GH we should see it there excellent so now let's type in Gs off token and see if we get a different value notice that this is the one we have now it shows that we're using a personal access token so this is getting load in
loaded in by GitHub how it's getting in there I don't know but this one looks exactly to be the same as this one let's go test and see if we can make an issue so we go down below here and we will say create and I'll scroll down and grab example so we'll do this and hopefully it'll just know to create it in the current repo put enter and we need to set a default repo so we'll go ahead and do that I'll choose this one here and I'll try this again and so it's created
it oh this repo has um issues disabled that's interesting so we'd have to go ahead and enable that so I'm going to go back to our repo here I'm going to go over to settings and we'll go down below and we'll turn on issues now we could do this via the CLI but it's just easy to checkbox that and we'll go back to our environment and we'll hit up and now it's created the issue so now the question is if I get rid of that token like I unet it uh what would happen so what
I'll do is I'll just hit up till we get to that set and I'm just going to purposely set it blank okay and that way this shouldn't work work and so now if I do GH list issues list I wonder if I can get a list of them now remember this repo is public so it's going to work because it's public but the question is can I delete the issue so I'm going to say delete and um it's expecting some args if I type help will tell me how this works the number of it that's
perfect so the number is two so that's easy and and I wonder if I could just put a two on this type two to confirm yes okay and deleted it now the thing is is that yes I was able to delete it but just understand that this thing has some base uh access underneath that original token and so it probably had permissions this one here to do that there's probably some things that this thing can't do and we learned that before which was that uh being able to create a repo um but uh you know
if I did this on Local Host I would assume that this would have not worked and that's totally fine I think that satisfies us for learning about uh personal access tokens I'm going to go back to our personal access token go ahead and delete it and we'll call this one done okay so I'm going to go ahead and go into personal access tokens and delete this and if you want you can stop and delete your code spaces I'll see you in the next one [Music] ciao let's talk about the GitHub API and specifically what I
want to talk about is the fact that there are two versions of it we have the rest API and the graphql API I'm not going to do a big lesson into what apis are and uh that kind of stuff but I want to give you comparison between these two to understand what are the pros and cons of each of them so let's do a breakdown quickly here uh so the first thing is the design philosophy so for the rest API this is resource base and this is uh this means that usually with rest apis you'll
have a different endpoint per resource uh for graphql you'll have a single endpoint with queries for precise data requests um for methods we can use get post put delete um but for graphql they usually use post for data fetching we can have multiple requests for related data for graphql you use a single single request that can be very complex but you get whatever you want uh you can have over fetching or under fetching for graphql you you have precise data fetching so you're getting exactly what you want and nothing more for performance it is less
efficient for complex systems but you know what I think that is something we could argue because I still really like rest apis for graphql uh it's more efficient for complex queries for caching it's easier due to HP methods um for graphql it's more challenging due to post methods the learning curve it's super easy as rest apis graphql uh requires a lot more knowledge to pick up um for rest API it's server driven structure for graphql it's client driven okay for versioning you often have to do API versioning for rest API for graphql usually don't have
to that was the huge reason for having graph graphql apis the ecosystem for rest API is mature with extensive tools graphql is still growing but uh the point is is that GitHub has both and these are the two big flavors of apis on the internet um and I think the major reason they did graphql was when they opened uh the G ithub App Store so you get exactly the data you wanted because the rest apis didn't always return the data uh that that people needed to build apps and I think that was the reason why
because I remember trying to build an app when the App Store first came out and I had to use graphql in fact I learned graphql because of GitHub uh because they're one of the early adopters of it when it came out but there you [Music] go hey this is angrew brown in this video I want to show you the GitHub API um you know there reason I know the GitHub API is because I've before GitHub actions and all this other stuff you would have to interact with a lot more I need to point out that
there are two types of apis the rest API and the graphql API I wonder if it could give us an example of what that looks like for GitHub so you have an idea if you've never seen a graphql API um but uh let's see what we can find out so it looks like there might be some way to interactively explore it here oh there we go so graphql um it has it own syntax language and the idea is that you are formulating what data you want it'll turn it back so we can sign into this
and then we could probably do some live stuff now I'm not saying I'm good at graphql but I'm sure we can figure it out so go ahead and authorize that and so here it says query viewer login so it looks like we already have some kind of query that's showing who is logged in um so what I would like to do is figure out how to query more stuff um and I'm going to go ask chat gbt because it's such a powerful tool and let's go ahead and figure this out so I'm going to go
back over here and it uh we'll say write a graphql query that will return public repos uh for the uh named Ruby um for GitHub graphql API and let's see if it can do this this is a great feature if it can do this for uh this for us here because I do not like figuring out how to write graphql and so here is a query that is writing that we could possibly use okay I'm assuming that's part of the language those three hyphens and we'll go back or periods and we'll paste it in and
see if it can work oh look at that okay it worked so there you go that is a way that we could use graphql graph is a lot more hard than just this because you actually have to have some kind of tool um or interface in order to utilize it but yeah it's as simple as getting the data back that you want there is public data and then there's data that needs to be authenticated you have rate limits for certain stuff so understand that you can't just get everything that you want let's go over to
the rest API and I'm not sure if they there's ways to interact with it but sometimes what they'll do is they'll make it really easy for you to interact through here on the left hand side so if we went to issues and let's say we wanted to list things we might have some examples and we might be able to run them um so here you can see we have like the GitHub CLI but what we're really looking for is how do we do it raw like how can we do this um using curl or maybe
even JavaScript but let's go ahead and do curl because that's more like API is and we'll have to open up a code space for this I think I already still have mine running again try to shut yours down as much as you can so you're saving money um I'm not worried about it I'm teaching a course I'm just going to expense it so understand that I'm a little bit more loose with this kind of stuff the question is will there be a curl command pre-installed In This Cloud developer environment sometimes they don't like like installing
those in here for you but this one does have it so we'll go ahead and copy this command curl and we'll go back over here and we'll paste it in we'll hit enter now this isn't going to work because we didn't provide it an access token so let's go over I'm sure you know this by now we'll go over to our personal access tokens and get it going so all the way down to the ground developer settings personal access token find gr permissions create a token only issues uh issues so this is for rest API
we're going to set this for one day that way if you forget it's not a big deal and we'll say for um all repos I guess it doesn't matter I'm going to go here and I want to grab oh we can't do it for that let's say all repos and I want issues uh read and write we'll generate that token out I'm going to grab this token I'm going to go back over to here and I need to kind of assemble it somewhere so I need a scratch Pad really quick just put that here I'll
paste that in and what I'll need to do is just go above here and insert this I'll grab this paste that in here okay I'm going to cut this out and paste this back in so now we should be able to utilize this so let's see if that works copy paste and so we don't get any issues back now that doesn't mean that it didn't work it just means that there's no issues for it to find and we really don't have any issues so what I'm going to do is go ahead and create one just
say uh my issue I think originally when you created issues you weren't able to delete them but now I think they've changed that and you can um so I want to try that again if I hit up will it bring the whole command yes it will and we're still not seeing anything now that doesn't mean that it's not working it's just that uh it's not getting exactly what I want back so maybe we can specify a very specific issue it says a list of assigned this issues assigned to the authenticated user now there's none assigned
to us so let's go back and um assign it to ourselves okay so we'll try that maybe that will help we'll hit up and there we go so now we're getting data back and it must be that issue so that's all I really wanted to show you there we'll go ahead and delete this okay there's some way to delete this uh they really don't like you deleting them there it is down below in the bottom right corner and that's all I really wanted to show you for the apis but most of the time you're going
to be interacting with some kind of CLI this is in JavaScript um or sorry SDK um but we'll we'll see that in the next video okay [Music] ciao let us take a look at the GitHub sdks and I told you octocat would make another appearance because their uh sdks are called octo kits these are the official sdks to programmatically interact with the git rest API and GitHub officially supports a few different languages so we have JavaScript and typescript c.net Ruby which is my favorite langu language so we're absolutely going to use that and terraform so
here's an example of using terraform to uh create a repository as infrastructure is a code should you use terraform for uh GitHub for certain things yes like repos uh for other things like issues no but just understand that sometimes terraform gives you functionality uh that really shouldn't be used and it's up to you to figure out for your use case here's an example using Ruby and make note that we are passing the access token the the Pat Uh to the client um but yeah there we [Music] go hey this is angre brown and this follow
along I want to take a look at the sdks so we can probably use Ruby and JavaScript those are both very easy to use uh so what I'll do is go ahead and launch my code spaces I already have one running uh you might have to make a new one you might already have one running make sure you don't leave them running because they do cost money and so it still has some stuff open from prior it probably still has the GitHub access token but what I want to do is go take a look here
and type in GitHub sdks and we'll take a look at what we have because there's a couple that we have we have U Ruby JavaScript typescript c c um and they should be really easy to work with so I know they're called octokit so I'll just type in ocit GitHub and that probably will get us to the repo for all of them there we go and so we can get to our Ruby one o terraform let's do terraform and JavaScript let be too hard let's do terraform first because I I'm really excited to do that
one and in order to do this we're going to have to have terraform installed so that's something that I I'm going to want as a feature um so for [Music] our Dev container we're going to have to get that feature installed and I'm not sure where we can find that so I'm very curious if like we get a list of features um list of Dev container features GitHub code spaces because there has to be one for terraform and so I'm just searching here for features available features here okay container Dev features that's how we found
it and uh just because we're doing a little bit more here I'm going to go ahead and make a folder we'll just say sdks and I'm just going to say file new readme.md we'll go ahead and paste that on in here um and we'll just say we can uh install the following features into our codespace environment just called codespace and so what I'm looking for here is the terraform CLI so go ahead and do that and it's right here so I'll go ahead and grab that and we'll go back over to our Dev container and
um I'll put a comma and we'll do this put colon c uh cures so that's that one uh while we're here I wouldn't mind Ruby do we already have Ruby installed let's go take a look type in clear Ruby they might already have it pre-installed in the base image uh if it is it shouldn't take that long to run it is okay so we don't have to install Ruby do we have node I think so yeah we do okay so we don't have to install that so really we just need um terraform now terraform uses
get or sorry uh go but they're all compiled so I don't think we need to install go onto this image if we needed it so I want to get this terraform CLI installed so I'm going to go ahead say install terraform CLI we'll go ahead and Commit This and then what we're going to need to do is rebuild this environment so go down below go to command pallet I'm going look for rebuild um I don't know if we need to do a full or a whatever I'm going to do that one that seems fine to
me let's go ahead and do that and I'll see you back here when this is done building okay all right so it rebuilt that was really slow but it is done so that is good um I'm not sure if we ran into any [Music] issues oh come on it's currently running recovery mode due to configuration error what do you mean to configuration error I did exactly what you told me to do it's like literally one line and I'm not allowed to do it okay so let's find out what the issue is um control shift p
I do not like I do not like uh view code spaces okay let's find out what the problem is now we'll go down below um what's your problem it's not even like easy to find the problem here I'm just going to zoom out for a second so I can find it quicker okay looks fine finished error up here um Docker build fail to build okay but why it just failed to build no space left on the device well then how am I supposed to all right so I was hoping that we could install it that
way if that's not going to work that's totally fine I'm just going to go ahead and comment that out okay so we can just do this for now and I'll take that out because I don't want to fiddle with this all day we can just install terraform CLI um the usual way okay I'm going type in clear and so I know it's in recovery mode I really don't care we'll just try try to proceed forward and do what we can so we'll go ahead and install the terraform CLI but you think with all that stuff
it just work it would work right uh install and we're going to get started I just want the terraform CLI install instructions if we go here um we need Linux and we're choosing Ubuntu so we're basically going through all these commands it's that stupid gpg I really hope that we don't have to do that um I find that really frustrating so I'm not sure if I can work around that I think I have to get the dev container working let me go figure it out I'll be back in a second okay I'm not sure what
would fix it but like this looks right to me I don't feel like we're doing anything wrong so what I'm going to do is I'm going to stop this workspace completely I'm just going to launch it again and see if we get any errors and we probably will don't have to fiddle around with it but uh I mean this is the experience of code spaces so I don't sure what uh why get would want us ever to use these things but I'm going to go ahead and delete this delete and I'm going to wait a
moment here I'm going to go back here to our repo I'm going to try to launch it again I'm going to see if it makes any kind of difference okay we'll try this again if it doesn't work I'm going to just use git pod I'm I'm not even going to try with GitHub code spaces but we'll see if it builds okay all right so I'm back and I mean there was no error so maybe it did run out of space I'm not exactly sure how that works um I'm not sure why it would run out
of space but that's totally fine I'm going to go ahead and open that up there and I want to see if terraforms installed so I'll type in terraform and it is so that is really good so in our um our SDK directory I'm going to just make a couple new folders so we'll have one for terraform we'll have one for Ruby and we'll do a very simple example with JavaScript as well okay we'll just say JS and so for our terraform one here I'm going to make a new main do TF file because that is
how you create terraform and everybody should know terraform because it is a great thing to learn okay we'll type in clear I'll go into terraform here and the idea is that we will want to fill some stuff in so over here they're saying there is a terraform provider and the way that works is it will link over to the registry so um if we go here we'll get to the terraform registry for terraform we can get it on the homepage as well by just going to provider and there's probably one here for GitHub if I
type in GitHub if it doesn't show up we could probably just search it um GitHub right and so they should have one I thought that'd be a lot easier to find but apparently not but that's okay we'll click back and I mean this is one way to find it and so the way you use a provider is you're going to grab this over here and we'll paste that into the top we'll say allow and what we have here is the required providers and then any kind of configuration in terraform they'll usually tell you how to
configure that in the the first block here um and so I'm carefully reading here uh it looks like you could use a CLI to authenticate uh you can also pass in the personal access token this way as well so I'm hoping that it'll just pick up the CLI um so I think that's probably our best bet it already has a token technically installed whether it can create a repo is another story because we know we have to create separate tokens for that let's go on the left hand side to resources and there should be something
here to create a repo or we could just create a branch and so let's copy this code and we'll go down here below and we'll paste it in and so we have to say what repo's for so this is for the GitHub examples and I want to call this Branch uh sdks okay so now what I can do is type in terraform and it and that'll initialize it then we can type terraform plan okay and it's saying that it's going to create this Branch looks good to me so now we'll do terraform apply I'm just
going to type in Auto approve because I don't want to have to hit yes and uh otherwise we just say say yes or no it says that it created that Branch now it created this terraform lock file and some other files in here um I don't want this to junk up our um our repo so I'm making a do get ignore in here and we'll go to GitHub and we'll just say GitHub uh G ignore terraform and in here what we can do is just grab that uh terraform one here and this will make sure
that we don't have all the junk that might get committed because we don't want to commit uh a bunch of stuff in here and so this is just going to make our lives a lot easier you can have get ignore files within subfolders so that's kind of interesting if we go back here now it's a lot cleaner that's totally fine let's go take a look and see if that Branch was created so if we go here and uh refresh making sure we're on ours and not the other one there it is okay great and so
we can also tear that down so say terraform destroy Auto approve and so that was pretty nice there we go we'll go back we'll check to see if that branch is there it's gone excellent so now let's go ahead and do a ruby example so for Ruby um we need a two files we need a gem file I'll generate it out because I think that's a bit easier so we'll CD into that so say uh bundle a knit to create a gem file I always forget like these few lines here but I think their gem
is called octo octo kit and it was their first gem so I like I'm really familiar with uh with that there and so we have that installed let's go take a look and uh at that CLI and see how that works um or sorry SDK so we have the Ruby one here I'm going to go over to this one and they should show some very simple instructions mhm uh they're not showing much but I'm going to go ahead and grab this one a lot of libraries especially in Ruby they'll they'll already assume that uh there's
certain um tokens being set so I'm hoping that it'll just pick it up and we don't have to do anything fancy going to make a new file here called main. RB doesn't have to be called main it's just what I'm calling it and then the idea with the client is I want to go ahead and I want to uh try to create a branch so you know they might have like a a um a uh um documentation for that I don't want all this stuff I just want to get to it I want the manual
so maybe if I go over here this is what I want and so what I'm looking for here is uh a way to connect or create a branch so I'm going to click on client again I've never looked at this in a long time so I'm just guessing but over here client has a bunch of uh things that we can do on it and so I mean there could be a method here so I'm just going to take a look here and see if we have like branch and it looks like we do I want
to create a branch and I mean we do have methods here it says included in repositories so if I go over to this one here we go and I just want to create a branch and say create okay what if I search for create Branch create Branch I'm going try methods up here that might help create Branch I don't know why I can't find it I mean I can find branches it might be it might be the case that there is a thing for branches here there might be like an object for it and then
we create off of it I mean I don't see one branches what the heck um I mean it's going to be something under repositories that's for sure so if I go to repositories they have an object here and it has to be something on here so if we carefully look we got Fork we got replace so yeah I'm not really sure so well if I don't know I'll go ask chat gbt and we'll see if they can make the code uh create a branch using the Ruby octokit for GitHub and let's see if it can
do it but normally you know I would just go and look for it um but you know it's giving us a really hard time so I don't want to waste a lot of time here looking for it um yeah that probably would be one way to configure it okay that looks fine okay so you create a reference and I guess that makes sense because you're not actually creating a branch you're creating a reference to a a branch and then the branch gets pushed later so I suppose that makes sense um they do configure it up
here again I don't know if we'll have to do that but it looks like this is what we're going to want to do here so I'm going to just grab this one I don't know if we need the shaw but I'll grab it anyway and I'm going to go back to this if you don't if you can't find this code I have this repo public so you can just grab it from here um and so it says get the latest Shaw from the base Branch so get the latest commit in main main being the base
being the meaning that um and then we'll create a branch from it we'll need to specify our Branch name so we'll go back to this code here I'm going to grab these three lines because they look okay and I'll paste this up above and our Branch here is called I mean again it's going to be different for you but uh this will be Andrew Andrew WC Brown GitHub examples I just noticed that I named this with a lower H but that's that's okay um the branch name is going to be sdks uh the base branch
is main must have been pulling from some really old code we'll save that I'm going to go ahead and type in bundle exec installed that's how we install ruby gems okay and it's saying missing file opend for install so maybe we have Ruby install but we don't actually we can't actually install anything so bundle install really oh no no sorry it's just bundle install I didn't mean to write exact that's why and then what we can do is type in exact Ruby main. RB and it should run uninitialized constant OCTA kit because we need to
require it octokit we'll save that we'll go ahead and hit up and we ran into an error um it wants faray try to use the middle middleware faray so um install the faray retry gem I think faray is for like apis and then maybe retries like a variation of it I actually don't know but we'll just try this bundle I might install it there we go and we'll go ahead and try that again and now we have a 404 so OCTA kit not found and it's looking at GitHub examples for the commit sha on Main
so it's using this path here I'm not sure if we could past that in like that this is not found commits so that's really interesting um I don't really understand why that's happening base Branch main main yep that's right did I spell this wrong at all maybe I did so we'll go ahead and hit up I forgot the S on it we'll try this again and now we'll see what it complains about um 404 not found Andrew WC Brown GitHub examples I really don't trust that I'm writing it correctly so I'm going to go down
below here I'm going to grab this exactly and I'm going to go ahead and paste this in here exactly okay I'm going to double check my name make sure it's right Andrew Brown that's right and it looks good to me so I'll try this again still says 404 not found um okay I mean we could try and ask chat gbt maybe it's using like an old API uh one thing we could do is go back to the Ruby OCTA kit here and check the documentation okay okay and in here I'm going to go look under
what am I looking for um just trying to find here it is uh this command here so this says create ref off of the client and to be fair like we did we didn't we didn't put in our token yet so that might still be an issue okay so it does have create ref on there and that looks fine okay this one says heads Master this one says ref heads main I don't know if that matters I'm going to take out the ref's part on it well maybe that one's fine back to this one creates
ref heads Master for octocat Hello World um just to make this a little bit more clear I'm just going to take this out and and so we can simplify this we say sdks again we just want this to work and this is for this particular repo sometimes simplifying the code going to reduce our issues and I'm going to take this completely out here I want to grab the latest Shaw so if I go into to our commits over here and we're on Main we can go ahead and grab this code here and I'm just going
to go ahead and replace it okay and so the idea is that this is going to just rule out a lot of issues that we're having okay and I want to bring this on down like this and so this is going to really simplify this one okay now again we haven't passed any tokens so that could still be our issue and it's still not working I can also take out heads here and see what happens if I do that and no luck so I'm going to go ahead and just take take take another look here
GitHub um Ruby SDK create branch and also we could probably check this way as well because well they'll have the JavaScript version but maybe they'll have the equivalent for um creating uh for JavaScript we just look at the Ruby what's really bizarre is they don't have the Ruby example I think they used to but maybe they just stop doing that um get a branch rename a branch I want to create a branch work a branch merger Branch so I guess it's not really any of those and so I'm going to go back over here CU
it it looked like it was more of a ref and on the left hand side we're going to look here in the API and try to find it um maybe repositories we'll click into repositories here no we'll click on this one maybe I type in ref create ref no we're not having a whole lot of luck here but hey we're learning about the apis and being able to navigate them that's got to count for something right because it's not going to be under refs pendency graph no actions no because that's going to be GitHub actions
um commits no let me go fine I'll be back in a second okay okay all I did in Google type in rest API create ref and then I went to the first one and I think now we're in a good place and there is references it's under git database of all things that's a little bit confusing a git reference is a file that contains the get commit sha etc etc great so I want to create a reference here can I am I zoomed in oh that's why it's so hard to read I was super zoomed
in we'll scroll on down here and we have create reference and so this is what I think that we're using right we're creating a reference we have owner repo but they don't have a good example for this so you know if this is not working what I'm going to do is copy the JavaScript one and then we'll work our way backwards to the Ruby one and see if we can get it to work okay so I'll go here I'll just say main JS okay I'll paste this on in here and um you know it's asking
for the token again it should really load it in via the environment variables if it's not um I'm really surprised that it's just using a request and it's not using the SDK I don't feel like this is the right one I think this is not the SDK um so I'm going to go and type in octokit JS GitHub and I feel like we're going to get a much better way of interacting with it yeah this is going to make a lot more sense so in here yeah y okay here we go um so what I'll
do is I'll go grab this line here that's why it's good to know more than one language because you can always work your way back and try to figure out what the problem is but it's showing octokit here so maybe it is actually using the kit right yeah it is okay so that code is using that U we don't need app apparently not sure what app is for but that's fine uh but I'm really surprised that we have to pass the token that way let's go take a look and see how we can authenticate um
I was just like hoping that it would just pick it up by default but I'm not sure about that here they're talking about RB like uh octokit RB um actually this is the Ruby one again so I'm on the wrong page back into this one and yeah meant to be over here I'm looking for Authentication here it is yeah I'm not sure how it picks it up well I guess we'll bring in the token then um what I'll do is I is I'll have to bring in a token so we'll go here we'll go to
settings and maybe that would fix the Ruby one maybe that was the Ruby problem the entire time I'm going to go ahead and drop this down find grain permissions I'm delete this old one I'm going to create a new one and I'm going just say uh create Branch just really creating ref that's what we're actually trying to do I'm going to go ahead and go to the next one here and we'll say for select repos this will be for our only repo and we need to go through permissions so I'm looking for references ref database
API like where would this be would it be under repositories so I'm going to choose this one I'm going to choose the repo one if I can find it oh it is that one right there read and right um maybe this one because that's repo creation commit statuses I'm just kind of picking a lot so we have a good chance of this working I'm going to go count permissions um don't think I need any of those so I think that's fine I'm going to go ahead and generate this token out I'm going to grab this
token go back over to our environment and I'm going to go ahead and set this as export GH uh token and then we'll go ahead and paste this in and do that we'll type in clear we'll do GP EnV GH to make sure that we can uh find that there oh I got that backwards EnV grap GH the token is set and so what I want to do here now is make sure it gets picked up I'm going to test the Ruby one here and just see if it if it makes a difference and uh
it does not another thing I might try is go back in here and explicitly set that token I believe we can set that as access token and I can say EnV GH token and so that would be a very explicit way to get it I'll hit up again oh there's no problem now okay so maybe it was a token the entire time like that was the issue so what I'll do is I'll go back over to our repo again that was all just guesswork you know you got to have confidence you got to try things
and I'll go over here and drop it down and there it is so that definitely did work um I don't want this Branch right now so I want to go ahead and delete it we can go to our branches here and I'm going to go ahead and delete this branch and I want to delete it again I just want it gone it's gone I think and so now we have our Ruby one working so now we need to get our JavaScript one working and it wants a token as well the way we bring in environment
variables is a little bit different um it uses like process so it' be like import process I always kind of forget maybe we don't have to import anything at all um we'll say reference a nvar or like call an nvar in nodejs file example yeah it is processed but do we need to import it uhhuh so I'm thinking maybe we don't need to even import anything for it I'm going to go ahead and try this uh we'll go back over here I'm just going to paste this in GH token and so I'm not confident whether
it's getting imported or not so what I'm going to do is do a console log that should print out the token token dollar sign uh or maybe it's back tis I know a lot of languages so I get confused easily um okay so that's in there like that um so here we have the reference it looks like these repl these place holders so we'll have to specify the owner I'm the owner so this is going to be um Andrew WC Brown we'll need to have the shaw so I'll go back over here and grab it
from here okay and we'll paste that in this is going to be sdk's I'll put JS so we really sure we know what we're using here uh the repo is going to be GitHub examples okay okay and I'm going to make my way over to that directory uh for JavaScript now I'm going to want the get ignore for JavaScript in particular get ignore JavaScript I didn't do it for Ruby because Ruby doesn't really make that much junk files so it wasn't a serious issue but if you really wanted to you could go ahead and and
um grab it if you wanted so go ahead and grab that and we'll go back over here to here we'll say dog ignore and if anyone's wondering I'm like watch watching when my test is going to come up here so I'm just kind of getting nervous uh not because the test is hard I just want don't want to forget about and then miss uh sitting the GitHub foundations certification course so that is now in there so that won't dump a bunch of junk files in when it adds that I want to add that right away
so add the G ignore sometimes it won't take effect unless you add it right away I know I spelled that wrong I don't care um and so I'm going to go and type in mpm install I'm going to imagine that this is OCTA kit as well it has to be CU it was called octokit JS sometimes like the files might be a little bit different like octokit hyphen period JS or JS after it I'm going to go ahead and I'm going to do an mpm install oh it's already installed but and so what we'll do
is go over here and take a look and we now have a package Json and I want to run as I don't know why I didn't put it in here but I want to have a script in here I'm going to go ahead and just type in mpm init because it really didn't give me a whole lot I really don't like that I didn't get stuff here and so it overwrote it and I'm going to just install it again and that way I don't have to fiddle with it so much so now I have the
scripts and I can just say start and what I'm going to do here is just say um node main JS okay and so now put a Comm on there we should be able to do mpm uh start and that should try to run that screen R um it didn't like the import for some reason to load es module types um you have to load something something so I think it's just the style that we're using there that's totally fine I'm going have to go to the top here and change this to be require I guess
um we'll go back to our JavaScript here we going to go all the way to the top and I need a different way to import it um this one is what we want it could be the node version that's installed here but I really don't think that's the case but I'm going to go ahead and do that that's easy enough to fix and we'll hit enter and a weight is only valid in async functions at at and the top level bodies of modules okay I mean I really don't care if it's a uh async can
I just take it out will that work the token printed out that's good um we'll go back over here see if our Branch created just Refresh on branches it did perfect great so now that means we can go ahead and Commit This just double triple check your files make sure you're not committing anything you're not supposed to commit don't commit your token go ahead and Commit This I'm just in a hurry for my exam and we'll just say SDK stuff SDK GNA go ahead and commit that I'm going to say okay sync sync sync I'm
going to go back over here I'm going to switch accounts I'm in a big hurry uh you know stop your code spaces don't waste your money and um I'm going to go over to our repo here um and I actually want to be in an exam Pro one exam proo exam Pro Co okay I'm G to make a new PLL request I want to merge um compare across forks and I want to grab this one and bring it over into that one boom just sdks sdks I really shouldn't be silly like that you should take
take time naming your pull requests and wait a moment merge it we're done I'll see you in the next one ciao hey it's Angie Brown and we are taking a look at GitHub desktop so this is a standalone application to interact with GitHub repos without the browser or via code and it can do common git and GitHub operations that you can perform via the guei for an easy to ous experience it works for both Mac OS windows and Linux so yeah it's a very useful tool um you know when you look at git as uh
a thing that you can use a lot of times there are these other kind of um Standalone applications specifically around get to make git actions easier but this does two things it does git and GitHub so if very powerful if you are using the GitHub platform so I recommend you give it an install [Music] okay hey this is Angie Brown and this follow along I want to take a look at installing GitHub desktop and see what we can do with it so what I'm going to do is open up a new tab and just type
in GitHub desktop and we'll find our way over there so here it is uh at desktop. github.com and we can go ahead and proceed to install this so I'm on Windows right now so I'm going to go ahead and just just download that okay all right so that's finished downloading let's go ahead and install it so it should be pretty straightforward going to double click the executable if you're on Mac of course you drag into your applications for Linux I have no idea but imagine it's not too hard to install and I'm just waiting for
it to um uh uh pop up here and proceed with installation so you can see my computer is thinking there we go it's starting to open up all right so we'll wait for that to finish its install there we go looks like it's installed we can log in either into github.com or GitHub Enterprises let's go ahead and uh log into github.com you can see we can sign into uh either or I think I'm interested right now in this repo here so I'm going to select this one and we'll go ahead and authorize it um and
it says when your phone is ready click the button below so I'm going to use GitHub mobile to confirm because we have UFA so just give me a moment and while I'm waiting here I guess I have to press press the button I wasn't doing that and so it pops up with 14 and um I have a pseudo request and so I'll just share my screen here for just a moment but what it's showing me here is I have to enter those two digits in so that's what I mean where sometimes it it uh pops
up or other times it's just confirmation it's going to really depend on the action that's being performed let's go ahead and open this up in GitHub desktop and we can see it's setting our name and email so it's like it's it is configuring get underneath um so that is interesting there we'll go ahead and uh click finish and I mean we got tutorials and other stuff here but I'm not really interested in that I just want to open up the repo that we already have let's go ahead and open that up and I guess we're
cloning it and it's actually showing us that we're going to clone it in a specific location here it's putting in documents GitHub I guess that's fine uh we go over to GitHub github.com I suppose we can just select the repo and it'll put the path there so there's two different ways that we can do it here I'm not sure which way is better but I'll go ahead and do uh this method here because it just seemed a little bit simpler and so now we have our repo pulled up and so we can perform stuff here
um so you uh you have changes on this Branch would you like what would you like to do with them uh to contribute them to the parent project um I I don't know I just I just opened it up why am I already getting to asked questions you have changes on this Branch would what would you like to do with them to contribute to the parent project for my own purposes this will help you contribute to this repo I guess the top one maybe it's just trying to tell me what I want to do or
not do I'm not exactly sure um but now we have this opened and so the idea is that if we make changes we can do something in here looks like we can also open up our repo directly here in Visual Studio code so I can go ahead and click this I guess the nice part of this is that I don't need to have any compute attached um in order to work with this so normally you have to have get installed here and just say I accept this and so we could go in here I'll go
into our crash course here I'll just add another exclamation mark if it ever lets me here good I'll just say save and I'll go back over to here and it shows that we have a change uh let's take a look at history so we have um history over time I would really prefer a graph I'm not sure if they actually have like a graph mode in here so this isn't like super useful a lot of other uh git programs like there's one called cracken like get Kraken um they say it's a legendary tool I think
it's a little bit heavy but the point is is that they will have a much better visualization in terms of what is going on so you know this tool is okay but it's not the best tool you can create uh you can push pull fetch you can view stuff here you can open up the command prompt um so there are some things you can do you can do stuff with branches um but it's really up to what workflow you're working in because of course you know if you're already using visual studio code you don't really
need this tool because we can do uh everything and much more here and then there's also a GitHub plugin that we can utilize so um you know GitHub desktop existed before Visual Studio code and before the visual studio code extension so um you know it's there and you know maybe if you're using a different editor or or maybe you couldn't install the extension or something like that there' be a use case for GitHub desktop again it's not bad but um you know it is it is what it is uh it is very good at keeping
uh your repos in a particular location and managing managing them so that is really good there but again why they haven't added a visualization I have no idea but there you go that is GitHub desktop um as far as as much as we want to cover it here and we'll see you the next one [Music] ciao let us compare the difference between github.com and GitHub desktop for the following uh comparisons so let's start at the top here so for github.com it is a webbased interface access via the browser the GitHub desktop is a standalone desktop
application for accessibility the github.com is accessible anywhere there is internet and the GitHub desktop is only where you install it on your computer for repo management it directly manages repositories online for GitHub desktop it manages repos locally for basic git operations github.com performs operations like Fork start and watch GitHub desktop um simplified interface for commit pull uh push and so notice it says Fork star and watch those aren't really git operations those are GitHub operations I just want to clarify that um for collaboration direct collaboration tools like issues and PRS focuses on local repo management
um then for Advanced GET features supports Advanced features via commands simplified experience for basic features integration tools integrates with various online cicd tools and limited to local get tools so these are not like hard rules for all of them but um it's just a general distinction between the two but there you [Music] go GitHub mobile is a mobile application you can install on iOS or Android phones to perform readon basic GitHub repo management tasks it can manage triage and clear notifications read review collaborate on issues and PLL requests edit edit files and PLL requests search
for browse and interact with user repos and organizations receive a push notification when someone mentions your username search through codee in a specific repo secure your github.com account with two Factor authentication and that is the primary reason I tell you to install it is for that as it I find it very useful verify your signed in attempts on unrecognized devices GitHub mobile can be used for UFA which is a convenient way over other methods and I definitely agree with that for everything else you know I'm not really sure I think the thing about this particular
product um and I really should have highlighted this is it's really good good for triage and people that need to stay um uh stay up to date with what's going on so people that maybe they a sis Ops administrator or something like that um so GitHub mobile becomes very very important and um even though it doesn't show up in the exam it's in the exam guide outline they really want you to know about mobile notifications to stay on top of stuff so we'll look at that next [Music] okay let us take a look at mobile
notifications on GitHub just understand that these are the settings on Android I have no idea what they are for iOS maybe they're different maybe they're the same I would imagine they're the same but different UI but we just want to make sure we cover our bases because the exam guide outline wants us to know this probably for people that try to triage things when issues happen in GitHub so let's quickly look at it so you can set push notifications you want to receive so we can say direct me mentions review requested assigned deployment review pull
request review and workflow runs uh you can set the working hours to only receive push notifications for specific periods of time so that way you're not getting annoyed when it's your weekend or it's your time off um you can set swipe options on notifications to perform save Mark is read Mark is done or unsubscribe so you can go left or right on that um you can change the app style notification this might be specific to Android but making sure that you can see the type of alert you want to see so it grabs your attention
so you jump on top of it and there you [Music] go let us take a look at the types of GitHub accounts we've got three personal organizational and Enterprise so for personal accounts these are individual accounts with a username and profile they can own resources like reps and projects and actions are taken uh based on the personal account they can either be GitHub free and GitHub Pro which we will definitely describe in this section of the course then you have organization accounts I said organizational above organization can just think of them as the same thing
whichever language you want to use shared accounts where we have multiple people collaborating on projects they can own resources just like uh just as the personal account has um and these are generally managed through individual personal accounts I say generally because um when we were going through setting up our organization we have the option to convert our personal account into some kind of business um so we didn't go through that and generally I've always known this to be through personal accounts the exam is not going to test you either either way but I just want
to point that out organizations offer different roles with varying levels of access and cons security features those roles are predefined um if you want more flexible custom roles you'd have to have Enterprise for that Enterprise accounts so this is part of the GitHub Enterprise cloud and GitHub Enterprise server these accounts allow for Central management of multiple organizations they're geared towards larger setups needing centralized policies and building management or if you have to have internal G uh GitHub repos which is a a specific type of GitHub repo specifically for Enterprise the exam surprisingly for me ask
a lot of Enterprise specific questions which I don't really think is fair for the GitHub foundation so I'm just telling you up front you're going to have to remember some factoids for Enterprises if you want to max out your points on the exam let's take a quick look at GitHub personal and organizations before we move on here so as you can see you get a profile if you look at the top right corner it is based on your username so github.com uhen King there and if you had a repo the repo is going to have
uh your your your username followed by the repo name okay for organizations it's very similar it also has a public profile page uh it also has a username and um it's not it's not exactly the same but it's the same concept but it's going to follow the same pattern for uh repos so repos can either have an org name or a username okay so there you [Music] go all right let us compare GitHub free versus Pro and I just want to warn you that the exam might ask you one of these things so it becomes
a little bit more important to remember the differences between them is it fair for an exam not really but it's just how they made their exam so I just want to point that out that you have to remember some fact total information here so we have GitHub free and GitHub Pro so let's go through the GitHub free features you get GitHub Community Support dependabot alerts deployment protection rules for public repos two Factor authentication enforcement 500 megabytes of GitHub packages storage 120 g uh GitHub code spaces core hours per month 15 uh gigabytes of GitHub code
spaces storage per month GitHub action features such as 2,000 minutes per month deployment protection rules for public repos I'm not sure why it's listed under there because that makes no sense but that's where they put it and so basically um in GitHub Pro you get everything you get in free with addition of GitHub support via email 3,000 GitHub actions per uh minute per month so extra thousand two gigabytes of gig GitHub GitHub packages storage 180 GitHub code spaces core hours per month 20 Gigabytes of GitHub codes spaces storage per month Advanced tools and insights in
uh private repos you have required pull request reviewers multiple pull request reviewers protected branches code owners automated link references GitHub pages wikis and repo insights graphs if you don't know what all this stuff is right now do not worry because we're covering basically all of it like working with all these tools and then you should come back and uh review this again so you have it for your knowledge when you take the exam okay ciao for GitHub organizations there are three type of plans we have free teams and Enterprise I put an aster there because
this is more an upsell to the Enterprise um uh uh account uh but when you go and you try to buy it will show you their the Enterprise option so just pointing that out let's talk about free so you get everything that was in GitHub free with the addition of Team access controls for managing groups 2,000 GitHub action minutes per month 500 megabytes of GitHub packages uh storage um and I don't really understand those last two because it is it for the org or is it for the personal account that has the org but it's
in there okay then we have teams and this is where we start paying everything from GitHub org in the free edition with also GitHub support via email 3,000 GitHub actions minutes per month 2 gabt GitHub package storage Advanced tools and insights in private repos required pole request reviewers multiple poll request reviewers and notice that the minutes for GitHub actions and packages look very similar to um the pro PL Pro account for the GitHub uh personal Pro and there is more so let's keep going uh we have draft pull requests team pull request reviewers protected branches
code owners schedule reminders GitHub Pages wikis repo insights graphs the option to enable or disable GitHub code spaces um one thing I'd like to point out is the code owners because that is quite a unique feature we'll talk about that when we get to wherever that is in the course um but I think that one is one worth remembering out of the teams functionality also draft PLL requests I try to remember those two in particular as those are very specific and unique features and and they both showed up on my exam so just make a
note of that [Music] okay all right let's take a look here at GitHub Enterprises deployment options because they have two kind that you can have uh we have GitHub Enterprise Cloud this is when you want to have a hosted version of the Enterprise Edition on github.com and then you have GitHub Enterprise server this is a uh self-hosted one so let's take a look at uh what have our deployment options in terms of feature set on the GitHub Enterprise for both cloud and server they're going to share this same functionality first so first of all they're
going to have everything that organization teams has but they're going to get GitHub Enterprise support they're going to get additional security compliance deployment controls authentication with saml uh single signon um and accessing Provisions provisioning with saml and S cim they make a large emphasis on this in the exam in fact I totally thought it didn't matter and then I got a bunch of questions on the sum exam and I was like really but yeah I'm going to have to make a couple slides on that in our Enterprise section because they really want you to know
that that is an offering for Enterprise um deployment protection rules with GitHub actions for private or internal repos and that again is a feature specific to Enterprises so make note of that as well we have GitHub connect Actually I don't even know what that is um I'll have to I guess make a slide on that as well option to purchase the GitHub Advanced security so that is a um some kind of additional feature for specific features we have 50,000 GitHub action minutes per month 50 gigabytes of GitHub packages storage a service level agreement of 99.9%
monthly up time option to centrally manage policies and building for multiple github.com orgs with an Enterprise account this was a question on my exam as well and I was not prepared for it um they never asked for like minutes I think that's kind of information I never saw that there so you don't have to really worry about that we have options to provision and manage the user accounts for your developer by using the uh emus um I'm glad we never had any questions on of those but uh emus seemed like they're really involved but I
imagine that would be in that GitHub administrator um or Administration or administrator certification but there you [Music] go so before we can talk about what markdown is we need to know what the markup language is so a markup language I shouldn't said the but it's a markup language is a way of formatting and presenting Text data in a different format and a common use case for a markup language is to present data in HTML and so uh probably the one that won out the battle for HTML uh formatting language is markdown so markdown is a
markup language that provides a shorthand syntax to format information into HTML markdown is popular due to its easy syntax and being readable in its raw format I want to point out that on the exam they might ask you about markdown and they might throw in markup in there to confuse you remember down down down down mark down okay um in terms of file extensions you have MD and markdown I've never ever seen anyone ever use the ladder it's always been MD but just be aware they are both there so let's take a look at what
it looks like the idea is you write your mark down it looks like that and from there we're going to get HTML and that HTML can be rendered as a preview so the idea is that we need to learn and everyone should know how to do this not just in GitHub but everyone should know how to write markdown because it's super useful as a developer tool as a Tech Tool in general [Music] okay let us take a quick look at the markdown base basic syntax and so all markdown parsers support uh this basic syntax when
we talk about parsers that's a program that knows how to take markdown uh the raw markdown format and spit out HTML and there can be variations between the parsers because there's implementations in different languages for different use cases so understand that uh your markdown might not be the same as someone else's markdown in terms of what will work and not work um but we have headings so that's just your standard headings you have text formatting like size and bolx some of some of the time boltex can be underscores instead of double uh asteris why um
they made a tal size single asteris I have no idea as a lot of people think that it's the single asterisk but that's just what it is for Block quotes that's like an indented um uh uh text usually for quotes uh we have unordered list so you just put um hyphens in the front it'll they'll put bullets there for ordered list you can keep all the numbers the same so 11 one and it will then render out as 1 2 3 4 which is really nice uh that is for a link that is for an
image very similar to link but has an exclamation mark in the front of it you have the horizontal ruler or Rule and then you have inline code I need to really point out that that is using a back tick so when you're doing code blocks they always use back ticks for um for markdown okay so that is the basic syntax and there you go let us take a look here at markdown extended syntax so this will be supported by some parsers if not most um and the most common one is being able to make a
table these are not fun to make but at least we can do them uh we have fence code blocks this is when you want to have multi-line code and the really nice thing is that you can actually apply uh for a lot of these um the name of the extension which will provide some synta tax highlighting this is something GitHub absolutely does and you should do it if you have the option to do so because it makes things so much easier to read we have footnotes we have heading IDs which I've never used before we
have definition lists which I've never used before we have strikethroughs highlight which I've never used before might be fun to try that out emojis which I love and GitHub has great support for and we have task list which um GitHub this this one's a really useful one then we have subscript and superscript and I've used those in a few cases but uh yeah there you go that is the markdown extended [Music] syntax so in GitHub when you ever have to write something that is markdown supported it's going to have this text formatting toolbar and it
allows you to uh utilize GitHub flavored markdown syntax which we'll talk about in the GitHub flavored markdown syntax section and it appears right here and so the idea is that you can uh press these buttons and it's going to make your life a lot easier you also notice that a lot of times you'll have a preview as well so that uh makes it very easy to turn that raw markdown into uh the final product the HTML rendered in terms of what it'll look like to the end user um and so I find that super useful
[Music] okay let us take a look at slash commands so these are uh functionality at least within Comon boxes that allow convenience features such as formatting markdown and I'm implying that there could be other functionality but right now it only does a markdown and it's a beta feature oddly enough even though it's a beta feature it appears on the exam because GitHub apparently puts beta features in their exams which I think is bizarre but whatever so let's say you wanted to create a table you basically get this wizzywig and you go through it the idea
is that you can put that forward slash to start triggering that um line of prompts and it can make your life a lot easier and actually it is a good idea but um again you know beta feed feature probably shouldn't be an exam but hey that's how GitHub rolls [Music] okay let us take a look here at GitHub flavored markdown also known as gfm this is a dialect of markdown that is currently supported for user content on github.com and GitHub Enterprise gfm provides powerful functionality such as collapsible sections embedded mathematical Expressions embedded diagrams relative paths
or linking to files in the same repo task lists that can be converted into issues extended formatting for tables short hands to autol links to issues pull requests and repos render code Snippets from other code bases via linking and more um and we can see the whole detailed spec at gfm spec uh website here so that's at github.com gfm it's a really good read and I'm being sarcastic because it is very dry but let's take a look at the functionality we're listing here on the left hand side so you have a really clear idea what
you can do so the first that I think is really cool is having um better syntaxes or sorry a control over your tables so here you can actually have embedded syntax within the table cells which is not a normal thing you can usually do with markdown another thing is more uh control over the look or formatting of your table so you can better align that stuff I imagine that they have like merging cells and uh excluding the headers I think that they have that but um these are the two that I could remember that are
a big deal um they have this details tag and this allows you to have collapsible sections uh it has support for mermaids so this allows you to render things like um uh dags di acrylic direct acrylic graphs it's just a type of graph okay um we have geojson and too Json this allows you to create interactive maps so here's an example of geojson and then here's an example of too Json I imagine that they render a bit differently so one might be better than the other in terms of information shown then we can uh render
3D models so that's kind of cool um it can render mathematical expressions and I really know latex I used to work for a math educational startup and so you have your double dollar sign for your latex or you can use uh fencing blocks code blocks and have math this is using math Jacks so if you're wondering what implementation that's what it's using and so those will both render out the same thing based on what syntax you want to use um if you have links it'll automatically be linked that's not like a GitHub specific thing but
it is something that um they have set their defaults for their markdown to do but what is really interesting are these quick links so the idea is if we do pound 26 or GH hyphen 26 it'll create hyperlinks and these hyperlinks will go to issues which is super useful um might go for poll requests as well because they usually treat the numbers as the same so like if you make an issue one and you make a pull request the next ID will be two in your project if that makes sense within comments you can quickly
link to other repo so if you have something that looks like a repo it's going to go to a repo uh that would be the final product uh produce there and then you can also link Things based on um commit Shaws so yeah a lot of cool linking um Tas list can be uh can with uh can be op can be turned into open issues kind of wrote that a bit weird you can associate tasks to specific issues creating basically subtasks GitHub can keep track of your open or closed state of linked issues you can
on click turn a task and associate with an issue so here is your usual task list but notice there's like little icons and stuff um and you can also reorder them so a lot of great additional functionality that is on the rendered side or on the markdown side that is new um but yeah that is gfm you should know some of the stuff because it really does make it a lot easier to work on GitHub but there you go [Music] ciao all right so in this fall along what I want to do is get some
practice with markdown there's a few ways that we can uh work with markdown here um we could uh edit files in line we could use GitHub dodev we could open up code spaces but I just want to show you um you know a few things that we can do here so maybe what I should do is go over to our new repo GitHub examples and we should try to uh utilize um some of the abilities of creating stuff without opening up an editor because I know the exam they might ask you that and so I
figur a little bit of practice with that would be good so let's say we want to make a new folder here what we can do is we go ahead and add a new file and we will create a new file and in order to create a a new folder all we got to do is type A for slash I'm going to say markdown uh here and put a for Slash and now we have a folder and we now have ourselves a readme file now I didn't mean to hit forward slash there I think it just
happened prematurely so I just hit backspace I can type in MD and notice right away that we can start writing markdown okay so we can go here and flip between them they really want to use co-pilot I do not care about co-pilot and I'll go ahead and just say U mark down uh mark down examples and what we'll do is work through some here so again I'm just going to show you that you can commit uh this but let's make a list of things that we should learn how to do headings we should know how
to do uh and I'm already writing markdown as a list headings uh unordered lists we should have ordered lists um uh formattings like uh text formatting code uh tables Auto links lists um we could also have like images links images okay so that's a pretty good list of things that we can learn how to do and I think that's a good start so let's see unordered list I'm going to go ahead and commit that change so I just want to show that you can commit directly with files and update files here and that's really really
nice and you can see that stuff rendered in place but I think what's going to make this a lot easier to work with is to uh use that github.io so if we press in Period what that's going to do is open up github.com which is not a thing I hit period but it didn't do anything I hit period again and I think it had to like move or something there and now it's going to open open it up in github.com okay so let's go through and figure this out so the first thing are headings so
this is a heading up here this is a heading one if we can go we do this this is heading one and now we'll just do heading two headings and I feel like we already kind of figured that out because we're we're doing that so I'm not sure if we really need to have that as we know what headings are so we'll say unordered lists and we'll just uh say unordered lists yeah we can create unordered lists in markdown using hyphens okay and while we're doing this let's open up uh GitHub flavored markdown because maybe
there's some things that are there that might be interesting to take a look at so I'm going to go ahead and grab this link I'm going to dump it in remember that just Auto links as soon as we paste it in here and if we go here we could see that there is a bunch of stuff so there could be something for lists I'm not seeing anything for list I can type in list here lists container blocks lists um notice they have a minus or a plus so looks like that breaks it up into separate
ones so we can give that a go let's just go ahead and copy these and take a look at what we get so we do this and that will treat this as two separate lists I guess we can have pluses or minuses didn't know that that's cool again these are extensions to uh the regular one and then we can have our unordered list or sorry ordered lists okay so it's interesting that you know you can do one two and then have three but notice if you repeat three multiple times it'll increment from there and it
starts from where it incremented um so I think that's really cool you can also just have them all the same number if you want so you don't have to really worry about that but that's a nice way of splitting again never knew that because I never bothered opening this up till now um so there's that uh let's go take a look at uh text formatting so we have let's say bold so if we are supposed to do italics first so italics is going to be this okay scrolling down so we can see it bold just
going to do that every single time e bold can be this doubles and see how like formats it as well so you can kind of have an idea you can also probably do bold with underscores I think apparently that does a tal size I guess you can do one or the other so I was kind of wrong but I guess we could do it this or that way not all markdown um parsers do that though some might treat um underscores exclusively as a bold so understand that let's try strike through strike through we have to
use doubles for some reason there we go does markdown give us anything or gfm does it give us anything fun we'll go all the way to the top here um characters and lines apparently apparently pays attention to tabs that's cool um yeah not exactly sure but maybe there is something else there some inline stuff so that's fine uh we'll go to the next one we have code so for code here we'll say code what we'll want to have here is stuff like um backtick so we might say um something as like puts hello Ruby so
that's how you say that's how you print in Ruby hello world notice that it has this interesting formatting so it's different from like whether we were to bold so if we were to do the same thing it wouldn't be really the same thing right if we did this in bold that's great but take out the back ticks but like this is a lot better when you have something inline so you can print to the terminal using the command so that's really good when you want inline code so say like inline code multi-line code so here
I could do triple back ticks it will say without highlighting with highlighting okay so we'll say something like defa hello world and puts hello world I'll copy this I'll bring this down here we'll do RB and so notice this one's highlighted and this one's not so really try to do those High highlights as you can um I think they say like what it's using underneath so there's probably I can't remember what it is but uh they say in the documentation in the getting started like what syntax highlighting program they're using and so you can probably
look up these codes but for the most part you can guess I don't know if like I typed in Ruby if that would still work as well it looks to be the same yeah it's the same so Ruby or the extension okay so there's that uh we have tables so we'll go down below here I really don't like making tables but we can try this here we use that text Toolbar to make it really easy but I'm not going to do that um so somewhere here should be tables tables tables tables tables tables tables tables
just search tables here it is extension okay so some things are like clear extensions and other things are just like the settings they use as their default so go down here and so this is a basic table okay you always use three for this I'm not sure why but it's always three and you have to follow this format here's something that looks like more about um changing the alignment let's go here make sure we're at the right levels here um so maybe you don't have to have that so cells in one column don't need to
match the length Okay so basically you can do whatever you want here and does it stretch it more if we go more no it doesn't so it's say it's one or whatever but standard markdown would only have uh three so that's uh like that's nice that you don't have to do exactly exactly three every time um so that's piped content okay that's fine I see something a little bit more exotic that's kind of interesting so I think it make an empty cell in this case I think I'm missing the one in the front here uh
that didn't render out so despite it being in there oh you know this one's missing that's why it's getting confused and this one's missing what if I take this one out no this one just does not render so I'm not sure why they show that as an example because that doesn't render oh it will not be recognized okay I thought for some reason it would be like it leave an empty space let's try this one there we go so we have an empty space in this case but in this case it doesn't so I guess
you have to have the full length and if there's one like if you don't have the full length of one then it won't work okay looks like we can just have a heading or is it a body yeah just the heading so I know there's more to it than that but um for whatever reason that's what it's showing up there we could take a look at block quotes um this is kind of interesting I've never seen that much for Block quotes before let's go block quote let so when you're doing like a quote for somebody
or like you're making like a note so that's really interesting usually I would just do this like um uh the cloud is amazing right so you do that but here we're actually getting some different levels here I never knew you could do that let's try this block quote okay this one is similar wasn't super exciting there so so yeah that's interesting let's go back to our top we have um block quotes I can't spell block quotes this block quotes and I'll go all the way down to the bottom here or back to the top images
images we'll do images and links this should really be over here so something we could do is if we wanted to make a link we could link um let's say we want to uh link this I'm just going to copy this here unordered lists and we could put squares around it like this okay and notice as soon as I hit pound this is specific to GitHub but it can link to the anchors that it sees on the page so if I want to link to this unordered list uh it'd be this right so this would
map to that which is really nice so if I click that it would jump to that part of the page okay you can also do relative links to other stuff so if I had like um a file in here and I just say uh secret secret. MD uh we say this secret page if I spelled that right secret secet secret secret okay that other one looks right to me I can't really tell the difference um so you know like for links I just want to link to that so these links are going to be become
very useful here in a second so say links so let's try this again Link Link Link Link Link we not have a heading for this yet so I go down here links all the way back to the top links and now I can just jump to that here on the right hand side and so maybe we want to go to that secret page so I'm going to do squares uh parentheses and this is going to be this part is the text I think um secret page and so this goes to the secret page so now
what I can do is I could type in um trying to think how I do this real so now see how it's autoc comp completing so if I do this this will actually jump to that right so and I don't think you need that you probably do that as well it would still go there and so this is a great way to navigate around when you have a lot of pages again this is specific to GitHub um so other things might not do that uh we can just put a link out to anywhere here so
let's say we want to do um something up to like github.com we say GitHub website and we just type type in htps Colon github.com if something looks like a link it will turn it into a link so that's really nice as well you might be fun to try out that repo thing remember the link and auto links so let's say we did uh issue one I wonder if it would render in here uh it didn't but you know this might be contextual based on where it is so this might only work in comments and I
actually think that in my um my slide that's actually what it says is that U it should that it only works in comment so we might have to go test that out here in a moment um so is there anything else that we're missing we didn't do images usually you drag images in here and then they'll they'll they'll populate so I'll show that somewhere else but we'll consider this our markdown stuff here it'll say markdown examples okay the thing we didn't do was I think a list so if I did this I could say like
item one can put a space here just say Tas Lisk um double here and say item one item two I'm not sure if it'll work here it's not rendering it that doesn't mean it's not working it just doesn't render here and so we'll go ahead and um just commit these changes make sure we get all of them so I'm just going to add this refresh got them all in here and we'll commit that so let's go take a look at some of the other markdown stuff that we're not going to see here um so what
I want to do is go back to this repo so there's a link here I think codes spaces doesn't I think last time I was looking for and I couldn't find it and so what we might want to do is look at an issue and play around with Mark down here so we don't have any issues in this repo right now it's going to make a new issue um and apparently we can link to pull requests and other things like that so I might need to do a little bit more than just what we're doing
here but anyway I'll just say um GitHub fun or sorry get or markdown fun learning how to use markdown and so what we could do here is make a list so let's try the forward slash because that's something they want us to know and I mean we could use this for a few different things adds a detail section to hide and show Stu that's kind of cool it drop that in there and we can just say my to-do list apparently has a summary didn't tell us that before and go here see we have this nice
drop down um I don't know if we need this interior P but what I want to do is make a list I could try doing forward slash to see what else we have here nothing really interesting you can seert issue templates that's kind of cool right there we'll look at that later but let's try to do this to-do list because that's what I'm really interested in so I'll just say um we'll say lists and headings it's a little bit small I'll bump it up I'm sorry headings and bold and italics and we'll go ahead and
submit that issue let's expand that notice that these are now uh we can sort and move this around and we can check these things off um it's probably possible for us to link issues to other issues I'm going to try to make another is again I don't know if this will work but I'll try it actually before we do that let's do it over here so let's say we want to do headings this used to be on the left hand side now they have it on the right whatever we'll click that and it should make
a new issue okay so we do that and now it's being tracked I guess so we go over here let's see what happens if we close it say this is maybe we can reference this references um this one here notice that we have a link there for the repo I'm G to try this Andrew WC Brown and we'll say GitHub I'm going try to write it exactly the same here GitHub examples because they said that would link it didn't copyright we'll try that one more time do that again it really does not want to listen
here we'll try this again GitHub example so I want to see what we're getting here so this isn't linking how I was hoping it would I mean it says in the docs you can so I'm not making things up here we'll just comment on that okay that didn't hyperlink interesting let's go take a look at that autolinks GitHub okay um this might have been in like gfm getting started I have to kind of remember where that is GitHub and we'll go to this here and I'm looking for where that could be um no no not
this not this one um like they had like a getting started for GitHub flavored markdown here here it probably is there we go and so in here they should have things for like autol links I'm going grab this so we don't have to find it later on um I'm just going to modify the file so I have it go back over to our examples here and into our markdown and I'm just going to go ahead and edit this file in line because I'm only making one line change we could do a lot from just here
but again it's a lot more um uh efficient to use github.io links links Auto links anyway I know that they're there because I took screenshots and I and like I wherever it was it's somewhere okay maybe it's like Advanced formatting that's probably what it might have been code blocks autol link references okay here we go so in here we should be able to link the repo reference type I didn't understand it over here oh maybe we got to put an issue afterwards okay so maybe we just can't link the repo by itself uh we're saying
a very specific repo so I guess that is a minor mistake on my part let's go back to our issues okay good thing we always double triple check things if I go back to this then maybe I do pound and then four on this would that work there we go okay and then it shortens it and then we can see our to-do list here can we check off from here that'd be cool if we could no but uh let's close this issue because what I want to see is does that close that thing out so
we go over here and look it says one of four task completed which is really cool um so the question is if we were to check off all these things would this all be done this one this one this one there we go okay um so that's pretty interesting there's a lot of little markdown things that we can do um but I think that is sufficient uh and we have a good idea how to work with markdown um documentation is its own little skill so you know getting as much practice as you can is really
great but I'll see you in the next one uh [Music] ciao let's talk about uploading files on GitHub because it's super easy the idea is that you can just drag them into any markdown box and it will generate out uh that image tag we didn't do it in the markdown section because I wanted to leave it for this but what it will do is it will have a placeholder and when it finishes it will then U place a link and basically GitHub is then hosting uh that file that you uploading in terms of what you
can upload well there's a maximum file size of 10 megabytes for images and Gifts 10 megabytes for videos surprisingly I didn't know they could do videos uploaded to a repo owned by a user or org of a free GitHub plan 100 megabytes for videos uploaded to a repo owned by a user or org on a paid GitHub plan 25 megabytes for all other files um supported files would be PNG GIF jpeg um SVG log files markdown files Microsoft Word PowerPoint Excel text files PDFs Zips and video so there you [Music] go hey it's Andrew Brown
and this fall along I just want to show you how to upload files very quickly when you in comments I don't know if this works in uh GitHub dodev I don't think so but in the comment boxes it absolutely will so what I'm going to do is go over to our issues and we're still learning how to use markdown I didn't finish that task and the idea is that we want to have some kind of image so basically what you need to do is download any kind of image I got an image on my desktop
right over here and so what I'm going to do is drag it on in and I'm going to drop it in and notice that it's going to replace it with this link format and uh so if I go to preview you can see the images there it say simple as that so that's all I wanted to show you you can also go here and upload directly it'll open up you know your your downloads box but I don't really want to do that I just prefer dragging and that's it see you in the next one ciao
hey this is Andrew Brown and let's take a look at the GitHub user profile so for personal accounts you get a GitHub user profile to Showcase yourself as a developer and that seems to be what they want the focus to be as as you uh start using it you kind of get that idea so here's an example of mine on my personal account and let's just walk through the features of this profile so we have a profile picture and bio uh that you can provide there um um notice that the bio is actually this little
small tagline that's under your account right here uh we have user profile readme so that is this readme file over here that you can uh put whatever you like in it'll show it'll showcase your repos including the the ones that you've pinned as your favorite you'll have the contributors graph this is a graph displaying your contributors over the past year you might see an exam question on this I got one uh for contributors graph so basically what is it actually showing uh it has commits PLL request issues and cod reviews if you remember that stuff
like what's in it then it'll be very easy to pick it out in a lineup you have followers and following so this displays the number of followers you have and the numbers of users you are following I didn't even know I had followers on GitHub but apparently I do you have stars so show repos you have starred we have organizations so list the GitHub organizations you are part of contrib contribution activities detailed list of recent activities on GitHub let's take a look at these features in more a closer view here um so the first thing
is that big um uh profile read me and you can have your own all you got to do is create a public repo with the same username and uh the same username as the repo name and the user trying to get my pen tool out here that wasn't supposed to be uppercase you know PowerPoint likes to title titlee stuff all the time but you can see up here this is what it is and then I just have a read me and that's what it's rendering out um so that's pretty straightforward you can change uh your
profile photo your display name bio URL in your profile and your social social accounts URL so name bio if you want pronouns URL social accounts choose your public email if you even want to show one uh so there's that there if you're looking for a job you can also say hey I'm looking for work um you can pin specific GitHub repos that best showcase your work so you know if you want to say I made this video came called Swap and pop a long time ago this is like 2016 which was a clone of testers
attack so I wanted to Showcase that really good skills or maybe the 100 days of cloud that was another project that I had so there's other things like that that you might want to showcase um and it's very easy to pin you just go there and say I want to pin these repos or these gists if you don't know what gists are we'll talk about it in the gist section for uh contribut activity this is going to show how active uh your Prof uh public profile is and so here we are seeing activity I think
these are all basically for public rep some people get really creative and they try to um make their activity uh look like a photo I'm trying to find my there's my mouse so they might try to make this look like something and and into artwork by purposely committing they might have like a bot that does that I don't do that but uh that is something that you can do but there you go [Music] okay hey it's Angie Brown and we're taking a look at GitHub user profile so we do have uh this new user I
created but I want to show you what mine looks like first because I want to just make a call out uh to something that might show up on the exam and I didn't include in the lecture slides and it honestly threw me off that they even bothered asking this in the exam but uh they might ask you about uh some of the features uh in the profile and one of them is about achievements so I don't know why why they would ever ask this but achievements are things that you do um that you can earn
uh uh these pointless badges for doing certain things okay what those things are I don't even know I don't even think it matters but the point is that they have them here and they'll ask you on the exam about achievements for some crazy reason so I wanted to point that out but you have an idea of what my repo looks like or my profile looks like let's go back over to the other account and get set up so we already set up a um a user profile photo for this one and before it was it
was showing the old one so we couldn't really see it also I just notice that we can set status here I didn't even know that I don't think I would ever do that this isn't a you know it's not it's this is not a um uh what do you call it a social media platform but whatever they have everything under the sun here but this is now showing up here you've unlocked new achievements with private contributions show them off by including private contributions in your profile in your settings and look hey I'm already getting junk
achievements but just understand that they're there um what we can do is pin this here so we can go ahead and say let's pin uh this repository here um apparently we can pin this other one I think it's CU we contributed to it that's why we can pin it I'm going to go ahead and just say GitHub examples and save my own and it was already kind of showing up there but now it's there we can go over to gists for fun and make a new gist and then pin that just say uh hello hello.
MD and I'm just going to go here and say puts hello H world and we'll scroll on down and we will create this as a public gist okay I'm going to go back over here I might already show up because we have such few stuff here but I can open this up and I'll pin this and now I have this gist so maybe if you want to like have a read me file and have more information this is actually kind of a smart idea would be to have like two of them up here and pin
them I never even thought of that uh let's go uh ahead and get in our uh read me page so we know that if we create a repo with the exact same name we can have that so I'll go ahead and make a new repo I call this one Andrew WC Brown and notice that we get this nice little popup I like the little icon or the uh pixel graphic here this is a special repo okay make sure it's initialized with the read me to get started so go ahead and create a read me and
that's now there if we go over to our profile okay it's there so pretty straightforward not much else to say there um there you go okay we'll see you in the next one [Music] ciao let's quickly talk about readme files these are markdown files that provide documentation and structional information and a repo a GitHub repo that has a readme.md or readme and all caps or read me and all caps with. MD in the projects rout will be rendered on the homepage there's actually some other markdown files that will also be rendered there but it's really
important to remember the read me one as it will probably come up as an exam question and they'll actually ask you like what uh where where should this be located it's always in the root that's what's going to render I don't think it renders anything else but that one and they might kind of trick you there um you do get this nice little table of contents on the right hand side so if you have uh headings it will figure that out for you there I remember that wasn't there before so that's really nice um but
yeah it's as simple as that [Music] okay so GitHub wants you to know about basic repo navigation what that means I don't really know so I'm taking my best guess to show you what that is uh So within a GitHub repo you will have a navigation bar with various features of your GitHub repo and this is how you get to all the cool stuff and the main one is code this is where your code's going to live um such as files folders things like that um we have issues that's for tracking problems it's basically a
ticket tracker we have pull requests that's where we're going to be uh uh when we're managing collaboration with other developers and they want to bring changes into our repo it's our opportunity to check that work before it gets merged in we have actions that's for GitHub actions uh for projects that's for GitHub projects uh for wikis that's the wiki security is like a a list or a um a checklist of things that you should do I think it changes if you are looking at the context of a uh as a a user and you're not
the owner of the repo you're going to see maybe the security policy or different information but if you are the owner you're going to have a checklist of things you should do and it basically mirrors kind of what's in the settings page under security so it's kind of weird that they do that but that's how they do it then we have insights this provides uh statistics mostly in the form of charts and graphs about the repo sometimes this information is public sometimes it's private then you have settings this is where you control all the settings
for your repo um the other thing is that when you are using at least in the code section you can navigate around files so I showed showed you this in a a prior um follow along but the idea is you can search stuff you can see the contents of file you can comment on code per line so there you [Music] go so when you create a repo you can choose which owner you want it to be so right now I have it set as uh my personal account but you could drop that down and you
could also choose an organization that you belong to repo names are scoped B based on the account so you can have the same name uh for different organizations other people can have the same name if they're a different user so just understand that you can do that uh you need to choose an available GitHub name again based on that scope uh your repos can either be public or private um pretty self-explanatory you can quickly add a readme file a do get ignore and license it's very very important to remember those three because you might get
an exam question asking about the three things that you can quickly and easily add if you're using the CLI you can add it uh this way or create one we did this earlier when we did the GitHub CLI kind of demonstration and we found out that repos require special additional permissions or personal access token permissions um that the GitHub Cod spaces would not allow you to do but yeah there you go that's a creat a [Music] repo all right let's go ahead and create ourselves a repo I know we already know how to do this
but it gives us an opportunity to talk a little bit more about uh some of the things that might appear on the exam you can create one up here in the top right corner and I have this double click problem so it's getting a bit confused I can go to this new green button that's usually what I do and we can have a new repo so I'm going to say my uh cool repo right we can provide a description um this repo is amazing and we can set it as public or private I'm going to
stick with private for now and we'll add a read me we'll drop down to get ignore we'll say may we're working with Ruby so we'll get that by default and we'll add a license like MIT we go ahead and create that repo um I want to point out that you have other things that are rendered here so that should be very clear um we have releases and packages which we should talk about at some point I'm going to leave this repo around if we want to play around with it um but uh yeah it's pretty
clear how to create a repo it's not hard let's go take a look at a more popular repo like Ruby on Rails um so I'm just going to type this up here and type in rails and we'll take a look and see what they have um so if we go into here you'll notice there are just more things we have codes of conduct right we have our MIT we have our security policy if we go up here to the security tab this is what we can see um so we have the security policy being rendered
out here and then it's showing um possible uh exposures probably based on one of the scanners I'm not exactly sure which one is showing that um but that is that there if we go back to our own repo we might be able to take a look at security here hold on uh going back to wherever that one was we just made that repo it can be a little bit of pain to sometimes find your own repos I'm not sure why they've never made that easier but just how it is and if we go down we
can find my cool repo here and there's this security Tab and notice that it's listing out uh things that you should do for your repo it's important to know what these are because um well if you have this uh the exam is going to probably ask you like what's what things can you access from here and this is just from the public repo if you have a private repo it's going to be different sorry this is private public can be different so let's just open this up and make a comparison and see if what kind
of difference there is here so if we go over to repo here and we go into this public one over here what options do we get so we get a lot more going on here so notice that this is the price private and that is the public probably because if you're if you had a paid version You' then get additional code scanning and secret scanning for public repos you automatically get that stuff I just want to point out that all this stuff is also under your settings under uh Security Options so they kind of just
like repeat it there you know so it's just what they do but hopefully that makes sense and that's all I wanted to show you so I'll see you in the next one [Music] ciao let's talk about maintaining a repo now what's unusual about this slide content It's Not Unusual but it's the fact that in the outline they have a whole section for GitHub Administration and uh for whatever reason I have it over here as opposed into the other section because of the way the outline is designed so understand that I'm not going to cover that
stuff in that other section because it's just repeated um but anyway let's continue on and look at maintaining repo so the first thing is your name so you can change the name of the repo if you do not like it as long as the name is available you can absolutely do that and a reminder that repo names are scoped based on personal or organizational accounts or organization accounts I I keep writing organizational but it means the same thing uh you can change the base Branch the default Branch uh you can rename it um just so
you know Maine is the unspoken best practice for naming your base Branch everybody does it the old one was Master nobody calls it Master anymore um you can opt in and opt out of some features for your GitHub repo I say some as a catch all just in case there's features that do not show up or there's ones that are locked in um but that's pretty straightforward you just check a box and you might have to do some additional configuration then there's the danger zone which contains actions you need to think twice about because they
cannot be undone if you make a big mistake and in the danger zone we have the ability to change the repo visibility um it's important to understand what happens when you make a a a repo from private to public the code will be visible to everyone who can visit at github.com anyone can Fork your repo all push rule sets will be disabled your changes will be published as activity now will this show up in the exam probably not I didn't see it but that is something to consider um you can disable Branch protection rules uh
so Branch protection rules are strict workflow rules uh uh that just like will do something like disallow someone from pushing to Main and uh you can temporarily disable them if you have to apply quick fixes and you can't work around those r rules easily you can transfer ownership to somebody else and they'll become the owner of the repo you can archive the repo so it becomes read only you can delete the repo so there you [Music] go all right time for some repo maintenance uh so what we're going to do is I want to create
a new repo I'm going to make it in my other account uh just because we're going to want to transfer from one to another but I'm going to go here and just say um uh under here Omen King and I'm gon say my cool repo 2 okay and I'm gonna just make this private and I'm going to add a read me here um I'm going to go ahead and create this repo okay so now that this is repo created we can go over to our settings and let's say I didn't like the name two I
need it to be three because we already have another one called two in the other account I'm going to rename that and it renames before we used to rename it used to take time now it's instantaneous which is really really great if we scroll on down we could change the main branch we could change the name to main two um there are some uh limitations there because it's not showing all of our options as we don't have other branches apparently it doesn't create it instantaneously but it will change it in a bit of time there
it is so I think it has taken effect if we go here and yeah it shows that it's been renamed so that sounds really good we're going to go back over to settings notice that we can checkbox and uh checkbox on and off features let's let's get rid of issues let's get rid of projects if we go over here to our code notice that they have vanished across the top so that is great we'll scroll on down um we have more abilities somewhere here in the danger zone so we can change our visibility it will
give us a warning about it I'm not sure why it's making it so hard I'm going to make this public I'm going to say that I I accept the changes and we're going to make it public and then apparently I have to confirm so I'm going to get out my phone and it wants me to enter a number into my phone okay so 37 approve great and I'll wait a moment for it to take effect there we go so now it is public um we can disable our Branch rules so I'm going to go ahead
and do that uh we can go ahead and transfer this repo I'm going to send it to um a specific person so this is going to be I want to send it to Andrew WC Brown which is the other me and then I got to type in the repo name so we'll go ahead and do that my cool repo 3 I understand okay so now it should be transferred um and I think the other person has to accept so I don't think it's instantaneous so if we go over here h do I have the repo
now if I go up here in my notifications how do I see the repo transfer I'm not sure I'm going to go check the email for this account and see if it shows up there okay all right so in my email we can see over here that uh there is a repo transfer link so I'm going to go ahead and click [Music] that GitHub repo templates is a feature for public repos that allows other GitHub users to make a copy of the contents of the template repo to use as a starting point for their own
repo and I believe it's only for public I I haven't checked for private but I don't know why you'd want to use it for private we set a uh a repo as as a template by checking box on the template repository and then you'll have this option to use the template and when you click use this template it will then ask you to choose a new name and it'll say what do you want to include and then it'll show that that was generated from that other template I use these in my boot camps because I
will create a starter project and then you will start from that template how are these how is this different from cloning or forking um the idea here is that um you're starting with a clean repo you're not having all the baggage of of stuff that comes with it it is a really clear clean repo and so that's how you're going to go ahead and uh utilize it but that use case that I explained for which is like you know you want to have something like a project that people are going to start as a basis
of that's where going to be using repo templates okay [Music] ciao hey it's Angie Brown and this fall along we'll go ahead and make a repo template so um we have here um let's go over here to our other repo trying to find it sometimes it's a bit hard to navigate repos there we go that's a bit better and so we have this my cool repo what I want to do is convert this repo into a public repo for now just so that we can utilize this feature I want to go to the top and
see if we can make a template actually it looks like we can I'm really surprised because what would be the point if um it's private you know what I mean because we go here how's anyone going to click that button it doesn't make any sense so I really think that that is a public feature and notice I actually checkbox it on and it turned off so I think it is yeah it is nope okay it's on now all right I mean I guess you could use it to make your own from it so I guess
my thought was it was always about other people using it but I guess you could make your own default template and use it for yourself so I guess it's not just a public feature but they're never going to ask you on the exam so I'm not going to fix the slides because of that let's go ahead and uh create a new repository from this template and we'll just say my cool repo 2 and we'll make it private and also we can include other branches but I don't want anything else and there we go so now
we have this uh repo that is making a copy of we'll give it a moment and here it is you can see it's generated from that one and there you go [Music] ciao so in GitHub you can clone a repo programmatically three different ways uh we have the first which is https uh you will have to supply a GitHub username and password on the clone and you'll need to set uh get to cach the credentials if you don't want to keep entering them in I didn't write it in here but when it says password we're
talking about the um personal access token because GitHub does not let you use passwords anymore um but in the documentation it kind of suggests that you can use a password because it says password protected oh not here but under here would it would it would say that um for SSH uh you can utilize that method you'll have to have an SSH key pair and you'll have to upload that to your uh GitHub account then we have the GitHub CLI um so we can do that as well this is going to use credentials uh when you
do GitHub login it'll actually use either a personal access token or SSH we can also clone repos in the GitHub desktop and we can just download a zip it's not really cloning but we can download the contents of it um so that's pretty straightforward there sometimes you just want the the the codes repo um I want to point out that we did all this in the quick and dirty git and GitHub crash course so if you're wondering how to do these three make sure you have watched that video and you've done it all okay see
you in the next one [Music] ciao you can add files to your GitHub repo directly via the GitHub UI if you drop down code you or sorry add file you'll have create new file or upload files so it's great for both text and binary files um and uh the idea here is that when you uh go ahead and add a file if you need to have folders you can put a for Slash and it will end up creating as many folders as you want and then you put the name in and you just create that
file there when adding multiple files that you also need to edit you can also quickly use [Music] there are lots of ways of creating branches in GitHub and git um something that you should really know how to do is to use this single line command get checkout hyphen B to both create and check out a branch in one go you should absolutely know how to do get push hyphen U origin staging which is basically The Hyphen U is short for hyphen hyphen setup stream I know it looks like a single hyphen there but there's actually
two uh for this flag you can create branches from issues um and then the branch and issue will be Associated and linked you can directly create branches in the GitHub UI you can create branches in the GitHub desktop and I'm sure you can create branches in the GitHub CLI and uh yeah there you [Music] go hey it's Angie Brown and this fall along I want to create some branches nothing super difficult to do but um something that will take us just a moment I'm going to go ahead and use um our my cool repo and
what I want to do here is I want to go ahead actually I want to clean these up I don't want to have a bunch of uh junk repos hanging around so actually I decided against that and I just want to keep things clean and keep with our single repo even if it is U public so I'm going to go ahead and type my cool repo here and clean this up Andrew WC Brown or man geez Andrew WC brown brown my cool repo it's that autocomplete that's messing it up there we go and I'm just
going to go ahead and also get rid of this one and then we'll just be really focused on what we need to do at hand here just give me a moment there we go okay so now let's just go back to our GitHub examples and there are a few ways that we can create issues uh one is or sorry branches one way is to go to the branches Tab and I'm pretty sure we can just create them right here so I can go here and just say uh feature uh cool one okay and we can
say what we're branching from so that's an example and there it is uh another really useful way and something I really recommend is you create an issue and we'll and we'll make a task saying create a branch from an issue okay and then what we can do is then go ahead and create a branch here in development in the bottom right corner noce is going to put the number in here that's a very common pattern is to have whatever your issued number is and then a a a short name for the branch okay then saying
like what should we do next code spaces locally I don't really want to do anything next I just want to um do nothing but I'll go ahead and hit create branch and so then it gives us like a button where we could click to go ahead and play around with it so that is something I do a lot when I teach boot camps I show this a lot this is a very common workflow and something you should absolutely remember uh that you can do um let's go ahead and launch up this in code spaces going
to go here and uh we have this one here sure I'll launch up this old one sure why not and once this is launched up we'll take a look and learn how to use a very cool shorthand for um implementing uh checkout and creating a branch in one go okay so just back here when this is ready all right all right so this is back up and running and notice that we are currently in the main branch we can type in get Branch to get a list of br branches and so what I want to
do is I want to create myself a new Branch here and actually there are other branches it's just not showing them if we do get pull um it might show us those other branches there we go and now if we type in get Branch it still doesn't show them but that doesn't mean we can't check them out but uh our um our uh uh program is aware of it we might also be able to create branches within a git graph these were things that we installed earlier so they might have the option to do that
here I'm not 100% sure see create Branch so we could do that as well I'm not going to do that but what I really want to show you is something that will show up in the exam I'm actually really surprised that it did but it is a really good thing to to um uh to know is that normally when you create a branch you'd have to type in get branch and I'd say my new Branch like this and then I'd have to do get check out my new Branch okay and so that's something you can
do but what is more efficient you go check out back to main is we can do that in one call we can see get checkout hyphen B for branch my new Branch 2 and that's going to create that branch and check it out so really make sure you remember this one because it will absolutely show up on your exam it's absolutely something you'll use every single day I strongly recommend it the last thing um I want to go over is just pushing to origin so what we can do is is set um Upstream but think
that U is a lot easier to do we say origin and we just say my new Branch here two and then that will push that Branch up there because you really want to know how to set that origin so that's all I really wanted to show you and um yeah we can just stop this environment so we'll go ahead to command pallet just say stop current code space and I'll see you in the next one okay [Music] CIA so starring repos is uh something that we can do and it's similar to bookmarking uh for a
repo that we're interested in keeping track of and so stars are public and everyone can see them and usually this is an indicator whether something is really popular in fact GitHub might take notice uh in their community and do something nice um so a lot of people seem to care about star counts and uh make it their goal to try to get as many as they can if you want to find um starred projects that you have starred you can go to github.com stars and there's a few other things that we can explore um and
you know in the exam they might actually ask you what that URL is to get to uh your starred um uh uh starred things that you have starred so just make sure you remember that URL [Music] okay hey this is Angie Brown and this follow along I want to take a look at starring Repose so what we can do here is just go into our own project and I think we could star our own which is a little bit silly but it's something we can do we could also put it into a list so let's
go ahead and hit start and I might also want to say this is for inspiration and so now that I've started that stuff let's go take a look at our actual start pages so we could type in Stars at the top here but I think also on the right hand side we can go to your stars and um I mean this is showing stuff that we've starred and this has a list but that wasn't the same page that I saw so I'm actually surprised this is different and maybe there's actually two there's this one and
another one so let's go ahead and type in Stars at the top here yeah why do they have why do they have two different pages they got this one and then they got this one and to me it's like the same thing okay whatever I guess maybe one is specific to the repo so this one's for Andre Brown Stars so is that like public ones that everyone else can see what if I go up to here to my profile you know what I actually never noticed these tabs up here before so yeah I guess this
is your public profile one of things that you have started if you want to show other people I didn't realize that and then we actually have this other one which is the Stars okay um I could probably show you something a little bit more because in mine I have a lot more starred stuff not that I remember what I have starred but if we go here to Stars you can see a lot more uh stuff here and it shows you could jump to a friend we have categories which is kind of cool I don't really
see the list here but I suppose that's more for the profile uh but yeah that's about it um and maybe you might want to remember uh over here you all for this okay because like I remember just on the exam they're asking about like the star the star URL and I know that's supposed to be Stars okay but we'll see you in the next one [Music] ciao another thing we can do is watch repos and this allows you to stay stay informed about activities occurring within a repo so the idea is that you'll hit watch
and then you can say uh to what level of notifications you want for watching and notice that if I go custom I can say exactly what I'm looking to watch and in then your GitHub account you can specify how you want to be notified so there you [Music] go let's take a look at watching repos and I actually can point out a repo that drives me crazy because um somehow I got I got subscribed to it and they update it so often and it's Wing Lang and I'm not saying it's a bad project I'm just
saying like they really shouldn't have opted everybody into the uh to the alerts because it it's driven me crazy um so like notice here I said stop ignoring because I I was like tired of getting updates for this and the reason why was that in order to get access to this project in the beta they had to add you uh in some in some manner I'm not sure if it was a contributor or something else but all I know I was really getting sick and tired of getting alerts on my phone so cuz it'll it'll
have in summaries and it'll it'll fill up these digest emails and it gets annoying so I ignored it okay but let's go ahead and I'm going to pretend that I want to uh watch another project here from Andrew Brown and we can go over here to GitHub examples and then we can go ahead and click watch and um we can say all activity right we go to custom change maybe we just want issues okay I'll go back and say for everything here there we go and I just want to point out if you go to
your settings uh your settings over here and then we go to Notifications we can control you know what we want to see for notification specifically for watching we can say here on GitHub or email you say I don't want the emails okay so very straightforward um is there a place to see all of the stuff that you're watching probably uh we could try like I think it's under notifications it's like notifications maybe it's like watching I know this is another slide later on in the course here it is and so I can see everything that
I'm watching and I could just say stop watching all the stuff notice that I'm automatically watching stuff for my own repo so automatically you're always set to watch all of them if that makes sense but there you [Music] go feature previews allows you to enable or disable features that are in beta in your personal accounts so the idea is that we have feature uh feat previews and we go over here and then just kind of enable it is what we want to have um some of them might be already turned on some of them you
might want to turn off but let's go take a look at it okay all right so I'm in my count and I want to go ahead and take a look at fe uh feature previews I don't want to meddle with my main account but I'm going to go here and go to feature previews and here we can see some stuff so let's say we wanted the command pallet that sounds really cool I'm going to turn that on actually I think it's already on I didn't even know that we could do that and it seems like
we would have like this Global search thing we could turn off slash commands if we wanted to so we say disable or enable it let's go take a look at command pallets because I even know that we had it says here contrl K I'm on a Windows machine right now so we have control all K or control K I'm going to give that a go and so I'm going to try this contrl K oo look at that that is smooth and so then we can jump to something uh what if I type in gists no
but I mean like maybe we could find stuff really quickly I mean that's kind of nice like P personal access token uh let's say I want to go to Andrew or let's say we want to go to uh examples oh yeah I'm going to use that a lot more you might see me doing that I might tell you that um I really hope that that becomes a main feature because it's really nice um feature previews I assume this is beta um I don't think Alpha features ever get shown but that is really cool I'm surprised
they didn't put that in the exam anyway we'll see the next one okay [Music] ciao so tagging is used to capture a point in history to Mark version released of your codebase and GitHub makes it easy to explore tag versions of your git Rebo so here's an example of Ruby on Rails and you can see they have 516 tags and if you go into the drop down where your branches are you can switch over to the tags and you can see the versioning um tagging is not specific to GitHub it is a feature of G
um and just a good practice to know these are common uh git commands get tag commands you absolutely should know they're super useful uh to utilize and a very common um workflow is if you have a production Branch to tag when you tag a release that would be the thing that would trigger it out and send it uh to uh your production compute so um yeah tagging is super important um and often when you see milestones in GitHub they'll usually correspond to tags and we looked at milestones we saw that they were verging them based
on or the names of them were based on tag releases that they're they're working towards um so yeah I just want to get you some practical knowledge with tags even if it doesn't show up on the exam [Music] okay hey this is Andrew Brown and this fall along I want to show you tagging and if you're hearing my uh heater in the background it is super cold in my office it's like -10 cels I do not have heat and I'm doing the best I can so sorry for the background noise or the shuffling of the
snowsuit but let's go ahead and learn a bit about tagging because tagging is such a useful skill um that there's no way I was not going to show you this so what we'll do is we'll go over to um let's say our GitHub our GitHub examples repo going to go over here and um yeah we'll go into this one here and what I want to do here is I want to start making some tags and what we'll need to do is launch up a new code space okay we'll give it a moment to load up
and I'll be back in just a minute you know what I think what I ended up doing was running the exam Pro GitHub example so I'm just going to go back because this one's never going to work for me and I'm going to make sure that I'm in the correct directory so it's this one that I want and we'll go back up here I'm going to go ahead and uh well if I already have an active one I would probably rather use that so I'm just going to open this one you just got to get
your code space up however you're going to get it up um but I just want to get in here and get working so I'm going to launch this one no that was the one that was building I think yeah I'm not sure sure exactly what's wrong container build failed checking troubleshooting view logs uh I didn't know you check the logs as it's building Docker build X build failed it's it's uh failing with terraform so um I thought we uh I thought we fixed that so if we go into this is this still having the terraform
code in here it is so what I'm just going to do here just to um you know what I think it is um because sometimes it works and sometimes it doesn't and what happened last time is it ran out of space uh is what I noticed it was really a weird thing that happened so what I'm going to do is just stop this code workspace go up here stop stop stop let me stop it please you ran out of space that's fine I get it let me stop the workspace okay and what I'm going to
do since this seems to get us more reliable results is always deleting the code space I'm going to go ahead and delete this here and I'm just going to go ahead and make a new one okay so go all the way back here to the Andre Brown one here and we'll make a new one and unfortunately that's the most reliable way to use codes space again I really prefer giod I don't have these issues with giod ever but we'll let this spin up and I'll be back here in just a moment okay and this environment
is still failing to build it's really bizarre what's going on here um and I'm not exactly sure why it's failing but uh okay what I'm going to do I'm going to go back to view logs here because maybe it's messing up on that terraform again it is Terron it's like download a bunch of stuff I don't need so what I'm going to do is I'm going to go in here and I'm just going to ignore this I'm sure it's going to continue spinning up I'm going to click into my Dev container and I'm going to
edit this and for whatever reason it's just not working so I'm going to comment this out for now and we're going to just pretend terraform doesn't exist was working fine so many times but if that fixes it that's good enough for me okay so I'm going to go to our uh code spaces again go ahead and delete this one and I'm going to go back to that repo if I can please make sure I'm on the right one and we'll go ahead and launch it and then maybe that must be old Let me refresh that
I thought we stopped it there we go we'll start a new one and then maybe this time we'll get into code spaces so see you back in a second okay all right so this environment finally worked I guess terraform was giving us trouble and you know I thought these these these packages were pre-built um but I guess there must be compiling at the time of source code and there's some issue that's happening so it might not have that we ran out of space it just might have not worked and totally a detour to what we
wanted to be doing but what I'm going to do is go ahead and create a new folder here and this one's going to be called Tags as we want to just work through some tagging stuff readme.md okay and uh there's a few things I want to show you how to do the first thing is how to tag so like we could say version 1.0.0 we could push our tags we will check out we could check out a tag at some point I mean that's pretty straightforward I don't think I need to show you that but
I'm just going to write it out here so you can see it 1.0.0 we can do get tag hyphen d one Z Z to delete our tag and then we can uh delete our remote tag those are the three things I want you to know so before we do this I want to talk about semantic versioning because semantic versioning is a way of tagging okay and most repos use this if you see a v in front of it I know I used v as an example there uh in in the actual slides I I put
a v in front of it but uh generally this is the format that a lot of Open Source projects and places like to use um depending on how old the project is they might have just stuck with the v in front of it and use everything else with that we can take a look here and see what rails does as an example repo rails and what I want to do here is just take a look at how they're tagging so see they have a v in front of it and but they've been around forever and
um I'm just telling you like at one point this page did not exist there there was this idea of semantic versioning but whenever it came out you know some of these projects existed before then so that's the reason why you might not see it um but anyway we'll come back all the way over here and I like to stick with semantic versioning as best I can as long as I remember how to do it and so the idea is uh we want to apply tag to a particular commit and just to make things a little
bit easier let's get into a dark theme and the other thing I I'm going to want to have installed here is get graph all right and I think that if we have this installed oh looks like it's already installed did it actually remember my settings remember I complain about how often it does not remember my settings it might actually worked in this case so if I go down below here I have git graph and grit log they're actually both installed but why the theme didn't persist I don't know and the idea here is that I
want to be able to apply a tag um and the way we can do that is we're going to go ahead we have some uncommitted changes going just say tagging whoops we'll just say uh tagging here and we'll go ahead and first try to apply a tag so we'll say get tag 1.0.0 and it should show up here there it is okay great but understand this tag is local if we go over to our repo and we give this a nice refresh it's not here zero tags okay so if we want that tag to go
up have to go get push hyphen hyen tags okay when you do your regular push you can add that as well you can see that it's been pushed we'll go back over to here here we'll give this a nice refresh and now we have one tag we go over here one tag so good shape right um and the idea is you can switch over to it just like a branch you can check it out just like a branch um and so that's something that is really useful if we go back over to get G graph
we can now see uh it actually doesn't show you if it's pushed which is U one thing I think is a bit sad but uh it doesn't show you when it's pushed so that is one indicator that can be a little bit confusing here um and actually when we did push push tags it didn't actually push the uh the commit so I always thought it did both but I guess it only does the tag when you do that so we'll type in get push and make sure that that's pushed as well there we go they're
all over here now let's say we made a mistake with their tag sometimes you do this you might uh someone else tag something and then you tagged it the same and you got to delete your tag so we have to delete it in two places we have to delete it locally get tag hyen d10 okay okay but if you go here it still exists so I'm going to give this a nice hard refresh and this absolutely exists so if we want to get rid of this one we're going to have to type get tag hyphen
hyphen delete origin one0 Z okay um and it didn't work there I mean that's the oh you know it's push it's push sorry it's push we'll say get push delete origin 1.0.0 point0 and so now it's deleted it we probably should have took a look at the um uh the GitHub config file that there might have been something interesting there but uh we didn't I'm going go ahead and give this a nice refresh here and I'm just curious what would this is rails it's not us but if we go back here and give this a
refresh this should now be gone I'm just going to tag this one more time okay so I'm going to go ahead here and say get tag 1.0 .0 I'm going to say get push hyphen hyen tags if you wanted to tag some other place you have to check out that commit using the shot code and then tag it I'm not going to do that here let's go take a look at the um the git directory because in that git directory it might show us something interesting in the config file so we go to settings and
we know that we have to tell to unhide certain stuff okay so I'm looking for hidden files in here it's somewhere in here put type in dogit could find that dogit here it is it's under exclusions so I want to just take that out so I can see it and we'll go ahead and open up our config directory because what I want to see is if there was any tagging information in here and there's not so so there's nothing new here to see I just thought there might be but yeah that's all there is to
tagging and uh we'll call this one done and I'll see you in the next one um okay so [Music] ciao so GitHub releases allows you to create releases with release notes and linked assets such as zip sources or binaries for specific platforms so in a get repo you'll see releases and from there you can read about the release and see all the stuff that has changed and there might be the source code or binaries if you if this is something like um I'm trying to think of an example like let's say you like to play
video games and there's an emulator uh for like the PlayStation uh they'll have like builds here for Windows Mac and um other things here uh maybe you make a video game in general you could distribute the binary here it's anything where you're Distributing the binaries or the SCE source code but you're making very clear what has changed as a release um and often like when I'm having issu issues with something I will actually go through and read the releases when let's say um like react router have you ever used react router Dom and they've changed
versions I'm trying to understand like what compatibilities have changed what does not work anymore maybe I was experiencing a bug and if they do a good job with the documentation it will be in there so there you [Music] go hey everyone in this fall along I want to take a look at GitHub releases as it is a very useful feature to let people know about changes that are happening in your repo um so before we do let's go take a look at some other project that might have changes I'm trying to think of something interesting
like maybe an emulator um so I'm just typing emulator in here I'm just looking for one here's a Nintendo switch emulator or maybe PS PS2 I'd rather do PS2 I feel like they might have good uh information about changes like PCS pcsx2 and on the right hand side you can see we have releases and if we open up the releases um they do not tell you much okay so that's not a great example so we'll go back to another one and we'll try another uh video game emulator maybe we can just try putting the word
emulator you know and people can write whatever kind of releases they want this doesn't have releases uh we'll try the 3DS emulator this one doesn't have releases we have um this one here do they have releases no well they do they do no just tags okay so I guess we're just going to not get really good ones here but I guess we could just go to rails because they seem to always have enough for us but I just wanted something that was written a little bit more uh nicer so you could see a good example
of a release but here is one where um you know they're talking about different versions I feel like if there was a release for a specific uh tag version right that uh we get better information like when rails first came out like 70 probably would be a good one so I'm just scrolling through here I mean these are pretty good but again I just want to try to find a major release one is this this 1.0 seven I'm going to just type in 7.0.0 might have to scroll a bit to get it to load 08
there must be where is it what it just skips over it okay well I mean 71 was pretty good so we'll go over back to 71 and uh yeah like here it's telling you about all the libraries and things that are Chang this one's a bit better because it's showing examples of things that have changed so you can p whatever you want to release and it's just to help communicate what the differences are because a lot of times you just don't know so we did do some tagging and that's a great opportunity for us to
create our own release in our own repo so what I'm going to do is go back over to our home I'm going to find find this repo that we have I'm going to go over to releases and we're going to create ourselves our own release and we'll just say version uh 1.0.0 ready for the world the best GitHub example materials around my hands are cold if if you can't tell I'm uh sorry but I'm in like full snowsuit right now and I got the heater blowing so if you hear the heater I apologize but it's
just how it is right now in my office anyway we you can choose a tag which is great and then um you can then attach the binary so the idea is we would download the zip and then re-upload it again I'm not going to do that because that's pretty straightforward we'll go ahead and do that and so there's our release and that's all I really wanted to show you for releases apparently there's a compare button I didn't even know that so that might be kind of cool to do but um yeah there you go [Music]
so GitHub packages is a platform for hosting and managing packages including containers and other dependencies and the things that it can uh host in terms of its package registry or repository is Javascript packages ruby gems Java Maven and Gradle packages net packages and Docker images and the last one I think is going to be the most common uh one that people can utilize um they have a free tier they have a pay tier so you can start using this right away and we will go give it a go um probably the easiest thing we could
do would be to create a Docker uh container and then push it to GitHub packages so that's kind of the code that we'll have to go through we can make a simple hello world Docker file run it make sure we build it and uh GitHub actions could be used to build and then publish I put I wrote the word public but publish packages to GitHub pages so there you [Music] go hey this is Angie Brown and this fall along what I want to do is is go ahead and create a GitHub package so what you're
going to need to do is start up a code space I actually already have mine running I think by this point you probably know how to do that I just uh was working on the video earlier and I had to close out and restart so that's where we are now so anyway I'm going to make a new folder in here this will be for uh pack GitHub GitHub packages okay and you're going to try to spell s if you hear a bit of noise in the background it's cuz I'm running the little space heater near
my feet so my feet don't freeze I'm in full snowsuit right now okay but anyway what we'll do is we'll go into the package of directory and we'll make a new file and we'll call it Docker file okay and from here um we want to create this little Docker image so we'll say Alpine uh latest this isn't a Docker course I'm not teaching all this but just follow along with me here or just copy paste it from my repo whichever you want to do Echo we'll say hello world okay so I'm going to go ahead
and save that file and now what I want to do is go into that directory and build it so what I'll do is run Docker build hyphen T hello world period we'll build that okay and and now we'll try to run it make sure it works there we go that works okay and so we're in good shape uh the other part here I would say is now that we have our Docker image built we want to now push that so um I'm going to make a new read me file so I just have a little
bit of room to work with here and there's a few things we need to do we need to set our username so I'm going to say username here I'm just going to set mine as what I am Andrew Brown WC Brown that's the count that I have here okay and I'm going to put export in front of it so I can export it and yeah I want allow pasting good and we'll hit enter it actually double pasted it so I got to be careful there I imagine this is a bit hard to read so I'm
just going to bump up the font a bit and so that should be set the next thing is I'll need a personal access token so I'm going to go over here and we've done personal access tokens quite a bit in this course and we'll go down to developer settings and we'll make a new one and this one is going to well I guess we got to confirm with GitHub mobile first get my phone out here and uh it wants me to enter a code in one two okay this one's going to be for GitHub packages
oh I'm not registering an app whoa whoa whoa whoa whoa let's go back personal access tokens there we go there's an old one I'm going to delete that and I'm going to generate out a new one we'll say uh GitHub packages I want this only to be for a day just in case I forget it and someone tries to take it and this is going to be for a specific repo so we'll go down here and say this repo and then for permissions I'm looking for packages packages it's under here maybe packages let's search for
it packages it says we need a personal access token um so I'm not seeing packages in here and this makes me think that we should probably use a traditional one I don't normally do this but because I cannot find it I'm going use a classic token so that's what I'm going to do um I'm going to go here I'm going to generate a new token really wants to make make a new one and just say GitHub packages and so it's really similar um very similar to the other one well I wanted expire and I'm looking
for packages here it is read and write packages delete packages so I'm not sure where that new one is in the new one maybe it's not and we just have to use the classic token we'll go ahead and generate that token out I now have this token I'm going to bring it on over to uh uh here and I want to set this as our environment variables I'm going to say GH token and we're going to paste that in okay we'll we'll copy this good I'll paste it in and hit enter so now that's set
um I need to set the image name I'm just going to keep putting the GH under it image name just so it's a bit easier for me to find them when I want to find all the environment variables later hello world we'll go ahead and do that and copy that and paste it in hit enter uh I'm going to put export in front of that just in case that didn't work and then I'm going to do export my hands are really cold it's really cold in here uh I think it's like7 it's because my shed
uh has a um oil furnace or gas yeah oil furnace and I have to go drive out to um The the Reserve to get some gas and it's just really bad weather so I'm just trying to get this done so you folks can get this course as quickly as possible so we've exported those values so that's really good I want to make sure that they're set so I'm going to type in EnV GP GH and there they are okay so now we need to write some code the first thing is we need to log into
Docker and so Docker somehow talks to GitHub I'm not sure how that works but we'll just go ahead and work with it here so I'm going to say Docker login U we're going to say g c say GHC so that's for GitHub container repository I'm assuming hyphen U and then we'll say GH username and then we'll say password STD in okay so that'll pass the password that's what that pipe does and see if that works we'll hit enter uh doesn't know what that flag is did I type it wrong I did and we'll copy that
and we'll paste that there enter and so now we're logged in so that's step number one step number two is we need to tag our Docker container so we'll say uh Docker tag and I want my image name and then my version uh this will be GH version and this will be GH I mean we could just write it out if it's a bit simpler for everybody so we just say hello world one0 and then on the other side be GHC doio and then that would be our username so I could just type it in
here it's up to you whether you want to use environment variables or not I'm just uh I just want it to work so I'm just going to write it out in full even though we made environment variables up here for this particular use case but that's okay one z z so the idea is we're going to tag um our Docker image we built is uh for 1.0 to map to here okay we'll go ahead and copy that hit enter um no such image I mean there is no tag called 1.0.0 on it we do Docker
list or Docker images it's called latest so we'll change this to be latest we can make the other tag latest as well but I I'm going to make it 1.0.0 I'm not sure why I'm just going to do that so how it's going to be we'll go ahead and enter and so now that's tagged and so now we should be able to push it GHC doio slash say Andrew WC Brown for slash hello world colon 1.0.0 copy enter um so it says an image with the tag does not locally exists with that tag so maybe
I tagged it wrong THC R iio I spelled it wrong yeah and we could have just copied this one here to get it all right it enter and there it's pushing it okay so pretty straightforward uh we could have even done this we could said like uh export um tag name right and we could have done this right and then we could just done that and we could have done that I'm just cleaning it up doing that uh post post refactor here and um here we could have just put these in as such so we
could have done this and then this would have been GH uh image name and then this would have been GH version and so you get the idea there so that's pretty much it let's go take a look and see where this actually is I'm done with this personal access token so I want to delete it so nobody else is using it and um this revokes all personal access to in class classic just in case I'm going to do this so I'm going to say Andrew WC Brown I think they're all revoked but just in case
they not let's do that anyway and we'll go over here and we'll take a look at our profile because it might show up under packages here I'm not exactly sure how you set public packages oh there it is it's private all right and I'm not sure if it's specific to a repo link this package to a repository so I guess if we wanted to link it we would have had to apply a label and so I guess labels are what you think they are they're labels and that way we could associate it I'm not going
to that here today I think that's fine but I will copy this just in case anybody else wants to do that and um we'll go ahead and save our changes okay and this really doesn't want to push here today I'm not sure why get push what doesn't it like um oh push protection okay it detects something here oh is my token in here wow that's cool it actually detected it so that because we turned on security scanning earlier it would not let me do that that's awesome I wish we I I thought I was showing
that earlier so don't show token actually what we have to do uh is we can even just push the old one we have to amend uh the last one we had so if we go over here uh I'm going to have to go ahead and amend this so I'm trying to figure out if there's a way I can just quickly amend um I'm going to get rid of this change here first I'm just going to say discard this change and I'm going to type in get commit hyphen hyphen amend and so now uh what I
should be able to do is go into here for all changes right and I should just change it actually no that'll just amend the message sorry that's not going to do what we want uh what we actually need to do here is we out of amend mode I think we are yeah um I'm going to do get reset uh soft head Tilda one and what that will do is bring the changes back into here and so now I can go back and fix that but that's really good that uh I had the the secret scanner
turned on do not commit your GitHub token but we did also delete it so it's less of a problem as well uh GitHub packages so just be really really careful with that stuff okay and there you go so I'll see you the next one okay ciao [Music] so for a GitHub repo under the insights tab you can gain lots of statistical graphs about the repo and so insights contains the following tabs we got pulse this is an overview of recent activity contributors a list contributors and their activity stats Community standards uh commits code frequency dependency
graph Network forks and I want to point out that on the exam they definitely I had to know the contents of some of these which I think is really silly but that's how they did the exam and so it's important that you pay close attention here of what kind of stuff can show up on these pages so you can identify uh which uh category of um graphs they're talking about here or charts or whatever you want to call them um and I noticed that repo insights is not listed as available in the free tier but
I think if it's a public repo it shows up so maybe they're talking about for private repos I didn't thoroughly test it but I just wanted to point that out about um about that there let's go take a look at all of these in more detail the first is pulse this contains poll requests open close ratio issues open close ratio summary of activity uh graph of top contributors list of merge pull requests list of issues closed list of issues open list of unresolved conversations remember this one because this one will help you narrow down or
rule out the rest because this one is a little bit more complex than other ones uh then we have contributors this contains a graph of all commits over a time period a graph of a specific contributor commits over a time period then we have Community standards this is a checklist of uh of recommended I spelled that wrong but recommended Community standards and how much a community profile has completed this graph will only show for repos that have Community profiles so Community profiles are open source projects on GitHub and I think you have to turn it
on to turn yours into uh Community profile file okay we have repo insights so this contains a number of commits per week for the last 52 weeks for a year that's how many weeks there are in a year so that kind of makes sense the average number of commits by day uh of the week uh for the selected week then we have um code frequency this contains the amount of additions and deletions of a code uh a code repo or sorry of code to a to a report per month I really wrote that weird but
you get the idea that you have additions and deletion over time and I noticed that for really large repos they can't even render it so this is not really useful for large open source projects but um you can see it in smaller projects and that's what I I said right there down at the bottom uh we have dependency graph this contains list of dependencies list of dependence and Export software bills of materials also known as sbmo SB so security and compliance teams increasingly request software bills of materials to identif ify open-source components of their software
projects they assess their vulnerability to emerging threats and verify alignment with license policies so sounds like a good thing for security folks um then we have the network graph this thing is super useful um especially when you're working on uh like or you're utilizing an open source project and something goes wrong I will jump into this and try to find uh other commits from other other branches or Forks to to get the functionality that I need in my application so this will show The 100 most recent pushed Forks you can read the commits to determine
the difference of these Forks um then we have Forks itself so this contains a list of fork filterable Forks very similar to the last one but this is just a a list of forks and the other one is over um over time and it's visualized but yeah I just want to point out that you do need to know these ones uh even though again I think it's a bit silly but but yeah you're going to have to know specifically like what they're doing on these um on these on these Pages or graphs [Music] okay hey
it's Andrew Brown and in this fall along we're just going to take a look at repo insights so what I want to do is go to a popular repository like Ruby on Rails that has a lot of activity and take a look at what their insights look like so the first is puls and you really need to know pulse because again on exam they might ask you about this one in particular uh if you notice here we can change the scope so we can say 1 month 24 days um this one's going to show us
here um open versus closed I believe so we have open and closed pull requests and open and closed issues red being closed I'm going to ass purple is closed and green is open now we have some summaries merged pulled requests open pull requests close Issues new issues these here are all listed down below so if you click click on this it's going to just jump to that location okay so that's how you know what's all down here these four things are listed down below the nice thing here is this summary so excluding merges 75 authors
have published 240 247 commits and 388 commits etc etc so that's kind of like a thing you can put in a PowerPoint then these are your top contributors so the person that was uh doing all the work here is Jonathan Hefner so good job John uh keep up the great work um let's move on so we have contributors these are people that are contributing code and so it shows kind of a histograph of or ticker ticker tape or whatever you want to call it of the amount of commits that they are committing so we have
a good idea there and this is for everybody across the top so in 2014 you can see a lot of stuff was happening probably a major refactor was occurring and that's probably why that's so huge there um probably again other Peaks where you're seeing very large things is is they're preparing for new versions of Ruby on Rails we'll go over to community standards checklist cool we'll go to commits um shows us that there was a lot of activity this year in December so in December I mean this we're in January right now at the time
of this video but in December you can see they did a lot of work for Christmas and then back here in February they did a lot of work for some reason you can see Monday seems to be the busy day but I'm not sure oh you clicked find out okay before I didn't know like if this is over time but I guess it's like you click it and then it shows you okay code frequency won't show us here okay dependency graph uh things that it's dependent on makes sense Network this will take a little bit
of time because this has at least 100 forks we'll give it a moment but I'm telling you this thing is super powerful and I've used it since the day it's existed and it's been around for very long long time um but when you're working on open source projects and you're having issues you can bet your buttons that somebody else is already fixed it and you can just go look at their commits and figure that stuff out so yeah we'll let that keep loading and while that's loading we'll open a new tab we'll take a look
at Forks so here's all our Forks okay we can sort based on stuff uh and hopefully the exam won't ask you about what you can filter by they they do that for issues for some weird reason but uh come back here and so we can see this is rails right and so if we go over here we can see oh this person's doing something make the this relation model delegation strictor they have a work in progress here we go down here add a read me something in another language update screenshot and getting started with rails
but sometimes yeah fix style code sometimes people find like bugs and before they even get fixed they'll be in someone else's fork and so you can grab them and just keep working but uh yeah that is um insights we can take a look and see if we get any insights in our teeny tiny repos we'll go to this one here and we get insights and so we already have some stuff here we can see a few different Andrew Browns notice here that shows exam Pro Dev the reason why is that you can have um uh
you can like if I'm on my computer my computer which is here uh it can have a different get email and name set so even though it is from this account which it was it can show a different person was contributing so just be aware of that but anyway yeah that is repo insights see you in the next one [Music] ciao so in GitHub we are able to create ourselves issues and it's pretty straightforward you just need a title and description and we can also create it via the GitHub CL Li um there's not really
much else to say about creating issues um but there you go [Music] okay all right let's do a comparison between issues discussions and poll requests it's very important to understand or distinguish these three things because they seem kind of similar but uh they're not um so the first is issues they are for tracking tasks bugs enhancements and other actionable items then you have discussions these are facilitating conversations and q&as about a wide range of topics related to uh the project and then you have P request proposing reviewing and merging code changes in the codebase so
on the issue side this is often linked to code changes and can be linked to PRS for discussions you have categorized by topics can be converted to an issue but really it just creates an issue with a soft link to the issue so it doesn't really have the same kind of relationship that an issue would have with a PR um it's not directly linked to code changes um so again discussions are really for as it's implied Community uh engagement or uh conversation around your repo um we have for pull requests directly linked to code changes
can be linked to issues now I should point out that when you have the numbering for issues it has like one 2 3 four five your poll request will I think pull from the same pool of numbers we'll test that to make sure that's the case um and so uh just understand that when you reference issues or pull requests um they're pulling from the same number pool okay there you [Music] go so what I want to do in this video is I want to prove a theory that the issues and pull requests are pulling from
the same number pool in terms of when they're incrementing so what I'm going to do is I'm going to go over uh to our GitHub examples repo um and I want to create a new issue and make note of the number that is is used so we're going to go here and I'm just going to say uh create a new um issue okay and we'll create this and notice that we have the number seven okay so we have the number seven so the question is if we were to use a new poll request create a
new poll request what would we get so I'm going to make a new pull request and I technically have some code that I can merge it if you don't then you'll have to make some but I'm going to go ahead and create this new pull request and this will be Andre Brown into the exam Pro repo go all the way down the bottom or maybe all the way to the top sorry and we're going to go ahead and create that new portal request and just say more changes okay and let's make note of the number
the number here is five we go over to issues the last one that we created in our um oh sorry the PO C over here is five Okay so that didn't make for a very good example because it went the other way so what I'll need to do is I want to delete this pull request this one's kind of useless we'll close that and what I actually need is I need some kind of change in this repo to go the other way all right because I need to see if that other number is going to
increment we'll go back to this main repo and remember we created this issue this issue number was seven and so I want to see what the next PR in here is going to be we did just close this one but maybe we need a PR for just something locally not something across across uh Forks okay so what I'm going to do is I'm going to go ahead and go to code and I'm going to go to branches and I need to just move over to another Branch we have some junk branches here I'm just going
to go ahead and delete them okay and I'll even get rid of this one here we don't need that I'm G to give this a refresh and so now what I want to do is create a new branch I'm just going to just say um number test and so this will be off of Main and then what we can do is go over to our code and I just need to make some kind of change so I'll I'll switch over to number test and what I want to do here is I want to just change
something so I'm going to go into our get crash course go our hello and I'm going to go edit this file I We'll add another X Mark we'll commit those changes and so now we have a reason to make a pull request we'll make a new pull request and this one I just want it to be in the current repo I don't want to go uh somewhere else so very straightforward here here to there and let's make note of the number that is used so here it's using the number eight so I want to show
you this is seven and this is eight so they are indeed pulling from the same number pool so so just so you know like you might expect clean numbers as you're going up with your issues and you're like what happened to this number is it unlucky number did GitHub get rid of it no it's probably over in your pull request okay we can also link pull request we'll probably do this later again but you can link your issues to your pull requests um if you go to development here on the right hand side you can
just click here and Associate this way so I can go here and then choose a poll request it's not showing up for some reason do we not have a requests over here we do it's right here yeah go back over here development oh did I click the I clicked the wrong repo that's why and so I can choose this one here and we'll apply it so now this is linked um to that there and it shows the link there as well you might able be able to link them up here as well I'm not exactly
sure so what I'm going to do I just want to unlink that for a second okay and I want to see what happens if we were to um if we were to go and update this and then put in like it says closes eight right and we do this would this link it I mean we have eight here it's showing there okay and Link a poll request that it now is closed so did it just do that like I'm not 100% sure did it do that I'm going to go ahead and just delete this for
a second edit update because I can't tell but that's what I want to know so what I'm going to do is I'm going to do this one more time and delete this issue okay and I want to see if that takes any kind of effect so we'll make a new one we'll just say uh cool issue it'll say closes pound 8 okay I just want to see if it's linked in any way so it doesn't look like it's linking any way there but it could be that um a particular commit could close a ticket for
sure um but I thought something with poll requests would happen here but anyway what I'm going to do here is I'm just going to edit this to say my cool issue and what I want to do is I want to see when we close this poll request when we close this poll request will it close this ticket okay so a link of poll request now that will close this ticket so we'll go over here and I'm going to go here and I want to merge and Pull and confirm now we could just close it but
I don't think that's the same thing so I'm going to go over to our issue and I think our issue's now been closed so it was closed when we closed that pull request another thing we we should check is is using keywords there's something called keywords issues I think could also be in PRS GitHub using keywords in issues and polar request suggesting that it could be used for either or so to link a poll request to an issue show the fix automatically closes when someone merges the poll request type one of the following keywords followed
by a a reference issue so close the issue when someone merges the poll request okay so that's something we could try doing when someone merges the poll request so what I'm going to do is I'm going to reopen this issue and um by the way just because we have a pull request doesn't mean we can't you uh push to It Again by like you can use a p request and push well we'll talk about that when we get in the pull request section I don't want to confuse anybody here so I'm going to go back
over to uh here I'm going to switch back to number test and we're going to go into get crash course and we're going to go into hello we're going to edit uh I guess it's already here can we just edit it right there no edit another exclamation mark commit the changes commit it good we're going to go over to PLL request make a new pull request and uh keep it real simple we want to go to the keeping the same repo and we want this to be number test we'll create that pull request and I
mean I want this to close but it says when we merge here it says to link a request to an issue show that the fixes in progress or automatically closes the issue when someone merges so I'm going to say fixes I and we're going to put a pound here this will be cool issue that's our new one and I want to see if that links it in any weird way it's not weird but in some way so I'm going to go back over to my issues we'll take a look here and notice it says link
a poll request now that will close this issue so you know it was saying that it had to be at the time of merge but did does it really because it looks like it just has to be somewhere in the comment here to link it so links pull request to issue but not the other way around right so it has to be in in that uh Direction okay um so I think that's really important to note the other thing is that the exam will probably ask you to remember these words notice we have close fix
resolve close fix resolve if you can remember that then you'll be able to pick it out in a list because they might show like just closes and then fixed and then resolves and try to mess with your mind uh but understand those three there but hopefully that gives you a little bit more uh information about issues um very obvious things you can assign people to an issue you can apply labels to an issue if you want you can uh associate to a project you can associate to a milestone and we saw that it can be
part of a branch and a pull request um all pretty clear stuff we can pin issues I'm sure we'll talk about that later on but if I pin it it will then go to the top here if I go back over to my issues here it is a few other things things um is the the Sorting stuff here you really should know how to filter uh filter with some of these options here and I'm going to just tell you on the exam they they said Hey how do you filter issues like what options do you
have to filter and they gave you a list and you had to pick from them I really didn't like that thought it was kind of a dirty question but that was something you might have to answer you might have to know this query language a little bit so just understand that those might show up on the exam but definitely linking is something that we show in the exam for sure um and creating a branch okay so hopefully that gives you a better idea of issues there all right [Music] ciao so something you can do is
you can create um a branch from an issue and or you can associate an issue to a branch uh what you can do is you can go ahead and create a branch on your issue then it will allow you to uh name the branch notice that it's going to have the number of the issue in front of it which is a common convention when making feature branches so people know what issues or ticket it goes back to this is not just with GitHub this is with any project tracker that has to do with code a
common workflow is creating feature or bug uh branches but Define your issues up front and then you quickly create those branches and that way you don't forget to make those branches creates great habits so you define the feature bug then you go ahead and you make the branch there you go [Music] hey this is Angie Brown and this fall along I want to create a uh Branch from an issue we've probably done it before but let's do it again because maybe we'll learn something different if we do it slightly different um and it seems to
be a very important topic for the exam so we do have this issue from before I'm just going to go ahead and close this as this one is uh done and I'm going to go back up here and we'll make a new issue we'll call this issue cooler issue issue right cooler issue and what I want to do is I want to create a branch so what's interesting is you can link a branch you can link a branch or a pull request I think we've created a branch this way but we've never uh done it
the other way so let's just go ahead and create a branch and you can see that's pretty straightforward I don't think that's super exciting um notice that the branch has to be one of the branches you have here uh so sorry I guess you could actually associate to an existing Branch so um repository destination change Branch Source oh sorry what you're branching from okay that's what that's for but yeah we can create a branch there pretty straightforward uh but let's do this the other way we're going to go ahead and create the branch first and
then connect an issue to it so I'm going to go here and I'm going to say new super cool Branch super cool and we'll go ahead and do that we'll go ahead and create our issue this will be whoops this will be our super cool issue right and I'll just put cool in here that's emojis that's how you use them and uh what we can do here is then click here and it says link Branch or poll request most times we've been doing this with poll requests but we'll do this with um uh a branch
now and so look at the icon that tells you what it is so these are um these blue ones I I pretend like I know these blue ones are our um branches these purple ones are our pull requests and this green one here is I have no idea is that another issue can you link issues to other issues can you no that's not that that is so that's something what is that is it like an old one no I know we made that what is it number test number test what is that okay we should
find well what that is we'll go here and so now we've applied a branch the other direction okay but uh I really want to know what that number testing is it's another Branch okay so then why was it colored differently that's what I want to know maybe it was a branch maybe it's a branch that's been merged in before that's probably why so that's probably what they're doing so they're both branches it's just that branch has already been merged again so you'd be using an Old Branch that You' that you've already done I think that's
what they're trying to indicate there they don't really like tell you about these uh icons anywhere if they are in the documentation they are super hidden but I want to go back here and take a look see now this one's blue this one's blue yeah so these ones I think are ones that have been um number test green so green is it's already been merged in you can see the icon it shows that it looks like it's been merged in and it shows that it's a branch so this is actually a uh a branch that
has been merged okay but uh yeah hopefully we learned something new or we got a bit extra practice and I'll see you in the next one okay [Music] ciao so with search and filters you can quickly sort through a lot of your issues there's a bunch of predefined ones that are there or you can use a syntax language uh called the advanced search syntax and roll up to find uh something more advanced the exam at least for me absolutely asked me both the syntax and the predefined filters um and specifically they use the filter names
that were here so um with those but there's also sorting right so I'm not showing that here but they I also got an exam question asking me about what you could sort by uh but uh yeah you definitely need to know all those three things and we'll take a close closer look on maybe a bigger repo so that we can get some practice [Music] okay hey it's Andrew Brown and this fall along we're going to look at how to search and filter issues so I'm going to make my way over to rails because they should
have a lot of issues 49 455 that's not a small amount and let's take a look at what we can filter by so we have open issues and pull requests so we can do that we have your issues so things that your assigned to we have your pull requests which I'm confused why oh you know what it is it's flipping between the two things so it's suggesting that these interfaces are the same I didn't even notice that okay so your pro request notice we change tabs we go back to your issues over here we have
everything assigned to you and then everything you're mentioned in okay so assigned mentioned the ones you opened and then things that are open for po requester issues it's weird that like they have this one join but this one's separate I have no idea why um another thing that we should make note of is these filters here because they might say hey are you able to filter based on Project hey are you able to filter based on aign or sort or filter so these are basically um these are broad filters and then these are um very
specific filters like very very specific and then we have our sort over here where we can sort some stuff but yeah you'll need to know this stuff uh this and the advanced search syntax so I I have some written out here we can play around with it a bit and see what we can do so let's see what we can do we can say is issue and that seems to be a thing so we'll go ahead and hit enter there so yes it's an issue um we could say no assigning okay so nobody's assigned to
it we could put label active support so we're filtering based on this one here let's see if that works cool and I wonder if we could do like some generic text search um so maybe we could just say replace on the end here and notice that it's picking up I think that like let's try caches caches okay so we're kind of getting that it might be the contents of it but it is trying to search for it we could also say something like there's zero comments so let's say comments zero so those ones have zero
comments and so that gives you an idea of how uh that works um so you know hopefully that is pretty straightforward but yeah the filters is the same for pull requests and issues um and you know if there's more to it we could click here and you can read through all the options uh but for the most part you can pretty much figure it out and guess based on what kind of options you have over here that you could filter by but you'll see you in the next one okay ciao [Music] so issue templates are
markdown templates that are pre-loaded for new issues they help ensure users creating issues provide all relevant and expected information and if the exam if want to use the exam language there was a exam question that says you can coarse terrible word but cerse people into writing what you want them to write so here is an example it's a markdown template that's all it's really doing is loading in that markdown template and the idea is that they you can have different issue templates so a new category will appear here of issue and then people open it
up from there some of these are kind of linked to stuff so like that report to vulnerability is not necessarily an issue template um but bug report and feature request are but they're like built-in ones I should point out that on the exam they'll probably ask you what are the three default ones and these are the three so you should remember report bug or bug report feature request and uh report security vulnerability because now that they remembering it they def definitely asked me that um you create issue templates here in that folder so you make
a folder called issue templates all in caps and you put them in there originally used to just have one called issue template. MD some older projects still have that but everything goes in that folder and we're going to find out that issue forms also go in there as well which is the beta replacement for this feature that I never could get working um G GitHub has a wizard guy to easily create issue templates so you don't really have to write um uh markdown there but uh it will spit out markdown but we'll take a look
at what that looks like uh since I haven't used it in a while but we'll find out here shortly [Music] okay let's take a look at issue forms this is the evolution of issue templates and it uses a yaml formatted file to create issue forms for stricter entry for issue information as the time of this video this is a beta feature so it might go away what's odd is that they want to include it in the exam so beta features can can appear in uh GitHub certifications which I disagree with but that's what they're doing
and so here is an example of the template I don't think they'll ask you the format of the template um like GitHub actions they'll definitely do but not for issue forms because it's so new and that's kind of a visualization of what that would look like so there you [Music] go hey this is angrew brown and this fall along we're going to take a look at issue templates and we'll try to do issue forms I never got working the first time I tried it but maybe it'll work this time around let's go take uh uh
a peek and see who would might have some existing uh issue templates I know rails does but the thing is rails is such an old um or mature product that they've had this template this issues template file in here forever and they don't have it in the uh the place where you expect it to be so it would be in the dock GitHub folder but it's right here they don't have a a um a folder of them so this is actually the old way so they say you're using an old version of issue template use
the new way of doing it so that's not recommended anymore okay but um maybe a better project might be like Forum uh if forum's still around and kick in because I feel like they would utilize this if we go over to our issues let's say we want to make a new issue we have um this one this one looks like a template okay so maybe this is a template that they're using and we have that format there and we might just steal this so we can save some time later on so I'm going to leave
this tab open I just don't feel like making a new one and if we go over to their code let's take a look and see what they have in their GitHub folder and in here they have issue template and there it is they also have a config AML so there's a little bit more going on there than than I thought um is that is this the new style that looks like an issue for I think that's an issue form okay well maybe we'll grab both of theirs and see if we can get these both to
work but I didn't see that when we opened an issue let's go back here and take a look new issue um I don't see it so I'm not 100% sure on that but if it's a yaml file then that's what it should be unless that's something else and I'm just maybe it's something else I don't know so anyway let's go ahead and do that for our own repo so I'm going to go here into GitHub GitHub examples and I'm going to actually open this up in GitHub Dev I can do that by hitting the period
by the way if you hit comma it doesn't do anything um just going to try that I don't know I'm just convinced maybe a comma does something it doesn't do anything we'll hit period and that's going to open up here and I want to go onto the left hand side and we're going to make a new folder here we're going to call this dog ignore or sorry dog ignore doget Hub that's a file that's not a folder let's try that again we'll say new folder. GitHub and then inside of that we'll make a new folder
called it issue template is that what it's supposed to be called issue template yes yeah and then I'll make a new one in here and we'll say um I'm trying to think of something secret we'll call this secret MD and I mean I said I was going to copy this I guess we don't really need to we just make our own and I'm just going to put anything in here so just say welcome to the secret uh submissions submit to Secrets okay I don't know if that's a thing I'm just going to put cool here
I think that should render out because that's uh that's something there and I'm going to go ahead and add this commit or add issue template go ahead and commit and pull good I want to go back to this repo I'll open another tab here and if I go open an issue do we have it it didn't show us uh options must have done something wrong let's go back here do GitHub issue template do GitHub issue template I made an MD file yeah I don't understand it looks right to me okay so we'll go back over
here maybe we got something wrong that's okay and we'll rename this I mean I don't think so secret. MD what if we um refresh the page I'm just going to do a hard refresh here I just don't trust it new issue R up to any issue templates okay let's go to our settings well hold on is this repo private or public because that could matter this is a um oh this is a private repo I think you cannot change the visibility of this Fork is this public or private no it's it's public oh I'm um
I've added this here this is my Fork yeah it is here but it's not showing up here maybe it only works if it's on the the main one so what I'm going to do is I'm going to make a pull request and uh we're going to just create a new one and uh update and just say update here going create that one and maybe that's going to resolve our issue I don't want to get confused no we only have one pull request and we'll go over to this one I think it's because it's a fork
and so maybe it only works on the the top level one and we'll go ahead and we'll just merge this P request and now we'll take a look and see what happens so we'll go to Issues new new issue no it's not showing us anything it's a public repo it's in the right folder what else does it want from me let's go here um yeah what could I be doing wrong that is a good question is because this is not a community project okay issue templates not working this is a legacy workflow to create issue
templates we recommend using the upgraded issue template Builder okay if you use a legacy workflow to manually do that well let's click on that create an issue template you can create an issue template as an issue template subdirectory uh in any of the supported folders to contain multiple issues so it can be in multiple folders okay do GitHub I swear I've done this before to make it issue template visible in the repository do this commit the [Music] changes I'm like going crazy here because I definitely I made it um and use the template query parameter
to specify the template that will fill the issue body okay do we need maybe a um a like maybe we need a yaml file let's go back over to form I don't think so do we need some front matter maybe in the yeah that might be something we need in the in the file here yeah okay you know what we're missing we're just missing some front matter that's what it is that's what it is okay so I'm going to go back over to this one I guess and what we need is some front matter in
here and that's why it's not working front matter is um is this it can go into yaml files I think or maybe not markdown files and this is like yaml stuff you put the top here so just just say secret secret uh secret issue submits a secret um and I think the idea here is you can automatically assign labels so maybe we have like a secret label we'll have to make a label for that because we don't have one uh want to go back to oh let's use that command I'm going to do control K
there we go I love this and I'm going to type in um examples just like a fast way to navigate to stuff I got remember to do that more um and we want to make a new label over here I'm going to call this one secret I'm on the wrong repo control K I'm G to try this again example I want mine why is it only showing this one all right well I guess that feature is not as great as I thought it was we'll go over here and I'll go to issues and then I'll
go to labels and I'll add a new one called secret and choose something crazy maybe that okay so there's our new secret I don't need any signies we'll leave that blank we'll save that update issue template commit and push we'll go back over here and now we go to issues and we say new issue there we go now what's interesting is that we weren't getting those three default ones which I'm really surprised if we go to edit templates okay they go there but they usually have like a builder I remember them having a builder before
and I don't know where it is now so that's really interesting well we can go back to the other one like this works I'm sure this works we fill it in there it is what I'm surprised is we don't have those three default ones there and I know again on the exam they showed that and I could have swore that they would have set you up with that but maybe it only happens if this is a community project which again I'm not even sure how to uh set that up um I kind of forget so
place to set community project Community project yeah I'm not sure um insights Community oh here it is to enable discussions uh enable discussions to unlock Community insights okay sure we'll enable that I don't really want to enable that right now but maybe that's what would bring those issues in later we can go check I'm just again I just want to see why I can't see those default ones and we'll go here and we'll go back to this repo uh GitHub examples and well first I just want to open an issue over here no templates fine
let's go over to community again issue templates add what if we click it here okay so this is where the Builder is it's weird that um it didn't show another place okay so here's some a couple of the default ones so we can go here and do this and then there's custom template so maybe these are the three ones because I said the other one was like vulnerability one but maybe it's these three because it was trying to ask you like what were the default ones that were there so I think maybe I was wrong
in that slide and it's really custom template we'll go ahead and we'll just propose those changes and say continue and now if we go over to issues all right that looks fine I wonder have a little icon there maybe there's some way to do that now we can edit the templates over here not really though I thought we could do a little bit more there but we now have uh those in here secrets in here as well but of course this one doesn't have a front matter that's why it's not working we're going to go
back and switch over to our old one here and um what I want to do is I want to try to get that issue form work because I've never gotten one of those working before so I'm going to look up issue form and I want to just give it another go on GitHub here issue form I'm just looking for an example one so here's an example of one I'm going to grab this whole one here I'll copy it I'm going to go back over to here and I'm going to make a new one we'll just
call this one extra MD it's actually yaml okay we'll paste this in we'll save it and we'll just say extra bug report at the top so it can distinguish it from the other one and we'll go ahead and Commit This try and add an issue form like I like the idea of issue forms but uh you know again beta feature so why why is it in the exam um and we'll see if we can get this to work this was committed on this one here so I'm going to go back over to uh this one
come on let me I have like a my my mouse is sticking that's why I'm getting a double click okay and actually I'm in the count that I want to be I'm just trying to get to that repo again so click over here and we'll go back into ours and now we'll go to issues and I want to see if that other one shows up it does okay finally and now we actually have those fields so that's pretty nice um before I had like the hardest time getting this to work but now it's working no
problem so I think that covers it for issue forms and issue templates and I will see you in the next one [Music] ciao so for GitHub issues you're able to pin them and you can pin up to three once you pin them they show up the top and it makes it really easy uh to find the most important issues that's pretty much it okay hey this is Angie Brown and we are taking a look at poll requests often abbreviated as PR and you'll see that a lot it's very common uh is a formal process to
put forth changes that can be manually or automatically reviewed before it's accepted into your base Branch your main branch here so here are pull requests in GitHub and the benefits of pull requests is collaboration review or collaborative review so enhances code quality through team discussions and peer feedback chck it it tracks changes says change tracking but tracks changes provides a record of code changes and related discussions automated testing enables integration with tools for automated checks and tests controlled integration manages safe and reviewed merging of code changes open source friendly simplifies contributions and collaboration in open
source projects I want to point out the poor request is not necessarily A git feature but a a workflow and GitHub has built a bunch of features around pull requests pull requests aren't unique to GitHub um it's just part of the workflow and and whatever they want to build around it they can build around it and that has to do with other tools that do this like Jura and bit bucket or whatever other tools like gitlab and stuff [Music] okay so we can create pull requests using the GitHub CLI uh that's one really cool way
of doing it the other way is using uh the GitHub website so you go to the pull request Tab and your repo you create a new pull request and there it is I'm sure you know by now how to create a pull request because it's almost impossible not to show you that a 100 times over before we got to P requests here but that's how you create them one thing I want to point out is um uh that we have to set a base this is who we're going to merge into and ahead who uh
the changes that we're going to pull into notice it says compare and we'll talk about that in the next slide about base and compare okay so base and compare determines the direction of the merge for a pull request and the idea is we have the base so is who you want to merge into this is usually the main branch or an environment specific Branch doesn't have to be main but usually main is base right um then we have compare this is what will be merg into base uh compare is choosing the head reference so notes
before I called it head and if you look very closely it says choose the head reference so that's what compare is is this is usually a bug or feature Branch another thing that I need to point out is that you can compare across Forks uh this is useful if you're trying to contribute to an open source project so you're going to have the option to Cho the base uh repository um and the HUD repository to different uh repos from different owners so there you [Music] go so a draft pull request on GitHub is a feature
that allows you to open a requests but Mark it as a work in progress uh the use cases for draft pull requests would be indicating work in progress so communicates the pull request is not ready for review or merging preventing premature merging ensures incomplete work is not accidentally merged facilitating early feedback and collaboration so people can talk about it continuous integration testing so maybe you want to just run uh a test code because when you have a pull request it's automatically going to start doing that transitioning to a ready state so easily switch from a
draft to a ready for final review and merging organizing work in priorities help in managing and tracking ongoing work in large projects um draft requests draft pull request is a feature only for GitHub organization teams I believe you can use it in the uh free um free organizations that are public so we'll take a look and see if that's even possible uh if if I don't make a video then you know that it wasn't um there are two things you need to remember for this for the exam uh draft P requests cannot be merged code
owners are not automatically requested to review draft pull requests okay so remember those two things because they will show up on your exam [Music] ciao hey this is Andrew Brown and in this fall along I want to take a look and see if we are able to open up a draft PLL request in our GitHub organization free account that we created so what I'm going to do is make a new repo because we're going to need to need we're going to need to have one in our um our one here and actually you know what
I'm going to do no no no I'm just going to uh I don't want to make it too complicated I'm just going to make a new repost so just say uh like fun repo we'll say fun repo okay and this can be public we're going to make it public so just in case we need to have that so we can have that functionality because a lot of times public allows us to have um that paid functionality for free so what I want to do is take a look here and create a new pull request and
see if we have the option we don't have any code so we'll need to create ourselves a new Branch I'm going to just do that in here in the UI and we'll just say uh Dev and we'll create that branch and then from here we'll go over and I want to switch over to Dev and then I want to edit the read me here and I'm just going to put in some exclamation marks we're going to commit that change looks good to me and then we're going to make our way over to pull request and
we'll make a new pull request and what I want to know is if I can make a draft pull request so we'll say create new pull request and we'll drop this down and there it is okay so that's all it takes to create a draft pull request if there are code owners assigned they can't touch it noce I cannot merge it I'm clicking like a maniac it's not going to happen and that is draft pull requests so there you [Music] go let's talking about linking activity within a poll request so you can link issues to
a poll request so that the state of the poll request will automatically close the issue we actually already did this before we looked at issues during we looked at issues and we're looking at it again so the idea is that you go up to development on that Cog and you choose um the issue or sorry the PLL request and then they're linked okay so that will close it the other way is via those supported keywords so if you have any of those words you put in the comment of the actual poll request um then that
will close it it says the poll request EST must be on the default Branch okay the poll poll request must be on the default Branch for it to work I don't know if that's true I mean it worked for me when we did it but um however we did I guess it was on the default Branch but um uh anyway that's that I don't think there's any point of us showing this again because we've done it so many times but hopefully you know that you can do that and the direction to which it happens you're
putting it in the uh body the description of the poll request um so it links to the issue okay [Music] ciao let us take a look here at the different statuses a poll request can be surprisingly this isn't an exam question but it's something you should know so let's go through them all the first is open the default status when a pull request is created it's open for discussion review draft indicates the P request is a work in progress and not ready for review close the P request has been closed without being merged this status
is used when the proposed changes are no longer needed or the branch has been rejected merged the pull request changes has been merged into the target Branch the status indicates a successful conclusion of the pull request process change is requested this status is used during the review process when a reviewer request changes before the poll request can be merged review required indicates that the poll request requires a review before it can be merged this status is common in repos where reviews are mandatory part of the work flow approved the pull request has been reviewed and
approved for merging by the required number of VI of reviewers conflict indicates that there are conflicts between the PLL request branch and the target branch that needs to be res resolved before merging ready for review a poll request initially marked as draft can be changed to this status once it's ready for review so that gives you an idea of the functionality of it and you kind of figure this out as you are working with PO requests but there you go [Music] so commenting in pull requests which is basically saying reviewing in pull requests because comments
really do link up to reviewing but the idea is that uh you can um make a comment and in particular you can have it so that it is reviewing changes so when you are reviewing changes a review change a review can be a comment it can be an approval it can be request changes which has a comment attached to it so hopefully that is clear um that when you're doing P requests a comment is a review in sense okay it's submits General feedback without explicitly approval okay um another thing I need to note is that
you can uh Mark comments on specific lines of code that could require a review to begin so there could be one where you're just saying something about the code or you could literally be saying hey you have to do something about this before we'll accept it [Music] okay so the code owners file is a GitHub specific file that defines individuals or teams that are responsible for specific code in a repo and so the idea is that they have the syntax that's similar to get ignore and when a polar request is open that modifies any files
matching a pattern in the code owner's file get help automatically re request a review from the specified code owner the code owner files go in either the root project root. GitHub folder or doc directory um and so yeah I think this is something that is a paid feature it probably could be in free if we're talking about um organizations teams or sorry like free organizations that have to take a look but yeah it is a very powerful feature [Music] okay so when you're merging a poll request there are a few options so we have this
drop down where we can either create a merge this will bring all commits over into the repo we have squash emerge which will have one commit to be added we have rebase emerge which will be added it and then do a rebase the third one is a more complex one so if you're not familiar with rebase you're probably going to be looking towards squash which is a good one uh the use case depends on your team's workflow they may prefer only a single commit uh added and so that's why you would want to have squash
or rebase um but you do have a lot of options there for how you want to bring code in uh to your uh your base um your base [Music] there required reviewer is a way for you to explicitly say hey these people have to review this code otherwise it won't be accepted um and so you can assign or allow multiple required reviewers before code uh gets into a repo and a lot of times you can say it can't be the same person uh that submitted the code and it's not uncommon to have like four or
five people that can be required reviewers and two or three have to um look it over before it gets accepted so here um I would be assigning myself and saying okay Omen King this this user has to um review the code and then from there as that user I would have to approve the changes and then from there it would change it to saying okay Omen king or angre brown approve the changes and so now you'll be able to press that merge button okay so there you [Music] go hey this is angrew brown in this
video I want to uh do a little bit more with polar requests terms of code reviews and maybe we could try to get that code owners file to work or um you know just things that we didn't get a chance to really get Hands-On with as we have made PLL requests quite a bit but not from a reviewing kind of code proper way so what I want to do is I want to make my way over to our um uh our pretend organization and we're going to go ahead and create ourselves a new repo unless
we already have one like the fun repo does that still exist it does so what will we'll do is go ahead and use this one and what I want to do before we do anything else is I want to add um or make sure that the collaborator is added uh to this repo here and so I'm going to go ahead and add Omen King okay and there I am and I'm going to go ahead and say this person can maintain this repo all right and now they're part of this repo so they're there and the
reason I was able to add that very quickly was because they were already part of a team so or sorry that they're already part of our organization so I didn't have to send an invite and confirm they're not external from that so that was very easy um the next thing I want to do is I want to go through and uh create a pull request it looks like we already have one here so if we already have one I'm not going to make a new one if you have to you make a new one but
here it says this poll request oh this is that draft one right so we can't do anything with this one right now uh so I'm just going to close that poll request I'm going to go over here a poll request I'm going to try to make a new poll request because we still might have yes we do from earlier and I'm going to go ahead and create that pull request okay and so we'll create that one and I want to say that this has to be reviewed by Omen King as soon as I do that
notice we cannot proceed forward until that's uh ready there's another thing here that says ready for review so this pull request is still a work in progress so it's suggesting that this is a draft I guess I didn't notice but um it probably was still set to draft and so I ready for review okay so now uh Omen King should know that they need to approve it for this to work okay another thing that we could do is we could uh um require other things for approval so we could go ahead and add a Rule
and Rule sets allow us to do that so there might be some things in here that we could set um require status checks to pass so that might be something that we might want to do and right now we don't actually have any status checks and so that's the reason why we can't we can't add that there so if I go back okay it would be nice to get some checks in here because that's the real value of pull request is having some kind of automation thing in here but I suppose we'd have to have
like GitHub actions or something else so maybe we'll leave that for when we get to GitHub actions and integrate it there and we'll just continue on with the reviewers here so um I'm going to switch to my other account and I'm in this uh repon and saying oh I need to add a review so I can go here and let's say I don't like this change I'm G to go here and say request changes I don't like it make it better and so if I do this okay now it's saying in red hey you got
to do something I you like it's not allowed to go through um and by the way it show it still shows merge pull request and I really don't want this to show up unless I've accepted it so maybe there's a setting that we can do in here I thought it would been that rule set that we could do that maybe there's something else that we can do to protect it always suggest updating the pull request branch no operation options I might not be able to do it because I'm not the admin so I'm going to
go back and switch over to this I'll go back to settings and what I'm looking for is the option to say that it requires uh reviewers or otherwise it cannot be merged um and so that's what I'm looking for right now maybe it's under uh rules could be Branch protection as well let's take a look here require a pull request before merging um I really thought that there would have been a rule for this the reason I think that is because I'm used to um I'm used to uh using jira and and bit bucket and
and they'll let you do that so maybe I can't set that I'm not sure restrict creation yeah so I'm really surprised I can't find that maybe it's there but I can't find it and that's totally fine let's go ahead and pretend uh you know we're going to go fix this issue so we go here and it says I don't like it make it better so how can we um submit that fix right and the way we're going to do that is we'll actually have to go to this branch and change something so we'll go here
and make sure we're in the correct branch and in here I'm just going to go ahead and change it again okay commit the change commit and so now if we go back to the poll request we should be able to up update this poll request so I'm trying to do that here FSE changed normally what happens like and again it's because I'm thinking of jur and ATL scene is that you'd open another pull request and it would be the same one the same spot so I'm not sure if we can do that uh if I
go Dev here because it's the same Branch right so if I do this it says view pull request how do I do this um and again it's because I'm expecting it to act like uh another piece of software and it's not doing what I think it's doing review changes I mean I could review my own that makes no sense review in code space so I guess the way it's going to work I really thought there'd be a back and forth there but I guess there's not is I suppose I would just have to go here
and then approve it looks great okay so yeah I guess there's less process there than I thought and now that I'm happy with it I can go ahead and merge it so next question is can we make a code owner file and see how that works because I think that would be kind of unique to do sorry and so I believe that file is called code owners and uh what I'm going to do so I'm going to go ahead and create myself a new file here we'll say new file I'm going to say code owners
and I'm just going to put an ason here and just say omen King and so the idea is that anytime anything changes it should assign it to Omen king that's what I'm thinking anyway so what we'll do is we'll go ahead and commit to these changes and we'll do this again okay and the idea is that if anything changes from that other person they they send a poll request I'm hoping that it's going to Auto assign now this might not work because it might be only a paid feature I don't know but we're going to
try anyway so I'm going to go in the de branch and before I do anything I'm actually going to merge it the other way um I'm going to do that by opening up uh code spaces on dev and I'm just going to merge it back in into the direction because I'm not going to make a p request that goes in the opposite direction I'm not going to do that that doesn't make sense P requests are supposed to go into your main branch right so I'm just giving this a moment here and what I want to
do is do get whoops get merge main I'll do get pull I'll do get check out main get pull just in case we'll say get check out main get merge main get push saying it's all up to date I'm not sure if I I'm convinced so I'm going to double check uh it's not showing our tree here so let's say get graph I really wish it would persist changes but hey it's code spaces and I'll go back over to here do I have this now and show it shows that uh Maine is ahead of death
so it's totally lying to me they're definitely not in sync I knew this was not the case oh you know what I merged when I was in main so that's probably why uh get check out um Dev get merge main it's always great to have this open so we can see I'm going to go sync those changes okay just in case that didn't I can just get push just in case great that is in good shape I want to stop this environment stop good we're stopping it okay I'll go ahead and close that Tab out
so now I have confidence that this code owners is in both I I just had a feeling I need to do that for some reason going to go ahead and just change this and we'll do that I'm going to go ahead and create a new pull request and I want to see whether it auto assigns we go here Dev create a pull request and look it auto assigned it so it says awaiting request a review from Omen Kang Omen Kang is a code owner Omen Kang will be requested when this pull request is created so
that means the code owner file is working I don't need to create this pull request to know that and I think that's sufficient um the only last thing I would say is that you know people can comment directly on specific lines just remember that because they might ask you on the exam and that's about it we'll see you in the next one okay [Music] ciao hey everyone this is angrew brown and this fall along I want to show you uh some of the more advanced options for poll requests um in terms of the merge options
and why you'd use one over the other um so what I'm going to do is I'm going to go into our GitHub examples and in this case we do need to open up uh some kind of editor I think we could get away with using it on my keyboard and that's going to open up the editor we're still going to need the repo open so I'm going to go here and wait for this to load and go to repo and so I I'm going to want to go over here for a moment I'm going to
get rid of this um pull request so we're not getting mixed up and um I really want to be on development and I actually don't even know if I'm on that so I'm actually going to just close this stuff out I might have mucked this up and we'll close this out because I need to be on the correct Branch for this to work work and I mean we can do this and get up examples I'm going to do this in our other repo sorry I know I'm all over the place but I want to go
back to our home and I want to go to our cool repo so I'm going to drop down our whoops our option here and I'm not sure why they don't never show those on the right hand side they really should we'll go here and I'm going to now um open po request and a new tab here and I'm going to go ahead and hit period and the reason why actually you know what we can't use uh GitHub Dev sorry we're going to have to open up code spaces because what I need is that visualization tool
so we can see what we're doing so I'm going to go ahead and open up GitHub Cod spaces and we're going to have to wait a little while for this to start up unless it's already running that'd be really nice and I'll be back here in just a second when it loads okay all right so now that is ready um we want to make this a little bit easier to look at so I'm going to switch my theme as per usual we'll go to a darker theme there we go and um the other thing that
I want to do here is I want to switch out to the dev Branch so say get check out Dev okay and another thing we're going to need is a tree so I'm going to go ahead and go to extensions here we'll say get graph because we need to make this really clear what's going on uh so I'm going to go here and install this okay and hopefully that installs nice and quick is it here not yet come on get graph install you can do get graph we want you there we go we want you
here get graph so the idea is that I want to put a bunch of commits here and then we're going to merge them and see what it looks like when we do that and then we'll try a different merge option and we'll see how much cleaner it is uh doing that another way so what I want to do is I want to go ahead and modify this file save it and go get commit hyphen M change one and we're going to do ma to grab all of them in one go and then I want to
get push okay and then we're going to do this again save and I'm going to just do a semicolon so I can just get through this a lot quicker so we'll do that again we'll do that again okay you're getting kind of the idea what's going on here we're kind of crazy people are not going to be happy with all of our commits okay great so now if we go back to our G graph here we got a bunch of changes I guess we should have incremented them it just says 1111 uh we can demend
those like there's a way to rename them I don't really want to deal with that but let's just assume we didn't name it all dumb like that we made 1 2 3 4 5 6 7 or for the next one we'll we'll just name it two so the idea is that what will happen the question is what Willen happen when we merge this in will we end up with one over here or all of these over here and that's what we're going to find out so we'll create a pull request we'll make a new pull
request we will merge Dev to main we'll create that pull request I'm going to switch it back to normal we'll create that pull request we're going to ignore our reviewers we're going to just review it ourself and notice we're on Create and merge commit so we do this and what do we get we go back over to get graph and I'm going to go get fetch because that'll update the graph without pulling anything and now notice that all of these commits um is up here now okay so that is there it didn't squash them all
into one we still have all of the history of them okay so just to make this clear I'm going to just go get checkout main get poll get check out Dev get pull because I want to show you that they're all still there okay oh sorry get merge main get poll and refresh okay and I'll just do a get push for our Dev sorry but what I want to show you is that all of this history is still here it's not gone right it's all still here so hopefully that is clear I know it's not
the best visual but I'm hoping that makes sense what I want to do now is I want to do a um I want to do a squash okay for the branch so I'm going to just make a new Branch get checkout Dev 2 and actually I'm going to do get checkout hyphen B Dev 2 and then we'll do get uh because we want to push this Branch get push you origin de Dev two and so now it's being remotely check uh tracked and I want to do something really similar to what we were doing before
so I'm going to go here and for each one I'm going to remove a line okay we'll save it I'm looking for that one liner there we go and this will just be two this time two and we'll go here save that this will be two and we'll go ahead and save this and this will be two and we'll go ahead and save this and this will be two and we'll go ahead and save this and this will be two all right let's go back to our G graph we have a bunch of this stuff
here let's go over here and make a new pull request this time we're going to Dev 2 and we're going to create that pull request and we're going to say create pull request and this time we're going to say merge pull request squash and merge squash and merge it's bringing all those commits in and now if we go back here and we refresh okay um we're going to refresh here again oh I got to go fetch get fetch that's why we don't see anything here get fetch or refresh and so notice now it doesn't show
like a merge line coming into here what it's done it's taken all of this stuff and it's squashed it into a new commit and has it over here okay so it really depends on what you want do you want to keep all this history or do you want to kind of have this like over here and this has a completely separated commit here um it's really up to you how you want to do it I think this looks a lot cleaner um but this is totally an option as well it's really what you want to
do and I will see you uh in the next one so before I do that I'm just going to stop my workspace all right and see you later ciao poll request templates are similar to issue templates they will populate the poll request text area with the specified markdown template so there it is um I need to point out that uh it's in GitHub requestor template. MD that's what you want to use technically there is a folder called pull request template that you can use but I found that you really couldn't leverage it because there was
no UI to select from it and the only way that you could do that was via this URL you gener with a query string so um I would suggest that you use pull request template MD and not use the folder uh and that's where it kind of feels like it's it's like uh where you have issue templates where they have that older version of it P requests still feel like that old kind of version if that makes sense so there you [Music] go GitHub discussions is a community communication tool for your public or private GitHub
repos and there's a lot lot of features it has it has threaded conversations categorization Community interaction markdown support pin discussions conversation polls discussion voting convers uh conversion to issues notifications searchable uh searchable linkable GitHub integration and I'm certainly sure there is more um you have to turn this on as a feature in your repo a discussion tab will appear in your GitHub repo and you'll have some default categories to begin with so there you go [Music] so when someone creates a discussion in GitHub discussions they need to choose a category and there's a bunch that
already exists for you by default um but you can create your own and it's a powerful feature to have so the idea is that you have these discussion formats and we have these four so we have open discussion this is just free form conversation you have Q&A where you're basically up voting the best answer think of stack Overflow you have announcements only admins can make these posts anyone can reply you have polls so you can uh pull people to see you know things uh categories can be grouped into sections and it's pretty straightforward from there
[Music] okay specifically for the Q&A discussion format you can mark an answer that is the recommended answer regardless of the up boots to help direct which question you think is the most credible this is very similar to stack Overflow so the idea is that as a men or maybe a maintainer I can mark it as the answer and then it will show up as the answer the reason I'm calling this out because it could be an exam question so there you [Music] go we can pin discussions this is similar to issues um and the idea
is uh you can just pin a discussion it shows up at the top of the page and it'll be nice and colorful you can pin for particular categories or for the whole discussions page but it's very straightforward okay for a discussion you can actually convert it into an issue I say convert with quotations because really what you're doing is creating a new issue it's weird they use the language convert in the documentation but clearly when you're adding it right there it's telling you it's just creating an issue it's just going to pre-populate it with the
same content and then it's going to have a soft link it's not like Po request to issues or there's any relationship there it's just a simple link um and a convenient way to help you make uh an issue from a discussion [Music] okay hey this is Andrew Brown and in this follow along I want to take a look at discussions so we have our fund repo in our uh organization account I'm going to go to settings and let's go ahead and enable discussions so we'll go and do that I'm going to go ahead and set
it up based on the default and it has a bunch of cool stuff I'm going to go ahead and hit start discussion and so now if we go over to our discussions we have our first discussion that we've ever posted we have some default categories you can see I can upvote or you know not upvote and then if I want to provide a marked answer I can just hit comment here um oh this one is just uploading it not necessarily has Q&A so let's go ahead and try some of the different discussion formats so I'll
say new discussion and we'll say Q&A I'll say uh what is the best movie ever we'll start a discussion what is it and from there I'll just say Roadhouse okay and so people can uh mark it up or I can mark it as the a correct answer and that shows up like that we could turn this into an issue if we wanted to so I could well first I could pin this discussion and put it at the top so that's another thing so now it'll be at the top of our page here okay but the
other thing that we can do is create this into an issue and now it's an issue there you go we can go back to our discussions um a few other things that we could do we could make a poll so that might be interesting choose the best movie what is the best movie what is the best movie we'll say Roadhouse or Roadhouse 2 Roadhouse 2 is not a good movie we'll go ahead and start that discussion and now we can vote there we go yeah um if you want to see a little bit more with
uh like a full discussion uh GitHub as their own it's called discussion community and so you can see it's a lot more active a lot more fun stuff you can see that I made a post the other day here um about certifications that I was trying to provide provide them feedback they didn't hear me they ignored me but this is all about the certification that you are taking right now as I was trying to describe what I thought was lacking and what could be better um and if you're watching this video and you want to
practice using GitHub discussions can you do me a favor and can you upvote this um because I feel like GitHub should really listen and it's a great opportunity for you to test the feature and then we can see how many people have been using this here so you can come over here and leave a comment and give it an up vote um but yeah that's about it for discussions and I'll see you in the next one okay [Music] ciao so I just want to quickly point out that you can find your notification options in your
profile under notifications and you have some options there about what you are looking at for subscriptions what you're automatically watching or not watching go take a look there again I didn't see the examp am asking any of the stuff but you should really take a look here and see all the options here and we'll probably do that in one of the U uh the follow alongs here [Music] okay for notifications we have some filter options and uh we actually have a filter syntax it looks the same as every other filter syntax we've been looking at
in GitHub so far there are some predefined save filters where you can see that they already have filter syntaxes underneath and if you want you can I think you can create your own yeah you can create your own new filters uh there is the option to group by repository or date again I don't remember the exam ever asking uh this but it's in the exam guide outline so I just wanted to quickly point this out [Music] okay so something you can do is you can mention people in um in comments and so what that will
do is that will get their attention um and by that I mean it'll show up in your inbox uh for the f filters you can go to the mention and quickly find where you have been mentioned and yeah that's pretty much it it's just you mention people and it gets their attention and it'll show up in your notifications in box [Music] okay so the notifications inbox provides a chronological list of notification threads this allows you to keep on top of all subscribe activities with an Associated GitHub repo and that's located at/ notifications um and I
want to point out that there is some other notification views I don't know if these are Legacy views or alternate views but I figured I should cover our bases and look at all of them most of the stuff that I think the exam is going to focus on is probably the inbox but I never got any questions about notifications whatsoever in my exam attempt but if you do um you know let's just make sure we cover our bases here [Music] okay hey this is angrew brown and in this video I want to want to take
a look at the notifications inbox which is in the top right corner it looks like a little inbox you can also get there by probably going to Notifications somewhere I thought it would be here on the leand side or right hand side It Isn't So I guess you really do have to click that inbox to get there that's going to be up here at notifications um this is showing stuff that we're participating in so you'll notice that uh we have um what looks to be poll requests and I guess we can click into there and
get to them right away so you can see that um you know somebody's talking to me here and so I'm getting those uh alerts there and this has to do with all participating stuff so there's not a lot to show here um but we can show mentioning because that's something that I think would be interesting to show so what I'm going to do is go over to my other account and I'm going to go into a repo that we're both in so I'm going to go to Andrew WC Brown um um and there should be
a repo here no that's that's not it I'm part of some organization called Cloud journeyers already forgot what it's called so I have to get the URL from this one here and we'll switch over to cloud journe and I want the fun repo and I'm just going to grab that link go back to the other account and then from here I'll just go into an issue and I'm just going to say um I think so I'll say andrewc brown I think that would be Roadhouse okay maybe we can go get an image roadh house for
fun movie Roadhouse movie there we go oh yeah that's a good that's a good one so I'm just going to drag that off screen here and bring that in here so we got another reason to use uploads for file images and I'll comment that and there we go so now what I'm going to do is go back to that other account and I'm going to go into my inbox and see if I was mentioned what the heck oh there it is okay we just had to be a little bit patient so there it is um
we know we have some other options over here we have what's this I guess approve uh don't get any more alerts for it or save it for later or bookmark it um I guess you should know those options again I didn't see them in the exam in terms of other stuff I'm going to go to my other account to kind of show you a little bit more because it has more information in it but uh of course we can filter stuff so I can say is unread and then we can even click through and do
more stuff like repo is exam Pro you know and then I can click there and it should filter for that we could Group by repository instead right so that makes a a little bit more clear pretty straightforward pretty straightforward um and that's about it okay [Music] C so you can watch a repo in order to get notified of activities uh your own repos are you're going to be set as watching and so you can change the level of participation that you want if it feels like we're repeating this we did because we covered watching prior
we were talking about repos but what we didn't cover was the fact that there's this additional watching page where you can find where everything that you're watching this does not show up on the the notifications inbox so this is a page you're going to want to know in order to keep track of stuff that you're watching so there you [Music] go let's take a look at notification subscriptions and this allows you to follow activities for a specific PLL request or issue so if you go into an issue or you go into a PLL request they
have that notifications area where you can say I'm subscribing and you can see all your subscriptions on your notifications page but more or less the notification inbox is going to take care of that um but what I want you to remember is that watching is for repos it's for people it's for organizations notification subscriptions are for very specific poll requests or issues okay so there you go hey this is angre brown and this fall along I want to take a look at those other screens the watches and the subscription so we can uh see that
alternate View and the easiest way to get there is to go to the Inbox and I can scroll all the way down to the ground and we have the options down below and so if I click into watch repositories I can see all the repos I'm watching and I can see all the subscriptions I belong to and there's not a whole lot to say here this is kind of like an alternate view of um notifications inbox so it's not that super exciting but it is another simplified view we can go take a look at our
notification settings and we didn't really look at this in the lecture slide so I should cover it a bit more here and carefully read it so we have the default notification email so if I want to send that to another email I can do that there's custom routing which allows you to send certain things uh to certain emails I've never played around with it before but it sounds cool we can a automatically watch repositories uh or teams so I imagine if we join a team we're match we're watching it if if we uh create a
repo or own it we're watching it we can choose between email and GitHub okay um notification for conversations you're participating uh in so whether we get a mention if if we should get alerted uh apparently we can customize our email updates so basically what we're going to get in those emails then we can get a weekly digest or not get any emails whatsoever you can get notified about dependabot alerts um notified about GitHub actions and then a deploy key alert so when you're giving admin permissions and org when a new deploy key is add it
so there is your settings and that wraps up [Music] notifications so gists provide a simple way to share code Snippets with others and every gist is a get repo which means that it can be forked and cloned you can get this at just. github.com this is a super useful service I use it all the time time and uh here's an example of a public gist gist can be public or secret public gists are searchable public gists show up in uh in Discovery or discover I should say secret gist are not searchable and do not show
up in Discovery secret gists are not private they are secret but they're not private you can share yours with friends and because that URL could be given to somebody else they could get access to it secret gist can be changed to uh be Public public gist can not be changed to be private you can pin just to your profile for other others to easily find just allow other users to comment just allow you to navigate revisions with ease you need to remember these factoids because the exams will test you on it I got just questions
and one was about like um about knowing how to fork or clone uh and also for the uh the private thing that just secrets are not actually private to create a gist very straightforward uh oh sorry I just want to point out that gists can be also marked down as well they don't necessarily have to be code and that's really nice but to create a gist is very straightforward you name it you provide the file name so knows how to do the syntax highlighting you provide your code you can attach a few files to it
and create a gist I'm going to remind you that and maybe I didn't write it in there but gists are full repos okay so even though they're like single files they're full git repost uh and you can clone them and do a lot of fun stuff with them [Music] okay I was saying that you can fork and clone gists uh and the way you would do that is if you drop down the embed you'll see clone options I don't know why they kind of hide it on you but basically you just clone it like a
regular repo um and for uh just repos other than yours you can just Fork them so those are two things you need to know because they'll probably show up in the exam and I just want to make sure I really call those out to you here [Music] okay hey this is Andrew Brown and in this follow along I want to take a look at gists so gists allow you to create simp it's a code that you can share with other folks so I'm going to go ahead and do just. github.com and I'm just going to
zoom on out here and before we create anything I just want to show you that there isn't all gist page so we can see a bunch of stuff that's already here and maybe we can go take a test and just clone something at random so or not clone but Fork so if we go uh here we can just Fork this and now we can make changes uh to this here and so I'm going to go hit hit edit and I'm going just make some changes and hit update to this and what's cool is that you
have this revisions Tab and it actually shows you what's been changed over time so that's something that I really like is that if you're trying to uh teach somebody something and you need to show that history over time just make for great examples um so I really like that again embed here you can go ahead and clone htps or SSH let's go over here and make a new gist I want to make a private one so I'm going to keep it or sorry not private but secret so I'm going to go ahead and say secret
gist okay and we'll try to make this markdown so just say readme.md I'll say secret gist this is Secret okay and maybe what we'll do is we'll attach our file here I wonder if we can just drag it in yes we can and me I think it added okay oh maybe it's it's in there I'm not I'm not 100% sure but I dragged it in and we'll go ahead and create this secret gist contents can't be empty that's totally fine um I'm not exactly sure okay so you do that [Music] um I thought like you
would drag it in maybe it's very particular in terms of what you can bring in again the exam's not going to test you on that but I'm a bit confused why I can't bring that image in but I'm going to go ahead and create this gist and it is secret if I want to share this with somebody um I would give them the sharable link so there it is new tab there we go right pretty straightforward uh you can pin these to your profiles I think we did that already um so if I go over
to our and you can star just as well right so if you go here you can star just you go your star gists right but um if we go back to github.com I think we already have one pinned from before so if we go to our repositories or sorry not repositories our profile we can see we pinned one earlier so yeah there you go that's just [Music] a Wiki is a collaborative way to quickly create documentation and multiple nested pages and a Wiki would serve as a knowledge base for your repler or your organization wikis
are not unique to GitHub but it's just a functionality that they have uh and so the idea is that you'd have this uh thing that looks like markdown could actually be something else in markdown and you can search it and navigate through pages um to turn on Wiki for a repo you have to check box on Wiki you go to the wiki tab you create your pages GitHub wikis can be used for free on public repos which is how we're going to be able to use them I said that uh it can be other types
of markdown or sorry markup and markdown is the default but there's a bunch here because wikis have existed for a long time and so they've uh really had a lot of different kinds of uh templating languages to link other Pages you provide the GitHub Wiki Pages the title as the link um so that's a little bit different for link and that's one thing you need to know for visibility if you create a Wiki in a public repo the wiki is available to the public if you create a Wiki in a private repo only people with
access to the repo can access the wiki so there you [Music] go hey this is Angie Brown and this follow along we're going to take a look at wikis and so I figured what we can do is go to our um organization and we'll go over into our fun repo and we'll turn that feature on by going to settings and Wiki apparently is already turned on I don't remember turning it on but hey it's on maybe it's on by default and we'll go ahead and create our first new page and this is our homepage so
it's as simple as creating it and we want to create another page this one is going to be called about and I want to link this one to our homepage and so it'll be as simple as putting Square braces parentheses and we'll say homepage and I think the other one is called home page so as long as that is correct that should work um it doesn't look like it linked so maybe it's just called homes I'll try that again and we'll edit this page and we'll save it there we go and that links back there
and so we can see they're both there there's some way to provide structure underneath I'm not sure if that just uses headings so I'm going to go ahead and try this and just say heading one heading two and you know wikis here are not that great um like I remember wikis all the way back in 2005 and yeah they it's providing that structure and you know they would allow you to basically just start writing links and when you click through they create them so definitely not a New Concept um this one's not that great but
it is here and it is free so you can decide whether you want to use it most providers will have some kind of knowledge based thing and that is github's kind of offer but again I don't think a lot of companies like to use this and I've seen a lot of organizations start on here and then abandon it and just take it off of GitHub but uh it is a thing and they want us to cover it so there you [Music] go GitHub Pages allows you to directly host a static website via a GitHub repo
you need to create your public repo with the repo name so uh this would be Omen king. github.io it has to github.io for this to work you simply add your HTML files however you could use jaal which is a static site generator that allows you to build more complex static sites and it it uses yaml files with front matter and markdown files and it directly integrates with GitHub Pages because it is a GitHub project um and your website will be available at the domain name with your username at GitHub do I wrote com it's supposed
to beio so cross that out IO there you [Music] go hey this is Andrew Brown and this follow along I want to go ahead and create ourselves a static website so apparently what we can do is use our username and do github.io and that should allow us to turn this into a static website so what I'm going to do is go ahead initialize a read me and we'll make this a repo public and we'll see if it's as simple as they say it is I'm going to go ahead and add a new file here this
one is going to be an index HTML file so we'll just go ahead and say index HTML and I need a little bit of code here so I'm just going to get a template for an in index HTML page maybe we get one from free Camp I'm going to go ahead and grab this one here I don't need any JavaScript so I'm just going to take that out there we'll give that a preview looks fine to me we'll go ahead and commit those changes commit those changes and so the question is is this a static
website um I don't know let's go ahead and copy this maybe we have to turn it on nope but we can go try to figure it out by going over to here and so I'm carefully looking for that static website hosting I've done it before it's just been a while and yeah uh it's pages over here Pages ah here we go so build and deployment so deploy from a branch that's the classic experience I'm totally fine with that and I'll choose main okay what happened it used to just let you do static Pages let's go
take a look here uhuh create the do that's what I did I followed the instructions on this page and if the repository doesn't match the name exactly it won't it won't work okay Okay uhhuh add an index page okay sure push and you're done well I did all that so I'm going to try this again oh okay it just needed some time to propagate but here looks like we can do a little bit more so if we were to integrate um jaal and deploy it and like integrate it we could deploy that Jackal is pretty
cool um it's a little bit out of scope for this sort of the other thing that's interesting is you could add a custom domain GitHub doesn't seem to really care about GitHub Pages for the exam so um you know it's on here but I I didn't see any questions so this is why it's so so light that we're covering here but uh that's it [Music] okay let's take a look at GitHub actions which is a cicd pipeline directly integrated with GitHub repos and GitHub actions allows you to automate running test Suites building uh IM specifically
Docker images compiling static sites deploying code to servers and more and we can access this all through the actions tab in your GitHub repo uh when you first use GitHub actions there are some templates that you can utilize and all these files are stored in your workflow directory in your GitHub folder as you can see there's this kind of yaml file that we're going to utilize it's going to be important that we remember some of the structure so I remember on the exam they wanted you to know that there was jobs on and steps uh
you can have multiple workflows in a repo triggered by different events so when you run GitHub actions you'll get a history of workflow runs where it will indicate if it was successful or a failure how long it took to run so this is um for something probably for um some for one of the boot camps that we ran as we used GitHub actions to build the site if you want to find the example repos because there are those little getting started but it's the same repo here at the starter workflows and you can get the
yaml files and get started really quickly there are different types of triggers uh that you can use with GitHub actions that's going to go on that on area and GitHub there's about 35 GitHub actions I say plus because in case there are more that I'm not aware of I'm covering my bases there examples of common GitHub actions could be pushes pull requests issues releases schedule events and manual triggers the exam wants you to know that you can trigger based on these things so make sure you remember this short little list here [Music] okay hey this
is angrew brown and this follow let's take a look at GitHub actions so what I want to do is go over to our organization I'm going to go to our fund repo and here we have a tab called actions where we can set up some GitHub actions now I don't use GitHub actions a whole lot maybe I will if I go ahead and do that GitHub action cert uh certification course but uh we'll just have to kind of work our way through it it shouldn't be too hard so there's a lot of different things that
we can utilize here I can set up terraform which is kind of cool uh we have deployment to AWS to Azure to Alibaba Cloud we have some security things that we can do here we have continuous integration automation a whole host of stuff and um you can even do static compilation which is pretty cool as well so we're going to have to make make a decision in terms of something that we want to use um um I don't think it's going to be deployment because that seems like a lot of work um so I'm trying
to make a decision here what we could utilize build lint and test a rails application that seems pretty small or easy for me to do but maybe we should try to use one of these things down below um labels pull requests based on files change let's go ahead and see if we can utilize that so I hit the configure button and it's going to bring us into this action and I guess there's the marketplace where we can get uh more stuff I didn't even realize there was a Marketplace for this looks like we got some
documentation here so customizing when workflow is run based on trigger so here it says on push Branch so when we push to specific ones we can trigger different stuff okay so that's kind of cool let's take a look here and see if we can expand this and see what we're looking at so we have name labeler on pull request Target jobs and then we have labels so run as Ubuntu so probably start a container as an Ubuntu with permissions of contents to read and it can write pull requests and the step that we're going to
have here it's going to use the actions labeler version 4 and with the repo token it's going to bring in that token so it has authorization to do so and we know about GitHub tokens um and I think I think we showed this uh for GitHub actions but not 100% sure so care reading here the whole point of this is to apply labelers and the basically the way it's going to do that is through these steps and so I'm assuming that this is kind of like a built-in step and if we go here and just
type it in maybe we'll go find it yeah and so they're talking about actions here hold on here I guess it's just a repo so I'm get documentation and oh okay it's called actions all right and so this whole repo contains actions all right and so it's coming from this one and so I'm just going to go into here and take a look at what this looks like so just zoom out for a second and it kind of explains maybe how it works um automatically labels new pull requests based on the paths of the files
being changed on the branch the ability to apply labels based on names of branches and things like that the bug related to the issue so create a GitHub la. yaml file this will list a uh a list of labels and config options to match and apply the label all right the match object allows control over the matching options you can specify the label to be applied based on the files that have been changed and Etc like that and sounds a little bit complicated but at least down here it's like showing us uh the flow it's
interesting that this one is showing version four when clearly there is a version five um there might have been warning up here saying that we should use it doesn't say that we have to use version five or four or we're first to use five um but let's see if we can figure this out so I'm going to go ahead and go down below and just look at the workflow a little bit more here and it looks pretty much the same the only difference is that this one's using version five it's not passing the width for
the repo token so I'm not 100% sure if we actually really need to do that but I'm going to go ahead and go commit changes and we'll commit that there okay so now we have that here if we go to actions um we can see that we have labeler and it's only going to run what's going to trigger it let's go take a look here um if we want to know how it triggers we should just take a look at the code and whoops go back here and and take a quick look so it says
pull pull request Target so we pull request Target what does that mean we'll go search it here um pull request Target so activity types assigned assigned labeled runs your workflow when activity on a poll request in the workflows repository occurs when activity on a pull request in the workflow activity Cur so it's going to check on based on a lot of stuff so that's pretty broad but that seems fine looks like we could even narrow it down to very specific types okay so I mean that's is how we could play with triggers um and so
basically when that triggers it's going to go ahead and then start up Ubuntu for some reason maybe that's what it has to use to run this code that we saw from over here okay and this looks like it's JavaScript or something and then we need that labelers file so we need to make sense of what this is so the base match object is defined as this any glob to any file okay the key okay so what does this thing do automatically label new pull request based on the path of the files being changed on uh
changed or the branch name okay well I'd rather just do that on the branch name so let's see if we can find that so it says change files give me a moment just to try to make sense of this and then I'll just save you the trouble of me struggling through it okay okay scrolling on down we're getting better examples this is starting to make more sense it says add an any change label to any changes within the entire repository Okay add documentation label to any changes within the docs folder so maybe what we can
do is give this one a go and uh we need to create a file what's this file need to be called. GitHub labeler yaml so we'll go here and I'm going to add a new file okay um add a file this will be label l. yaml double check make sure that is correct I've been known to make mistakes often and I'm going to paste that on in here and we're going to commit that change so now we have our labeler yaml I'm going to go take a look here and see if the action got triggered
it did um it failed I mean there's nothing for it to check right now so no event triggers defined is on so not exactly sure what it's saying there but that's totally fine for now and what I need to do is I need to create a poll request I mean it shouldn't trigger unless we have a poll request right um but it did just happen now so I'm curious what would happen if I went ahead and just uh made any kind of change because it shouldn't really trigger unless it's a pull request we'll go here
and go back to actions and it ran again so I'm really confused why is this running what it should only happen on a pull request Target um we'll open it up again here so no event trigger defined is on okay maybe there's something wrong with our our workflow file let's see what they say you can trigger all branches just by using remove the hyphen your workflow file seems fine have you checked all indentation so I mean we didn't make that file right it was generated for us let's go take a look and see what we
can do about that we have label and labeler okay so this was the one that we wrote I mean everything looks fine here I'm G to open this up in codes spaces or not codes spaces we'll open this up in bring this down on this line like this and do that um I don't know if we need this so I'm just going to take that out because the other one didn't have it okay can expand this yeah it still has this here and I'm not sure why this little red line is here maybe it's just
superficial it's confused but this seems fine I'm going to go ahead and update this and say update action the other question is do I have this in the right folder because yeah it's an actions but labeler yaml labeler yaml isn't supposed to be in the actions folder so I think what's happening here is that it thinks I think I know what happened here um if we go back to our repo I think it thinks labeler is a an action yeah so I think it's just we put that in the wrong folder so I'm going to
go back and open up github.com it and we will let that push and I'm going to go back over to here all right and if we go back over to actions oh uh this is not the repo we'll go back over to our organization into Fun repo it might have triggered one more time I don't know it has not so we are in good shape can we delete this run yep we can let's just delete this up to clean up so we can see what we're doing and uh what I want to do is I
want to trigger that uh pull request to get automatically labeled so we're going to need a label called documentation for this to work so we're going to go here to labels and we'll make a new label there actually already is one called documentation I don't know this is case sensitive so I'm just going to change it to Capital D so it just works for us and we're going to go over here to code and I need a new Branch so I'm going to go to Dev and in here I'm going to create myself a um
a docs directory so I'm going to make a new folder here and what I'll do is I'll make a new folder we'll call this docs and I'll say readme.md read me okay we'll save that we'll go ahead and Commit This and we're in a branch right yeah we're in a branch so commit we're like new docs Direct and I know I spelled that wrong it's okay nobody's watching here today there's no grading going on if I ever grade you I'll poke you for that but right now it doesn't matter and I think that we made
that in the dev Branch so we'll go over here and I want to go ahead and create a new poll request so want to make sure that folder is there PLL requests new pull request we'll drop down Dev we'll compare that over we'll say create pull request and the idea is that when we create this it should label it if this worked as expected um and so what I want to do is go over to actions and see if it triggered and it's running so it's queued it's going to think what to do it has
to spin up compute so this is an instantaneous in progress good we're watching it label complete success we'll go to our pull request there we go look at that um and now we have a p a check that passed and we overgo to our checks and it shows that it passes so you know before we talked about like Branch rules we could maybe just tell it that it has to pass that before it could proceed not a really good example for this but we could try it and it's just an opportunity to show off this
Branch protection rule stuff so I'm just looking here carefully for where that was uh it was like checks okay and I'm going to drop that down and still doesn't show up here so maybe that doesn't work as expected but I was hoping that maybe I could just choose that from there um because it's not like an upfront check it's like something that happens after you do that but anyway that's get up actions in a nutshell um it is very important that we understand how those files work so before I go I just want to uh
pull up a link because there was something that really explain explained the structure of these files really well it was understanding GitHub actions okay so it's this here learn GitHub actions understanding GitHub actions I think it was this one yeah and so this one really helps explain this workflow file so let's go through it really quickly and make sure we understand it so um first thing is the name so we're going to name it that's optional we have run name so the workflow uh runs the generated from the workflow I guess it's going to be
like the Run name we have on so specify the trigger of this workflow so on triggers events jobs groups together all the jobs that run then we have steps groups together all the steps that run uh in the check bats version notice we didn't have these before runs on configures the run on the latest version of Ubuntu Linux Runner I imagine you could change this to other things uses uses keyword specifies the step that will run uh here and of course we found out those are remote repos so that makes sense um and that's pretty
much it so so steps jobs on remember those three on jobs and steps okay and that's pretty much it so I'll see you in the next one okay [Music] ciao GitHub co-pilot is an AI developer tool that can be used with multiple idees via an extension so here is an example of it autocom completing code for a terminal base uh blackjack game which I asked it to do it can do code completion you can have uh chat conversations in your ID or mobile while you're working on code it is a CLI assistance it does code
referencing public code filter and IP Indemnity I don't know what the last one is but it does it and you can get a free trial with um uh for a one day 30-day trial do you need a credit card I'm not 100% sure but we're going to find out here shortly as we will go and to set it up it is free to use for verified students teachers and maintainers of popular open source [Music] projects all right so let's compare the two versions of uh GitHub co-pilot we have the individuals and the business version of
co-pilot and the reason I'm doing this is because I'm pretty sure I got an exam question about a specific comparison so pay close attention so for pricing co-pilot for individuals is $10 a month or1 for the year for co-pilot business it's 19 uh USD dollars per user per month the types of GitHub accounts would be personal accounts for individuals and then or and Enterprise accounts for co-pilot business for Telemetry you get it for um individuals which I believe that was the exam question that I got asked for business you do not get it um for
Block suggestions matching public code they both get it uh they get both plug uh plug rights into your editor so extensions for both Ides or for both of them for multi-line function suggestions they both get them for organization wide policy management co-pilot business gets that uh excluding specific files co-pilot business gets that for audit logs co-pilot business gets that and then for HTTP proxy support via custom certificates co-pilot business gets that so make sure you know which you can get and which one cannot get those feature sets okay [Music] let's take a quick look on
how we would set up co-pilot and some of its functionality so the first thing we will need to do is install the GitHub copile extension in vs code there are extensions for other different browsers but this is the one that we're going to focus on once you install it you want to trust the workspace and install um sign into GitHub for GitHub co-pilot you're going to authorize GitHub in order to allow access and then you'll have this little co-pilot icon in the bottom right corner when you want to start using it the first thing I
would do is go look at the keyboard shortcuts they do list keyboard shortcuts on their website but I found that um uh the ones that were set for me were completely different I have no idea why so whether you're on Mac or Windows make sure that you know what your settings are at the time I was doing this I was doing this on my Mac and so it's showing Mac like key bindings here uh it's and again it's just a reminder best to check the hot keys because it can be changed to anything and they
didn't seem to match for me um once you have copilot installed you can also enable co-pilot chat feature and this allows you to chat in the le- hand side I found this to be extremely useful and I would recommend turning it on if you can but uh yeah there you go so in this fall along we're going to take a look at installing or setting up and using um GitHub copilot um I have a business version in my uh primary account and this one I'm going to try to set up IND ual um so hopefully
that will go smoothly here um so the first thing we want to do is start using co-pilot and maybe a good idea would be to try to use it in um code spaces because I feel like that's going to be a lot easier and there' be direct integration before we do that I just want to show you something kind of funny about uh GitHub and their branding so they have really decided to call themselves an AI powered developer platform which to me is a little bit silly because they're only AI solution is co-pilot is there
any other ey stuff not that I'm aware of um but it's a really weird rebranding because they are still a g hosting repository but hey they can do what they want to do but I'm just not going to buy it but anyway let's go ahead and open up code spaces and we do have some other ones down here below just going to delete them and we'll just start from scratch here um just delete and delete so we don't have to worry about these other ones here and what I'm going to do is go over to
uh that repo one more time uh over here and we'll go ahead and create ourselves a new code space so we'll just give it a moment to spin up and we'll configure it as per usual all right so our environment or our code space is now running what I'm going to do is go ahead and change the color theme to dark or something that is easier on my eyes and what I'm looking for here is copilot now is it already pre-installed I have no idea we'll go ahead and take a look so we'll type in
GitHub co-pilot and see if we can find it here and there it is so there's a couple things I'm going to want I'm going to want GitHub co-pilot and then we have GitHub co-pilot chat it looks like it grabbed both of them when I did that so I didn't have to do anything extra um so that is going to go ahead and install there and then down below it says extension failed no access to GitHub co-pilot you're currently logged in as Andrew Brown that's true and it says no access sign up so let's go sign
up for GitHub co-pilot and here we have a few options we have the monthly $10 plan or the $100 plan where's my trial so it says pay frequency after trial so you have to pay for it um confirm your payment details and it looks like we'd actually have to fill in payment information so I'm going to save you money here today so that you don't have to spend anything and I'm just going to show you in my other account what it looks like to use uh GitHub cop pilot so you can pass the exam whether
you want to fill the stuff in is up to you um I'm not going to do that I'm already paying for it so I'm not going to pay for it twice and uh you know again my expectation is you don't shouldn't have to pay pay for that either so what I'm going to do is go up to my C command pallet and just go into stop and I want to stop the current code space and I mean we figured that out that that's where we're going to hit that boundary I'm going to switch over to
Omen King and I'm in the same repo and I think I'm part of this so I can open this up in code spaces and we'll go ahead and do the same process and I'll be back here in just a moment when this environment is ready to go all right so our environment is up and as per usual let's change our theme to something that is a little bit easier on the eyes so there we go and we'll proceed and do the same thing as we were doing before so I'm going to type in co-pilot and
that's going to give us co-pilot right here I want the chat to be installed as well but it seems like it knows to pick that up there's also uh copilot co-pilot voice I've never used it it looks like it's in preview so that's kind of interesting but uh not something here for today that we'll be playing around with um and I'm waiting for this to finish its install and it should you know come up and pop up here if it doesn't I can click down here below and it looks like it's ready to go so
I'm not having to do any additional configurations again this other account already has co-pilot activated but while I'm here what I want to do is show you in my settings the co-pilot options so if I go down here below you'll notice here that we have um this feature enabled so because it is a business organization I had to go into that one and turn it on but if it's enabled and I did enable it then I I think that's the reason why I picked it up because the first time I did this it didn't install
that chat and then I had to go into the settings and say turn and enable chat and then now it seems to automatically install so um I think the chat's right over here so that's really good and then down below is we can click this to bring it open let's go take a look at what our keyboard shortcuts are because that's going to really tell us how to use this and so we have control forward slash so accept panel suggestion alt uh Square brace next or previous open completion panels contrl X suggest terminal commands uh
inline trigger so we'll try our best to try to figure this stuff out there's clearly a lot more stuff going on here like explain this and other things like that so I mean explain this might be a really useful one to have or generate docs that seems pretty cool but what we'll do is go ahead and make ourselves a new file and pretend that we are programmers I a programmer but you know we're all pretending we're uh that's fine anyway I don't know where I'm going with that let's go ahead and make a game so
I'm going to go ahead and type in game RB and here it says press to ask GitHub co-pilot to do something so let's go ahead and click that and ask it to generate some code I'll say um create a game Loop for a terminal uh tick tac toe game okay so I'll hit enter and there's a lot of different ways you can interact with it this is like one way you can do it in the chat copy and paste and do other things but it's starting to get this stuff set up uh and the thing
is that this is actually pulling from real repos so it's not like magic it's actually going out and leveraging a lot of public repos which I'm not really happy about but um it does get the job done and so we already have a game generated out here does it start the game for us it looks like it does and so let's go ahead and see if we can play it so I'm going to go ahead and type in Ruby and type in game. RB and hit enter and boom we got a game so enter your
move row and column so I'm going to say it doesn't tell me like whatever I'm going to say one and one so I guess that's Center and is this the second player now so zero and zero and then we have one and uh so one and one what happens there invalid move okay so zero and one and then I'm just trying to purposely lose here so two and two and then zero and three zero and two so there's a few things about this game that's not really good it doesn't tell us the grid numbers it
doesn't have an AI to play against a simple AI um it doesn't tell us um few things there so maybe we can make some improvements uh we can go to the chat and and I think the chat is like aware of our code so it should be able to make some modifications but I really like the fact that we had that little box in place um so looking through this I want to look where the board is being rendered I know Ruby really well so this is really easy for me to read and I'm looking
for puts where does it render the board where are you rendering up here display the board and so method to display the board [Music] game the board should show the coordinates on the uh uh of each cell sure why not and I'm not sure how we would tell it to do that if I select that say modify this code to code to show the coordinates for each cell all right and see what we can do all right and so we'll copy this function we'll paste it on back in here say allow and we'll try this
again we'll see what we get and it's not exactly what I want uh no so say no I want the coordinates on the outside of the board that's board border I me say board there we go that looks like a little bit more of what I want so we'll go ahead and try that okay we'll stop this and so now that makes a lot more sense okay so now I can go 0 0 and I'm I'm less uh confused about which one it is um so that's really good the next thing is I don't want
to be playing against myself I want to have some AI um you know how can I uh can you write a simple Tick Tac to AI for my game code and it's going to do that so it's making a separate function which actually is a good idea and so that's actually what I wanted I wanted an inputed an output this code assumes that you have a game over function um do we have that yeah we do let's go ahead and see if that works but where do we use this function this this code assumes that
you have a game over method that checks if a player has won the game the AI move method first checks if the AI can win the next move if it can it makes the move if it can't it checks the player if there's no winning um so the question is where you know where do I call this function in my code I'm checking to see if it understands the context of it it's loading in game. RB so clearly he's using that file to figure it out so it's saying here you should call the AI move
function in your game Loop um so here it's updated our game Loop um the loop starts up there's a loop here and then this here is all I move so this is our main game Loop I'm just going to bring this on down here so it's less confusing okay and it looks like it's Rewritten it so we have update board I don't have display board in here this code will make the AI play its turn whenever the AI is turned the AI move function will decide the best move and update the board where is the
display board in this Loop is this Loop incomplete could we also put the loop I was complete incomplete because it doesn't look complete to me all right so now it's actually completed it kind of lied but that's fine and so we'll go ahead and just copy this I mean I knew what to do there but that's fine and look it took out the uh while loop so it clearly changed its code let's go ahead and see if that works now um so I'm going to go ahead and do that and another thing that I would
like to know is could it indicate can you indicate who's turn well we'll just play the game and see what happens first so I'm going to say 0 0 it says wrong number of arguments for game over let's go take a look at that I think it was suggesting that game over might be a little bit different so this says board and player and so I'm going to put player in here for a second and I don't see player getting called here um what about the new game over function yeah so it's going to try
to update that you passed player and there's ways of doing uh like co- completion in line I just kind of forget but this is the way I kind of use it so every tools a little bit different I'm sure if I did a uh course on how to use these tools i' would be a lot more thorough about it but I think this is sufficient enough let's see if it takes that okay and we'll say Z 0 wrong number of arguments so you can see like how this can be a little bit finicky to get
something working um you really do need to know what you're looking at it is definitely a very powerful tool um but as you can see you got to keep working through it uh here maybe we'll just do current player I think it's because we still still have one more check here okay 0 0 there we go now it's moving um we'll say one one okay blocked me 02 there we go we'll say one Zer and then one two or 21 sorry 21 and it messes up here at the end I'm not sure why but for
the most part it almost worked this is line 121 so I can go to line 121 and it has an issue updating the board for some [Music] reason so and it's on 114 so I could jump to line 114 here and yeah so maybe it just doesn't really have a way of ending the game gracefully but hey it did code it so that's pretty impressive we didn't really use those hotkeys but again it depends if you're going to be chat driven or if you're going to use the console here we could take a look at
some of those hot keys and just quickly try to use them okay so we'll go back into whoops into our edit settings and whoops hot Keys here there we go control for slash accept a panel suggestion suggest terminal command trigger inline suggestion alt back slash so we'll do alt backlash and see what it does nope it clearly is trying to do something down below I think it did something yeah so I think maybe it's like um code and see it is also trying to autocomplete things but function for scoreboard go here and it's thinking down
below so if it didn't do that we could have probably hit the hot key but it's apparently doing it I'm going to hit tab to grab that so you can see it kind of helps as you're coding but you learn how to use it as you use it we're not building something big here and I think this is sufficient so we'll call this one done I'm going to go ahead and stop this workspace so open up the command pallet stop and I will see you in the next one okay ciao hey this is Angie Brown
and we are taking a look at GitHub codespaces this is a cloud developer environment or also known as a CDE Integrated with your GitHub repo and the idea is that you have this thing called a codespace that's what they call their developer environment and a codespace runs Ubuntu Linux socer container on a virtual machine hosted and managed by GitHub so this is kind of a representation of how it works um I don't write it here but the idea is that when you launch up GitHub codes spaces it's actually cloning your GitHub um repository so you
can start working with it right away uh and most Cloud developer environments do that so that's a pretty common pattern and it's going to clone that repo into a workspaces folder so you can interact with codespaces via multiple ways we have the SSH via SSH via the GitHub CLI you have code editors such as vs code browser the desk to Jet brains IDE um for the desktop you can just open that up in the browser mode by going to open and vs code desktop and it does give you a bit more flexibility than the browser
because there could be extensions that only work uh locally and you know it's just you get a better experience there but I usually use everything in the browser because I don't like to do local development anymore I'm totally moved over to the cloud but uh for the get upsi commands we do have a lot there so that's a great way to programmatically work with your GitHub codes spaces uh when you create a new codes space you'll have to choose the repo the branch the region the machine type and that shows that all there that gives
you a good idea of how you can configure uh your code space uh the regions you can choose from Is Us East US West Europe West uh southeast Asia and the australas and you know what I think when I first launched I don't know if it always shows me this options but if you need to choose these options you can make sure you get that stuff uh there is a capacity of your environment based on the virtual machine type so the more uh the larger it is the more expensive it is and they they go
based on cores so you can see the larger the cores the more RAM and the more storage you're going to get that second value being the storage you can see all your code spaces across all your repos at github.com codespaces and the way you're going to start a codespace is if you drop down that code under the codes spaces tab you can go ahead and create it on a particular Branch that's usually what you want to do is say I want to launch this on Main Branch or Dev Branch you can obviously use the GitHub
CLI to open up code spaces there is a limit of concurrent code spaces allowed to run if you hit that limit you may need to stop other code spaces first I don't know if this is the case but there might also be a hotkey within GitHub repo but we if I'll have to go double check that uh before we talk about it okay hey this is Andrew Brown and this fall along I want to take a look at some of the configuration options when we launch up our code spaces so I'm going to switch back
to my um other account here and we'll go into the fun repo and what I want to do is open up this code Tab and normally what we would do is we'd launch a code space here but I really want to choose the options that I use to configure it with and so you can see we have some other things here we'll go config with options and this is where we're going to get the choice of choosing our Branch choosing our region choosing our machine type and so that is the way that we can do
it notice that we're limited to two and four cores this is probably because we don't have a credit card attached and so it is very limited I'm curious to see what it is in my other account which could have some paid capabilities so I'm just going to quickly switch over to that and take a look there so let's say we went into the exam Pro repo because definitely we're paying on exam Pro for sure and let's just say I'm doing terraform beginner I'm going to go here and go to Cod spaces and say with options
and see if we get more options and yeah look we do get more options so that definitely is a factor for the things that you're going to be able to see so that is pretty clear let's go back over uh to here and I want to again go back to this repo and and I mean we definitely do want to open one for code spaces but we're going to go ahead and delete this one I really just want to get to the repo itself and let's go take a look uh yeah here again and I
mean I never looked at this before so I'm really curious uh what's under here for configure Dev container oh it just opens it up in Json so nothing super interesting but it's nice to see they have some documentation here as you're working on that file to help you configure it I could have probably used that later on so um I guess we'll take a look at that but really it's simple we'll just go ahead and say with options and we'll be very explicit about how we launch it main now pretty straightforward we'll go ahead and
launch a code space and so all I really want to do is just show you the command pallet in here for code spaces as we've already used codes spaces a lot in this course but um you know just go here and show you some of the command poet options so if we go to the command pallet which was down below here we type in code spaces this is where we're going to get a lot of the actions actually I'm surprised I didn't make a slide on this but um you can see that we have a
few different things so uh we can change our Mach machine type here we can manage our secrets from here we can rebuild our container if we change our Dev container file um you know we can stop our workspace so a lot of stuff here but I'm going to go ahead and stop our current workspace okay CU that's good enough for me for now and we'll go back over to GitHub let's take a look at what we have in our settings so we go here we go down to code spaces and so we can have our
secrets here we can have settings sys which just turned on and it doesn't seem to ever work and we have some additional options so we have access and security this might be oh I guess it's no longer here we can choose the default Editor to launch in uh the idle time the host image whether we want to use beta or stable or manually set our region but it seems like it autod detects but yeah it's pretty straightforward but we'll look at these features as we uh go through this codes spaces section so there you [Music]
go let's take a look at the GitHub codespaces life cycle there was no diagram so I'm the first one to make one uh if that's even that exciting but usually the first thing that's going to happen is you want to create your Cod space and technically reopening is kind of similar so we could say create or reopen and from there we want to get our codes space running once our codes space is running uh we can stop it and of course stopping it freezes the state of your workpace so you can use it again later
and the idea is that if we wanted to reuse it we just reopen it and it'll run again if let's say our um code our environment timed out for any reason maybe we walked away from our computer computer maybe we just forgot that we forgot to turn it off maybe we had some kind of interruption uh code spaces is going to turn off by default after 30 minutes of activity um it's basically the same thing as doing a a stop and it's the equivalent um yeah it's the equivalent of doing a stop there so this
is just to keep cost low for you um you know if you want to make changes to your Dev container file which is going to say what your base images and stuff that's installed you have to do a rebuild in the current environment that's the only way it's going to do do that if you're launching up a codes space for the first time it's going to build it from that Dev container but sometimes you have to do rebuilds uh the environment gets saved periodically so generally you not losing data so when you abruptly close and
then it stops it's persisting data to the virtual machine as long as it's not deleted but still assume that that environment is uh possible to be lost I think after a certain amount of time it will actually delete um a repo after a certain amount of days so just understand that you know if it's something really important make sure to commit it and put it in a temporary Branch or working Branch um it does Autos saving so with the VSS code browser it will autosave on by default for vsod desktop Autos saave needs to be
turned on apparently but when I was using it I never ran into any issues it just seem to work uh when you're deleting when you're done with your uh your environment you can delete it uh you don't have to delete it if you think you're going to start it up again because you're not uh having any spend while it's deleted but there could be some limit in terms of how many workspaces you have or code spaces so you might need to delete some but there you [Music] go so when you create a code space it's
going to be assigned an autogenerated display name and so in this case it made shiny space chainsaw and sometimes when you have a lot of um code spaces it gets confusing what is the contents of those codes spaces so it's totally possible for you to rename uh your codes space and that's just going to make things a lot easier you can see all of those codes spaces at/ codespaces and it'll just make it a lot clearer [Music] okay hey this is Andrew Brown and this fall along we're going to take a look at how to
rename a GitHub codespace so let's hope that we already have one here so that we can rename it if you don't you'll have to make a new one this one's called shiny Cod not a great name not a great a great name whatsoever but let's go ahead and rename it and I'm going to call this one uh just Dev okay and we'll keep it right nice and simple here and so now it's been renamed Dev and so let's go take a look at our code spaces so we can see the renaming of that so it's
not here I got to go back a little bit and so now we can see all of our code spaces and there it is so we have our um our repo here and it's called Dev and that is a lot better than before so that's all I wanted to show you let's take a look at some vs code um configurations in the context of GitHub codes spaces so the idea is that GitHub codes spaces should persist your vs code settings so you get a similar environment across code spaces so far I haven't had that experience
I have no way of figuring out how to configure that but it seems like it's supposed to to work so if you figure it out please tell me but I'll just pretend that it does work somehow um if you've never used vs code before there's this thing called settings and it's a little bit more complicated than that because all this stuff that you're editing in the UI is actually updating a settings. Json file um it gets synced and backed up I'm assuming on uh GitHub maybe it goes somewhere else you can see there's a backup
and sync settings you can override settings Json options in your Dev container json. file let's take a look at vs code extensions so GitHub codes spaces should persist I use the word should because again I'm not getting it to work for me the idea is that you can install your extensions um most vs code Marketplace extensions are available to install in the vs code browser for GitHub code spaces you can ensure your extensions reliable load every time by setting them in the dev container. Json we have vs code theme this allows you to change the
look of your vs code um and you know this is a personal choice of what you want to choose but those kind of choices you're not supposed to put in your Dev container. Json fall for some reason um but yeah there you go [Music] there are two options or configuration options you should know for GitHub code spaces and that's timeout and retention period um so timeout is how long code spaces should wait to stop a code space when there has been no activity you can set this to be as low as 5 minutes up to
a maximum of 4 hours and the default is 30 minutes for default retention this is saying when should we start deleting your codes space if they are inactive you could set it to a minimum of zero days uh to a maximum of 30 days and the default is 30 so play around these values and figure out what works best for [Music] you so there is an option called sync settings for code spaces which will pull your sync settings and the idea is it's supposed to uh continually reset it so vs code sync settings lets you
share your Visual Studio code configuration so such as settings key uh key bindings and assult extensions across your machines so you are always working with your favorite setup this has not worked so far for me I don't know what I'm doing wrong but um you know it is an option I have it turned on in my account but uh supposedly this is an offering uh that is available for code [Music] spaces you can configure GitHub code spaces to use dot files from a specific repo that will be used for all feature code spaces that you
start so the idea is you checkbox this on you specify the repo it's going to pull the dot files from this repo into all future code spaces that you start up um GitHub clones your selected do file repos to the code space environment looks for one of the following files to set up your environment so we have install sh bootstrap setup sh and a bunch of others um so you can see that you could probably offset some of the configuration that would be in Dev container into this as post boot scripts um but yeah there
you [Music] go codespace is deep link is just a way for you to generate out a URL that will launch a codespace for a specific repo so here is a look at the actual URL it says codesp spaces. new SL and then the repo name but you can get this deep link through dropping down the code Tab and then you can get either the URL or HTML or Mark up to make it really easy to launch it and when you do launch it it's going to bring you to the create a new codespace uh workspace
you can checkbox the quick start if you want to skip that but that's all it really is it's just a sharable [Music] link so when you're using codes spaces you might have uh environment variables or uh passwords or Secrets or access tokens that you don't want to hardcode into your code because that's just a bad habit uh it's just going to lead into uh serious issues so you need to inject them some way in environment when they launch up from a secure location that is what Cod spaces Secrets does so you can see in this
example we have eight of those credentials and the idea it will get get is that we'll get loaded in the environment so we'll go take a look at that [Music] okay hey this is angrew brown in this video I want to take a look at how to set secrets for code spaces so we'll go to the repo there might be a few different ways that we can set it what I want to do is go first check if we can do it this this way no but uh we can go over to our settings and
we'll check out code spaces here on the left hand side and from here if we scroll well it's actually right up here we can create a new secret and so let's just pretend that we have a super secret we'll just make up something here and we'll just say Roadhouse uh a bunch of numbers and then a dollar sign and a net sign okay and we can even say what repo it's for so it's for the fun repo we're going to go ahead and add that secret now let's go launch up uh a code spaces and
see if it's available so I'm going to go back to that repo and yeah we'll go back over here we might already have one from before I'm going to go ahead and delete that and I'm just going to launch a new one so that we are squeaky clean and I'm not sure why it's giving me all these options I just want to launch one we'll go back over here we'll try this again we'll say create one on Main and we'll hope that that gets loaded in so I'll be back here when this is fully loaded
okay all right so now that our environment's up I'm going to assume that those secets were loaded via the environment variables so I'm just going to bump up the font here for a moment we're not going to spend too much time in here and I'm going to type in andv and actually we'll just hit enter and see what we get so we have a bunch environment variables that doesn't help so much so I'm going to go back and type in GP and we'll type in super and there it is so we can now access that
as an environment variable I could code out if I want super secret and there we go so that's all I really wanted to show you uh and I'll see you in the next one okay so before I do that I'll just stop this environment and yeah we'll see you now [Music] ciao so visual studio code Dev containers allows you to configure your Docker containers via Json file so you can use this in code spaces you can use this with vs code in general so the dev container Json file is expected in the root of your
project and there's an example of a very simple one let's go look at some common configuration so you can quickly understand how this file Works um usually you want to provide a remote image so this is the one um that is I think being used for a base image for Microsoft and a lot of the um features that you can add to it uh you can build your own images by supplying the docker file in your project and Supply it some arguments uh there are features that allow you to quickly install certain programs we did
this earlier um I think in our uh quick and dirty um git crash course but the idea is that we can install these features so we can get quickly moving uh and this is specifically for the common base image if you want to create your own features you totally could but it has to be for your uh image you can also uh configure custom programs you usually put that in your Docker file um you could also use the post crate command to run a um shell script so there's a lot of ways to um do
Post configuration or try to do something very similar and as I said you can create your own features to quickly install on top of your own base images it is a lot of work to make features though um setting settings allow you to configure the settings of vs code so that is a block that you can put in there and you can see we also have one for extension so it knows what to install next time we can tell what ports to always forward which is really useful if you're running web servers we have command
Flags uh uh at or we can pass command Flags to R uh Docker run with the run args so that's something that might be useful for you if you need to pass environment variables you set that in the container EnV uh you can mount uh a bunch of locations and then map the the files and folders so we'll take a quick look here at some of the options so we bind mount a local directory Mount a Docker volume for persistent storage Mount the docker socket mount a specific file mount a host directory as a read
only okay um the command that runs after creation is the post create command you can set the default username that a vs code should use when connecting to the container you can uh you could use the post create command to install a bunch of programs on top of your base uh container and that's pretty much it so there is obviously a lot that goes in with these Dev containers I find them really hard to configure I don't want to spend too much time doing them uh and the exam's not going to ask you about um
uh this stuff but for practic practicality we should know it because if we're working with code spaces or vs code it's definitely something you're going to come across but there you [Music] go let's take a look at how you would change the shell for um GitHub codes spaces so the idea is that uh vs the vs code browser comes with bash fish zsh so you do have a few options in order to change your shells I usually just use bash but um you know maybe you like something else is there some way to get power
shell on there probably but I didn't look into it and the way you configure that is in your Dev container so the idea is that uh let's say you wanted to bring in one called uh cssh and so you would specify the path of where it is so this is CS CSH but you know you might have to be very specific where it is and then that way you can uh uh have it in your profile profiles as a drop down um notice that if you are using um vs code for very specific OS distributions
then you can set the default uh there um but yeah that's about [Music] it the github.com in github.io page the other way is by assembling the URL so you have github.io followed by it github.com so it's very limited in what it can [Music] do so there's two things that look like editors in GitHub and it's important important that we distinguish between the two because on the exam they'll definitely ask you the differences between them so for GitHub it is totally free for code spaces you have a free monthly quota but uh it can charge based
on storage or core hours per month and this is usually based on that machine type it'll increase the cost for availability they're available to both on github.com uh for startup it instantly launches there's no Dev container Json configuration for code spaces it takes a few minutes and it does load a Dev container Json on for compute there is no attached compute you can't run code or apps for code spaces you have a dedicated attach VM you run and debug your code and your apps uh there's no terminal access for G [Music] github.com source is source
code made freely available for possible modification and redistribution and you might have heard of some of these open source projects like Linux or git or Docker or spark um a lot of times these companies are really well utilized by a very specific company that will have a paid solution and it really does help keep um the project going or help with its mass adoption in the case of git uh git is actually um managed by the Linux foundation so it's not necessarily a project that GitHub manages but GitHub clearly makes a large um makes good
use of git so open source uh benefits include things as encouraging Global collaboration speeds up Innovation offers adaptability and customization reduces software costs enhances learning for developers typically high quality and uh things that are typically high quality and reliable provides transparency for trust and security and open source software has often have free community versions which make make it easy for personal developers or small organizations to quickly adopt technology uh if you're looking at that logo that's from The OSI or the open source initiative which is a nonprofit organization they are the steward of the open
source definition this is a set of rules that help Define open source software and uh one cool project that they have is they maintain a list of Open Source licensing documents and that way you're able to take these documents and quickly apply them to your projects the top five most popular open source licenses are MIT uh the new Public public or the the new general public license so GPL Apache 2.0 uh lesser general public license so lgpl and the BSD license depending on the license it determines whether someone can re redistribute your code uh as
a commercial product or do they have to alert you of how they're utilizing the product or reference you there's all different kinds of licenses and you can pick one which works for your codebase if you choose to make it open [Music] source GitHub sponsors allows GitHub users to collect donations from their GitHub hosted open source projects so here you can see someone can sponsor the octocat so I say projects but of course you can directly do user accounts if it's through patreon um sponsorship payments um are facilitated two way payments through GitHub on github.com payments
through patreon on github.com and so you can set it up for a specific repo to get your sponsor button um you can connect your patreon via your account settings I think to get that Global one there uh to receive sponsorship through GitHub on github.com you need to be accepted into the GitHub sponsors program I think this is specifically for if you want GitHub to collect the money on your behalf um you have to apply for it and go onto a waiting list you can do it for personal accounts and organization and you might have to
provide uh well you will have to provide banking information in order to get paid GitHub makes it easy to locate people who maintain your dependency so you can support open source contributions you can go to fors sponsors exlore and it'll tell you about uh the like the repos that or sorry the dependencies that you're using your project to suggest um who you could sponsor uh that are helping you out uh in that sense but there you go let's talk about GitHub and open source projects um there is some kind of statement that GitHub makes about
open source but I really couldn't figure out what it is that they wanted me to put in this course uh when I took the exam they definitely had some kind of um uh PR kind of language and saying what do you think that uh is github's relationship with open source so just do your best to Guess that I really couldn't assemble it here here so it's hidden in some kind of PR content but let's talk about the practicalities of how GI GitHub works with open source uh one thing is that when you create a repo
you can choose a license very easily I imagine that it's from that OSI approved list and then when you go to repo you can see the license clearly displayed um and that will be stored in that license.md that could be license.md license or license.md with all caps they'll all work if you're looking to find open source projects you can use the search to search based on license um there are many open source GitHub repos that are hosted on GitHub um because GitHub offers a lot of stuff for free to uh good open source projects some
people will mirror their project so maybe they don't host it primarily on GitHub it they'll make a copy and they'll sync it so that it has redundancy of where it could be you can use um uh you can explore under GitHub topics and GitHub trending in the community Pages uh to try to find open source uh projects based on whether they're popular or for specific categories you can follow organizations and um you can sponsor organizations and so that might be one way of doing that if you're utilizing the GitHub Marketplace they have a bunch of
apps in here and a lot of these are open source projects and you'll have uh you'll be able to install them for free so that is uh something else that is really interesting um but yeah there you go hey this is Andrew Brown let's go take a look and figure out what kind of Open Source stuff we can find out on github.com and one thing I think that would be really important to check out is the Community page um so I think it's just here on the Explorer so on the left hand side we'll go
to explore we might as well open up the marketplace as well I mean the marketplace is good also for apps um not just for open source but there definitely is open store uh stuff here so like if I go into here I'm not sure if they have an open source license but sometimes you go to plans and they might tell you this one says free not necessarily open source but there are ones that are open source that we can uh find but you do have to do a bit of digging to find them I suppose
anyway um if we go to explore this is where we get a kind of a community of information uh you can see what's trending in terms of repos and developers uh we have topics over here where you can drill down into specific things so if you like AWS you can see all of uh these here okay so that makes it pretty clear in terms of discoverability for trending we could look for trending stuff as well over here all right but you know primarily if you're going to find open source stuff I guess you'd have to
search for it and look based on the license so we can go here and trying to expand our search but maybe we say license license I have a hard time spelling that and so we can just choose one here say MIT and just hit enter ENT and it'll show us everything that is uh under MIT license so that could be one way that you could explore and try to find things um but yeah hopefully that gives you kind of an idea uh of you know open source maybe we should take a look and see what
GitHub thinks they they they want to say about open source GitHub open source they probably have some kind of statement where open source Community lives a PR person definitely wrote this um open source software is free for you to use an explore all right read our open source guides and yeah maybe there's something in here that they would want us to know in the course but it's just a lot of stuff you know what I mean it's nobody wants to read through all this but um yeah I mean there's stuff in here so that's cool
I guess but yeah that's open source and GitHub okay [Music] inner source is organization and development best practices for non-open Source or proprietary software the term was coined by Tim orali back in 2000 an inner source is not a strict guideline but a loose strategy to establish an open source like culture within organizations it was really really hard really hard to figure out what this was because they they when they say loose they mean it's really loose um but uh what I found to help make more sense was to look at the free resources provided
by the inner Source commons. org where they have a bunch of patterns that you can use um to apply to your organization to start to apply inner Source um and yeah it's just to make sure you adopt open source in a way that is great for the community and your [Music] company all right let's make sure we understand the difference between inner Source versus open source so the scope is a bit different inner sources is within an organ organization remember that word inner so if it's pointing inwards we're talking about the org if it's open
source this is public and a global Community um in terms of accessibility in source is limited to company employees where open source is open to everybody for um purpose intersource improves collaboration efficiency internally whereas open source shares and collaborates on projects globally for contributions employees of the organization is for inner source and for open source it's about anybody such as developers or users for visibility in sources code discussions often private to the organization and open source publicly available and visible for governance in sources is based on the internal policies and culture of the organization and
for open source it's usly governed by open source licenses and Community rules so there you [Music] go so forking a repo allows you to create a copy of a repo and uh for working allows you to take an open source or Source available repo and Go Your Own Way quickly apply bugs and patch fixes a separate repo to work on for Community contributions you can also uh create cross repo repo poll requests to get accepted into the original repo when you Fork a repo you'll be able to tell because it will say forked from the
location underneath if you need to explore other Fork repos you can use the network graph to find uh specific commits to see the difference between your repo and another one is at a glance you may prefer using a forked repo over the original you may find uh the original project abandoned and a fork becoming the go-to repo for a project Forks help keep public projects alive uh on the edge and collaborative so there you [Music] go geta repos can be set as public making repos easily searchable on GitHub via search engines public repos serve a
community purpose for knowledge sharing educational resources and open source projects besides just search GitHub curates content via community Pages such as the explore page and the trending page um GitHub provides a robust search not uh that lets us not only search the repo's name but the contents of the repo as you can see in the advanced search we have a lot of options for search uh there is a search syntax where we can utilize a lot of different um of these little filters to find things very quickly the search syntax also supports regular Expressions wild
cards not or and multiple terms and more so there you [Music] go hey this is Andrew Brown and this follow along I want to take a look at repository search as it probably will appear on your exam to know how to utilize this so what we'll do is just type in rails and um I'm looking for all results I'm going to click the one up here because I want to get to this more advanced search where we have a bunch of options and where the exam might ask is understanding how to compose a query so
you can see we have a lot of options uh here and notice as soon as I click it starts filling them in so um if we just go here for a moment we can just take out rails completely and we could try to do something so we have public oh sorry we'll go down here and try it down here so we say public so is public is something that we could do um we could also specify based on topic I'm not sure what we would put in for topic let's go take a look and and
see what is there so I'm not really seeing anything for topic but what we could do we're not exactly sure on all these parameters if we go to advance search down below this kind of basically gives us the same stuff so if I was to search topic here I'm really surprised I can't find what topic is but let's go take a look and see if that actually is something because I'm really curious GitHub repo topic um with topics you can explore repos okay so it looks like we can actually categorize them in certain ways I
don't even know that let's go over here ah yes topics here okay so I guess the idea is that we can classify our project based on a topic and so maybe one could be Azure so we could go back over to our search I was kind of curious about that and we say something like topic colon and then Azure and then hit enter and so this could narrow it down to Azure projects maybe we can take out the rails term in the front so we can kind of narrow down exactly what it is we're looking
for so now we're getting kind of azure projects we can put like loose search on the end here so let's say we wanted to use bicep which is something that Azure has we could search it that way I'm kind of curious about this topic option because I didn't realize we could set topics so let's go over to our repo and see if we can set that so I'm going to go into our fund repo we'll go into settings and I'm looking for topics so let's find that and the reason I'm interested is because on my
exam actually topics came up and I wasn't really aware of being able to set them so yeah let's go see if there's some way we can do that um searching topics on the about page it seems like we can set that so I'm going to go back to my repo here and we'll go here oh we have topics so I could say fun which is not a real topic but we could do that we could say uh beginner and so that's going to provide U topics that are uh really well known and allow people to
search for that so I think that's pretty useful so you know get some experience with the discoverable uh or the the search functionality and add some topics and I think that'll be good enough [Music] okay GitHub labels are used to categorize issues pull requests and discussions and the way it works is you can just apply multiple labels to your targeted item and then it should show up beside the item somewhere uh you can manage your labels or create new labels on the labels page for your repo and creating a label is pretty simple it just
needs a name a description and a color the GitHub CI provides commands for labels so it is very easy to create [Music] labels Milestones allow you to group multiple issues into an end goal which shows completion towards that goal for each closed issue so the idea is you can make a new milestone you can assign Milestones to it I'm just going to my pen tool out here so you can see but the idea is that as we uh close we get to a completion so if we have one open one Clos we're at 50% and
when we're done it's at 100% you can set a date um and there you [Music] go hey it's Andrew Brown and this fall along we want to create some custom labels it's pretty straightforward but uh I figured we should take a look at a more popular repo and see what kind of labels they're using if they've even modified them at all so we're over here on the rbon rails um uh site and you can see we have lots of labels and they're breaking it Down based on uh sub packages and things like that and I'm
not sure what this is it looks like maybe open issues you can go here and filter out to that um there's a lot of automation that you can apply with labels um so when you create issues you can have labels being pre-assigned you could have uh pull requests act a certain way based on the labels it has so there's a lot you can do with labels we're not going to show you all those automation features but we will show you how to create your own labels which is pretty straightforward so we'll go into our fund
repo and we'll go over to issues and we will create some labels we'll make a new one here called um secret if we haven't already made one before and I'll go ahead and just choose a random color and boom we have our secret label if we go over to our issues we can then go ahead and ass sign all sorts of labels super easy so y there you go that's all you need to know [Music] ciao hey everyone it's angrew brown and this fall along we're going to take a look at Milestones so what we'll
do is go to our fun repo and we'll have to create a couple of issues I have one here called what is the best movie ever but then we can say what is the best food ever as our other ticket and then we can figure out what that is later on but the idea is that we want to put this into a new Milestone so what we'll do is go back to issues and we'll create ourselves a new Milestone and we'll call this um liveing life I don't I don't know what to call this but
we're going to go ahead and call that um oh that was another issue that wasn't a milestone but that's fine we could always use more Milestones here and we'll create a new Milestone we'll say true living okay and we could set a date in the future and date that we want to complete this and I'm going to go back over to my issues and I'm going to checkbox well first all go into one and we can assign the Milestone this way we can also Mass assign probably this way as well if we go here by
the way there's Mass assignment for all these things for issues probably good to know that and now if we go over to our Milestone we have a percentage of how complete it is so if we go back over here we can close a couple of these okay and if we go back over to our Milestone we can see that we've made some progress It's 66% complete I want to show you maybe rails because I have a feeling that they probably have Milestones a lot of Open Source projects will have Milestones to help you know when
the next version's coming out so if we go over to issues here and go to Milestones you can get an idea like when the next version is and that's a really great use case for Milestone so we can go in here and see that they only have one more ticket to get version 7.13 out um then we have 8.00 and they have a bunch of other stuff so it is quite interesting how Milestones can be organized but usually this is the use case uh that I see but anyway we'll see you in the next one
okay [Music] ciao G up projects is a planning and tracking tool when working on G UB repos and a project has an adaptable view that can be changed at any time between a spreadsheet a taskboard and a road map um so that's kind of the screen where you choose what kind of view you want projects directly integrate with issues and poll requests projects have built in workflows to automate common actions so uh the idea is that a GitHub project is composed of multiple views and you can add more views to your project each views layout
can be changed at any time to accommodate the project use case so if you set set up a view you can change it whenever you want uh so let's take a look at what the table looks like so this is a great uh layout if you want a traditional uh ticket tracking system or you have a large amount of tasks then we have the board this is a great layout for agile task and if you need to understand clue the state of your issues it's your basically can band board and then we have road map
this is great if you're trying to plan for uh uh tasks based on a timeline we call these normally um Gant charts so that's kind of what that is there for your layout you can configure your data based on multiple options so we got Fields columns Group by sort by field sum slice by zoom level and dates I'm not reading through all this because I didn't see it on the exam so uh you know these are pretty straightforward and you can read these if you want but um yeah so your GitHub project items have custom
Fields you can create new fields and add uh and provide options to easily fill in those those fields and I mean that's pretty much the start of it but there we [Music] go let's talk about GitHub projects versus GitHub project classic as this might end up as an exam question and to avoid any confusion if you somehow end up creating a classic project so GitHub projects are new more Dynamic interfaces with tables board and Views uh classic just has a can band board style thing like Trello um GitHub projects are highly customizable different views and
Fields the classic is limited customization options uh there is apparently more automation support in the new projects whereas the old one was simpler the new projects has enhanced reporting features and insights whereas classic has basic reporting and tracking uh GitHub projects has deeper integration with GitHub issues and poll requests whereas Classics has basic integration with GitHub repos GitHub projects offers more advanced and flexible project management tools compared to GitHub classic projects which is simpler and more straightforward there's no reason to ever use class unless it's for legacy reason but yeah there you [Music] go GitHub
has built-in project workflows that allows you to automate what happens based on specific events in your projects so you have this workflows um area like I think you do the ellipses and you get to workflows and from there you can uh basically change some Behavior so when here it says when a pull request is merg you could say set the value or the status as being being done for this particular field there are the following built-in workflows item added to project item reopened item closed code changes requested code review approved pull request merged Auto archived
items Auto add to project and for the exam they will definitely definitely ask you which are some built-in workflows I do not like that question but it's in the exam so make sure you remember the so that you can get an extra point on your exam uh for more advanced automation of GitHub projects you can use GitHub actions and there you [Music] go project insights lets you create charts about your GitHub projects and there are two charts that they want you to know the first is current charts and the second one is historical charts so
current charts is basically you take a value and you can plot it as a chart the historical charts is you take values and you plot them over time the exam will definitely ask you about what are the two types of um charts so make sure remember that it's current charts and historical charts there you [Music] go hey this is Andrew Brown and in this follow I want to take a look at uh GitHub projects and by the way I'm not sure if it's picking up but I'm in my snowsuit because it's so darn cold in
my office because it's winter and my furnace isn't working so if you hear like scratchy sounds it's because I'm wearing a fullblown uh heavyduty snowsuit okay and you might hear them in other videos but I just wanted to point that out if that you know if you're wondering what that sound is but anyway let's go take a look at our fun repo and from here I want to make our way over to projects and we'll create ourselves a new project I would like this to get out of the way and um I'm going to go
ahead and create a new project I should note that um a project can um contain uh tasks and issues from other projects but for the most part I I'd rather make a new one here and so it's just keeps giving me this darn pop get out of the way and so we can choose from a bunch of different templates um I'm going to choose Team Planning because that sounds really good and right away we're going to get a bunch of views across the top so we got our backlog we can go ahead and add an
item I'll just say uh watch Roadhouse and write a a review okay and so we'll go ahead and do that and this is a draft so it's not really an issue yet it's kind of like in limbo but you can convert this to an issue and put it in the repo and now I can drag it around and move into other states which is really nice we can go up here to backlog if we don't like the board we can change it to a table this allows us to drop things down in a very nice
and easy way it gives us some uh default parameters that came with this project we can go to road map if we want to and we could say need to do it between this time and that time for the scope of our project not super complicated I don't know how this stuff works I fiddled with it it wasn't doing what I thought it was going to do but I'll change this back to a board um we could go and generate at a chart which is going to be in Project insights understand there's two types of
charts current charts and historical charts and this one looks like it's a current one so it's not over time and how you would have it in time I have no idea um oh up here so I guess these are the types of layouts we can have so that's pretty cool um so we change that to line or bar or sacked bar uh we can go ahead and hit new chart and I'm trying to figure out how do we get historical charts because I thought it'd be like you choose one or the other but doesn't seem
like it's that way it seems like you probably have to group it by something or you'd have to have it based on the timeline like iter or something so yeah I'm not exactly sure how you create the historical chart I don't think it really matters um again this is GitHub foundations we just need to get some familiarity with projects if we go up here in the top right corner um we can get this drop down to get over to our workflows and again I'm going to go through these with you so we have item added
to project item reopened item closed you can see there's a couple already sets so when we have an item closed it's going to set the value as done okay so if I go back over to this issue okay and we close it it should get moved to done there we go so see how that automatically moved to done and that's because of that workflow here and so we have some other ones that we could set up if we want we could edit them but these are very very simple as you can see they're very straightforward
uh we can go to settings and in settings you can see we have our custom Fields you can add them change the field type to a very specific comp so if you want to say I want to collect the date you could have that there and we call this Roadhouse date which makes no sense but we can do that we go back to our settings we can go to our ticket okay and click it and we can now set our Roadhouse date so yeah hopefully that makes sense but it's pretty darn straightforward and that is
GitHub projects [Music] when commenting on issues or pull requests you can add a save reply that you already have set up previously and so if you go to the save replies icon uh you can then go choose run and this is a great way to have like canned responses um I'm sure there are benefits for this it's pretty obvious it saves your time but uh yeah that is a functionality that you can do uh there for uh replying to comments okay [Music] I just want to explicitly point out that you can assign issues and poll
requests to specific users right uh you can filter issues and PRS based on assignes and I just wanted to make that call out because in the exam guide they wanted to call it out and I figured I should make a simple slide there so there you [Music] go so securing your account using 2fa uh normally it's called MFA but for whatever reason they're just calling it 2fa cuz it is really only two- Factor authentication this is where you use a secondary device such as a phone to enter a code in as a extra security precaution
when sign in or performing sensitive actions and so you can choose your preferred UFA method on GitHub which could be between GitHub Mobile SMS text message or the authenticator app um we have all these options for two-factor authentication so you can use authenticator app like aie which we did use in uh when setting up our account a lot earlier you have Google Authenticator Microsoft authenticator I'm sure there's other ones we could use text messaging we could use a security key like a UB key which is a physical piece of Hardware we can use GitHub mobile
which we absolutely do we can have recovery codes which is something that is just a backup in case you get totally locked out of your account and you need to enter those codes in but there you [Music] go personal accounts has two permission levels the first is the reposit to owner owner repository owner I can say it the person who owns the account that would be you and the repositories owned by personal accounts have one owner the ownership can uh permissions cannot be shared with another personal account for collaborators these are people you add as
collaborators I cannot tell you how many times I did this slide that's the best I can do it so we'll just live with the way I said that um so let's go through the type of permission that repository actions have they can invite collaborators they can change the visibility of repos limit interactions with repos rename the branch including the default Branch they can merge a pull request on a protected Branch even if there are no approving reviews they can delete the repo they can manage the repo topics they can manage security and Analysis settings for
the repo they uh they can enable the dependency graph for a private repo delete and restore packages customize the repo social media preview create a template from the repo control access to dependabot alerts dismiss dependent bot alerts in the repo manage data use for a private repo Define code owners for the repo archive the repo create security advisories display a sponsor button allow or disallow Auto merge for poll requests yes there's a lot of things here I realize this is tiring manage deploy Keys manage web hooks let's take a look at what collaborators can do
Fork the repo rename a branch other than the default Branch create and edit delete on commits pull request issues in the repo create assign close and reopen issues in the repo manage labels for issues and pull requests in the repo manage milestones for issues and pull requests in the repo mark an issue or pull request in the repo as a duplicate create and merge close pull requests in the repo enable disable auto merge for a pull request apply suggested changes to pull requests in the repo create a poll request from a fork of the repo
submit a review of a poll request that affects the merab ility of the poll request create an edit a Wiki for the repo create an edit releases for the repo ask as a code owner for the repo publish view or installs packages removes themselves as collaborators on the repo okay so that's a lot to remember so just remember this repo owners have full control of the repo collaborators can pull such as read the contents of the repo and push right changes of the repo there you go [Music] ciao Enterprise managed users also known as emus
allow you to manage the life cycle and authentication of users on github.com from an external identity management system or IDP GitHub partners with some Developers of identity management systems to provide a pay path integration with emus U the idps yeah idps mostly provide authentication using saml they can use Microsoft entra ID previously known as azuread and also offers oidc for authentication the IDP applications Provisions users with systems for cross doain identity management s cim and I'm going to just tell you on my exam I got so many darn questions about this and I have no
idea why but anyway for partner idps you can use Microsoft entra ID formally known as azuread okta and pig Federate they all support samle uh only oid is supported by Microsoft entra ID and then you have SIM now when I say I got questions of the exam it wasn't specifically which partner provided what IDP but it was more just understanding that enterprises have this functionality of of having SCM and O oidc and was it between Enterprise uh server and Enterprise Cloud okay um there we [Music] go hey this is Andrew Brown and this fall along
I want to focus a little bit on security as I feel that uh the security section here is a little bit light and maybe by looking at some of the security stuff it might help us on the exam because they do asking about like these scanning things and so I'm hoping that if we look at them you'll remember them so we have dependabot code scanning and secret scanning this is a public repo so we have these options here and uh we have private vulnerability reporting let's see if we can turn that on what happens it's
a beta feature let's turn it on can we turn it on it's on there we go can we turn on dependabot alerts let's do it it is on and then we have code scanning so code scanning is a little bit more work it has code ql anal analysis is it easy to set up let's do the default and it says we're using Ruby and we'll enable code ql so all those scans are now set up it was as simple as that I don't think it's going to cost me anything additional because it's a public repo
okay and so now those are enabled I thought this one was enabled because we turned it on but maybe not secret scanning would be something that would be really good so let's go ahead and try that out secret scanning let's enable that as well and boom there you go you got all that stuff in place it's no more complicated than that we do also see secrets and uh variables here so it looks like it kind of uh bring brings them all into one place so we sought for code spaces but I guess GitHub actions can
have secrets as well dependabot can have secrets as well looks like the same kind of functionality across the board for all of these we were basically just looking at code security analysis so you know that's that we can go over to our settings over here maybe they have a security tab over here uh um yeah they got this it looks like the same thing more or less maybe from a Global Perspective it says push protection for yourself block commits that contains uh supported Secrets across all repos that sounds really good I'm going to turn that
on but uh yeah just remember those three things the secret scanning uh did I say three things let's go back and make sure it's just those three whatever they were we'll go back here dependabot code scanning and secret scanning remember those three scanners [Music] okay hey this is Andrew Brown and this follow I want to take a look at what kind of permissions we have for organizational accounts I was trying to make a slide on this but I was getting um M mix match information maybe because there used to be an old way of doing
it now there's a new way and so it was really confusing so this doesn't really work but I figured what we could do is just look at the organization and see what we have for options it didn't mess me up on the exam but I still think that we should take a look and see how um those kind of permissions work uh for uh organizations so here I'm in an organization we have collaborators and teams and notice that we can set different roles so we have admin maintain write triage and read and if we want
to have custom roles we would have to have GitHub Enterprise that's the only way that we're going to get it so hopefully that is pretty darn clear I don't know what else to say about it it's pretty darn straightforward um but uh there could be a bit more but I don't know so I just wanted to show you that very quickly [Music] okay so within a GitHub repo we can manage multiple features by enabling or disabling them such as wikis issues sponsorships preserve uh the repo which goes into the GitHub Arctic code Vault discussions projects
and possibly more I just got to point this out because it's in uh the section for GitHub and administrator and so uh for the GitHub foundations course and so I had to explicitly call out these particular features and there we [Music] go let's take a look at repo permission levels and so when you're a collaborator and they accept an invite you can choose from predefined roles with different levels of access the first is read which allows you to view and clone the repo open and comment on issues and pull requests and download releases we have
triage which manages issues pull requests without WR access label and assign issues and P requests close and reopen issues emplo requests we have maintain this allows you to push the repo manage issues pull request labels and project boards create and publish re releases configure repo settings for non-sensitive fields we have admins which basically have full control and Enterprises allow for custom rules [Music] okay Branch protection rules are used to enforce certain workflows or requirements before changes can be merged into a branch you can find that under the uh Branch tab in your GitHub repo and
so here we could apply a banch uh Branch protection rules there's a lot of stuff that we can do here we can require a poll request before merging require status checks to pass before merging require conversation uh resolution before merging require sign commits required linear history required deployment to succeed before merging lock branch do not allow bypassing the above settings and for admins we can allow Force push allow deletions on the exam they might ask you what kind of uh Branch protection rule you can do I don't think it's a very fair question because I
can never remember all of these but unfortunately it might show up in your exam and if you don't want to lose a point make sure you remember generally what things you can do with Branch protection rules [Music] okay so there is a security Tab and this is for your repo and it basically acts as a security check list if you are um not the owner you're going to see something else like the actual security policy and some information about vulnerabilities in the repo but security policy is one thing that it will suggest uh for you
to create which is a markdown fall on how security vulnerability should be reported we have security advisories which privately discusses fix and publishes information I think they're deprecating this feature um except for open source public repo so it might not be something that uh is used uh much in the future uh we have private vulnerability reporting allow your community to privately report potential security vulnerabilities to maintainers and repos basically a form to tell you about vulnerabilities I think this is in beta right now uh we have dependabot alerts so a bot that alerts you of
vulnerabilities due to out-of-date dependencies dependabot can automatically create PRS to update dependencies for you to approve we have code scanning alerts automatically detect common vulnerabilities and coding errors via code ql and third party tools and then we have secret scanning Alerts get notified when a a secret is pushed to a [Music] repo collaborators allow uh you to let other GitHub users have access to your repo based on the permission levels you provide so you can search based on username across everybody it'll tell you whether they I actually I don't know if it'll tell you if
they're external but the point is you can search for them and then you can add them the idea is that you'll get an invitation you have to accept the invitation um at the invitation address I strong recommend that you tell people um to go accept it because it's not the best at alerting uh other people and then sometimes it just times out or expires so that's kind of a pain so just make sure you keep on top of your invitations [Music] okay an organization can group uh organization members into teams and so that's an example
of having a core team um you can set the VIS visibility between uh secret and visible that will definitely be an exam question that I got so make sure you remember that teams can be assigned to projects and issues uh uh request reviews from teams or request reviews from teams yep teams can be mentioned in discussions issues and pull requests control team access to repos and new members can be added to teams instantly giving them access to all relevant repos and discussions so the idea is that if you add people to a team you have
uh ways of delegating out a bunch of um responsibilities and things like that so there you [Music] go GitHub connect enhances GitHub Enterprise servers by allowing your ghes instance to access some of the github.com cloudon offerings so the idea is that because you are self-hosting there's just functionality that lives in the cloud and so this is their way of bringing some of it to you what kind of functionality are we talking about well that is the automatic user license sync dependabot github.com actions which I'm not sure what that means but oh probably GitHub actions it's
cuz the Dooms in there it's confusing server statistics unified search and unified contribution so the key thing I want to remember is that GitHub connect is specifically for the Enterprise server Edition and it's to uh bring certain features uh to your self-hosted version from the cloud okay [Music] so GitHub Enterprise Cloud accounts have a third special GitHub repo which is called internal and so what this internal GitHub repo does it allows all Enterprise members to have read permissions in the internal repo internal repositories are not visible to people outside of the Enterprise including outside collaborators
on organization repos unless uh your Enterprise uses emus members of the Enterprise can Fork any internal repos owned by an organization in the Enterprise and internal repos are the default setting for all new repositories created in an organiz organization owned by an Enterprise account so all I want you to know is that there is these things called internal repos they're only for Enterprise Cloud are they on the server one I don't think so but in the docs they said it was for cloud and then when I looked up a different feature in Enterprise it said
it was only for cloud but was for both so um yeah I would just say remember that there's just third option for Enterprise or Enterprise cloud and you'll be in good shape and get another point on your exam [Music] okay so GitHub makes extra security features available to customers under a GitHub Advanced security license and these GitHub Advanced security is available for Enterprise accounts on GitHub Enterprise Cloud GI GitHub Enterprise servers and some of the features are available for public repositories on GitHub I'm not sure I have of four in there I guess it's just
a little muck up there so that doesn't make a whole lot of sense I can barely get to my pen tool um but anyway uh the features that they're talking about is code scanning secret scanning dependency review and So based on uh whether you're a public repo or you're a private repo without advanced security you're going to have different access so for public repos you get full access for private repos without the advanced security license you get nothing and if you have the advanced security you get them all what's confusing about uh this one in
particular is um it says some of the features for public repost so it makes me think there's more than three features I could not find more other than the three listed uh maybe if I made an Enterprise account and contacted support that I could figure that out but um that is a lot of work especially for a foundation's course so just know that there is a GitHub GitHub Advance security license and remember those three components and those are the same things that we basically kind of saw in the um in the uh uh the security
tab right with all the scans and dependency review I'm going to assume is dependabot okay uh but there you [Music] go let's quickly talk about saml and Sim these are both available for GitHub Enterprise cloud and GitHub Enterprise server um just remember that these are features specifically to Enterprise and just have a general understanding the difference between the to so saml stands for security assertion marketable language it is an open standard for exchanging authentication authorization between an identity provider and a service provider it's an important use case for saml is single sign on Via the
browser if you don't know what single sign on is it's where you use one account to log in and then you're logged in everywhere else and so if you want to have single sign on the mechanism they're using here is saml then you have SIM so this is stands for system of cross domain identity management it's an open standard for automating the exchange of user identity information across different identity management systems a key use for SCM is to enable scalable and automated user provisioning and de-provisioning often integrated with Enterprise identity Services I know that's a
mouthful but I got a simpler summary for you here samle is about securely transmitting user authentication and authorization data for single signon purposes and Sim is about managing user identities across different systems to simplify account maintenance provisioning so if you remember those two at the bottom you'll know what they are um they didn't really ask at least I didn't get any questions that had to distinguish between the two it was more so you know where are these features available and it was for both the Enterprise cloud and Enterprise server um and one other thing I
want to just note is that these two uh these two things can complement each other in the same ecosystem because they're doing two different things um serving two different purposes so just understand that they Co co-mingle um and this is for Enterprises [Music] okay hey this is Angie Brown and this follow along I want to show you how to register um or book your uh GitHub certification exam so what you're going to want to do is go to the GitHub certifications page and you can do that by typing in G.I certifications and it should bring
you uh generally here I've never done this booking before so we're going to learn together but it should wouldn't be too hard and the first thing we'll want to do is register I want to point out that if we go down below we can see our certifications and get additional information but I'm going to go ahead and register here and I actually already have registered and the process is connecting your GitHub account um to here so my steps might be slightly different but more or less it's the same so you might have a page where
it's going to pop up it's going to show you that you have to confirm um a connection and go ahead and do that and you should end up in here and so so here is where we're going to see um uh our exams and so we have GitHub actions GitHub administrator advaned security and Foundations I'm interested in the foundations one so I'm going to go ahead and click into that and just understand that this price may change based on um you know based on uh if they change the price down the road but right now
it's price is 99 USD because there this exam is so new at the time I'm shooting this video it actually has a discount of $49 so you might not get that um it might just be $999 USD which is still very affordable but just understand that uh you know different times means different results let's go ahead and schedule this exam it's through PSI so if you've ever done the PSI exam that'll be pretty straightforward so we'll go ahead and schedule and take our exam and we have information to fill out so what I'm going to
do is I'm going to go through all of this and fill up my information and click this button and then I'll show you the next steps I just don't want to expose of the information so I'll see you back here in just a moment okay all right so I click through there and and now it's going to want me to um accept the uh PSI test taker site to my GitHub account I'm going to go ahead and authorize this I'm just going to stop and start again just because I'm not sure if it's going to
show personal information I don't really feel like uh um admitting it so I'm just trying to do that so I'll be back here in just a moment I'm going to head go ahead and click that green button there we go and it's brought us over to the PSI online store so this is a familiar experience at least for me let's go take a look at and see the uh available tests um you know sometimes there are tests that are online or are on site these days everything is both uh right right now I cannot take
these ones I'm not exactly sure as to why as I'm pretty sure the other ones did not have prerequisites but maybe GitHub changed it and you need to have the foundations before you take these ones that's totally fine I'm just click into this and see why that is the test requires author from the test sponsor so maybe since it's so new at this time it's not going to allow me to do this or it could be that it is a prerequisite there but what we'll do is go back here and click on the foundations and
notice that we have 99 USD I'm going to go ahead and continue booking actually going to click back there because I think there was a deal you're pre-approved uh you're eligible for this exam until 31224 not exactly sure why I chose that message that's totally fine so we have online proctored and on site I'm going to go ahead and go to continue booking um we have some information here uh please don't call me it doesn't go to me uh just annoying okay so do not call my phone number we'll go ahead and hit continue I
might even go WR that out so it's less of an issue for me I'm going to go ahead and type in Canada I am in Toronto time so going go ahead and type in Toronto that's uh Us East uh standard um and we'll go ahead and hit find and so now I'm looking for an available time that I wish to book um so I mean I could book it today that seems a bit crazy um do I want to do that am I crazy enough to do that today um maybe yeah you know what I
think I'm going to do it I'm going to book my um uh mine tonight for 900 p.m. I know that sounds really crazy but I'm going to do it we'll go ahead and choose 9:00 p.m. make sure your time is correct you're going to have an issue there I'm going to book this time slot and now I need to fill in my additional information I just happen to have a velure code here I'm just understand that you know you may or may not have it but I just happen to have it because I'm lucky we're
going to go ahead and fill in the arrest of information continue on if the review information has personal information I might not show it um but uh we're almost there so I'll be back in just a moment I just want to quickly show that you have two options credit card and PayPal so I'm going to go ahead and enter my credit card in I'm just going to go ahead and do that I'll see you back in a moment all right so yeah here is my confirmation I'm going to go ahead and purchase this so it
looks to be good make sure you confirm the time and make note of the time that you have to complete it as that is very important um again to today is February 1st where I am so that is the correct date I'm going to go ahead and click purchase and now my uh booking is confirmed it's probably a great idea to print your confirmation a lot of times you have to prep your environment so make sure you uh set up your remote online Proctor uh system and do your checks prior to this so if you
click that it should install an app on your computer um really make sure you do that ahead of time with these exams you should always have two pieces of government IDs so think passport and driver's license the reason I just tell you to have both of them is in case one is giving you a problem um so just make sure you have both on hand you really only need one but if you go to an inperson uh place they might want to have two pieces of government ID maybe one that's uh you know sometimes it
can be health card but mostly it's driver's license passport um it's going to vary per country but uh yeah uh give me good luck on my exam and I'll talk to you soon out
Related Videos
Docker Crash Course for Absolute Beginners [NEW]
1:07:39
Docker Crash Course for Absolute Beginners...
TechWorld with Nana
1,767,293 views
Coding Was HARD Until I Learned These 5 Things...
8:34
Coding Was HARD Until I Learned These 5 Th...
Elsa Scola
489,740 views
Crackling Fireplace & Smooth Jazz Instrumental 🍂 Warm Jazz Music at Cozy Fall Coffee Shop Ambience
Crackling Fireplace & Smooth Jazz Instrume...
Relax Jazz Cafe
So You Think You Know Git - FOSDEM 2024
47:00
So You Think You Know Git - FOSDEM 2024
GitButler
1,174,664 views
Music for Work — Deep Focus Mix for Programming, Coding
1:29:35
Music for Work — Deep Focus Mix for Progra...
Chill Music Lab
1,305,919 views
Passed the GitHub Foundations Certification in 1 day!
8:28
Passed the GitHub Foundations Certificatio...
Rishab in Cloud
13,785 views
Git Tutorial For Dummies
19:25
Git Tutorial For Dummies
Nick White
1,161,142 views
Calm Chopin | 15 Of The Most Relaxing Chopin Pieces
1:02:47
Calm Chopin | 15 Of The Most Relaxing Chop...
Classical Oasis
831,898 views
🔴 Let's build a Modern Portfolio with NEXT.JS (Framer Motion, Tailwind CSS, Sanity.io, React) | 2023
3:54:45
🔴 Let's build a Modern Portfolio with NEX...
Sonny Sangha
1,651,533 views
synthwave radio 🌌 beats to chill/game to
synthwave radio 🌌 beats to chill/game to
Lofi Girl
Google Cloud Platform Full Course | Google Cloud Platform Tutorial | Cloud Computing | Simplilearn
3:46:40
Google Cloud Platform Full Course | Google...
Simplilearn
1,015,954 views
Hans Zimmer EPIC MUSIC - Best of 1 Hour
1:04:09
Hans Zimmer EPIC MUSIC - Best of 1 Hour
Pierre T. Music
1,186,408 views
Think Fast, Talk Smart: Communication Techniques
58:20
Think Fast, Talk Smart: Communication Tech...
Stanford Graduate School of Business
40,674,660 views
*Next-door 10x Software Engineer* [FULL]
4:50
*Next-door 10x Software Engineer* [FULL]
Programmers are also human
647,877 views
40 Years Of Software Engineering Experience In 19 Minutes
19:10
40 Years Of Software Engineering Experienc...
Continuous Delivery
81,633 views
Iron Man Workshop Radio — Work Music for Concentration
Iron Man Workshop Radio — Work Music for C...
Chill Music Lab
The Best of Vivaldi - The Four Seasons
57:21
The Best of Vivaldi - The Four Seasons
Greatest Classical Music
511,579 views
GitHub Actions Tutorial | From Zero to Hero in 90 minutes (Environments, Secrets, Runners, etc)
1:25:47
GitHub Actions Tutorial | From Zero to Her...
CoderDave
228,818 views
PySpark Full Course [2024] |  Learn PySpark | PySpark Tutorial | Edureka
3:58:31
PySpark Full Course [2024] | Learn PySpar...
edureka!
472,240 views
Interstellar - Hans Zimmer (Soft Version) Sleep, Study, Relax - 1 Hour
1:02:05
Interstellar - Hans Zimmer (Soft Version) ...
Piano Pill
2,565,735 views
Copyright © 2025. Made with ♥ in London by YTScribe.com