Skip to content
CBT Nuggets
DemoBook a Demo

Introduction to Cisco DevOps

Full skill from CCNP DEVOPS. Preview the IT training 23,000+ organizations trust.

52m

Skill 1 of 24 in CCNP DEVOPS

Introduction

Let's discuss the details of the Cisco 300-910 DEVOPS examination and highlight what we plan to learn!

Setting Up Ubuntu

In this video we walk through the basics of getting Ubuntu up and running. Using virtual machines is a great way to test new technologies and Ubuntu has great support for many popular "devops" tools. Let's get to it!

Knowledge Check

(True or False) The Ubuntu Desktop installation provides a full graphical user interface.

Visual Studio Code

Using an Integrated Development Environment (IDE) is a great way to help simplify the development process. In this video we walk through the installation of the most popular IDE in the world - VS Code - and discuss how we can utilise remote SSH connections to manage our virtual machine.

Knowledge Check

Which command was used to install the SSH server?

Setting Up Git

Now that we have VS Code connected to our virtual machine, let's now install git! Version control is a massive component of "devops" and git plays a crucial role in this process. With git, we can track and rollback our files - and much more. Let's walk through the installation and see the tool in action!

Knowledge Check

Which of the following commands is used to "stage" git changes?

Merging Branches

One of the ways git maintains a smooth "timeline" of tracked events is through the use of branches. In this video we discuss how branches operate, how to create them, and then finally we learn how to merge changes between branches!

Knowledge Check

You want to create a new branch called "develop". Which of the following commands would you use?

Setting Up A Github Account

Github is the most popular platform for creating shared repositories. Github allows users to collaborate on projects by providing a centralised source where changes to code/configurations can be uploaded and downloaded. In this video we walk through the process of creating a Github account, opening our first repository and syncing our local git repository with Github!

Knowledge Check

Which of the following commands configures git to save credentials so that they are automatically used for future interactions with the remote repository?

Validation

Let's now validate what we've learned in this skill!

Knowledge Check

Is this your first time using git?

This interactive assessment is available in the full learning experience.

Want to answer questions like this yourself?
with no purchase required. Already have an account?

View Transcript

Introduction

0:00Hey friends and welcome to the implementing DevOps solutions and practices

0:04using Cisco

0:05platforms course.

0:07So I thought the best way to kick off this particular course is before we

0:10actually dig

0:10in to any of the details what we should do is spend a few minutes to go over

0:15what the

0:15exam actually entails.

0:17So really as we can see here as per the actual official page here, this exam is

0:21going to

0:22test your knowledge on DevOps practices.

0:24So we'll be looking at things like automated config management, we'll be

0:27looking at cloud

0:28environments, we'll be looking at microservices and things like container

0:32ization, so on and

0:33so forth.

0:34And the first thing to note about this particular exam is this part right here,

0:38the associated

0:39certifications.

0:40So pretty much this exam here is a concentration exam that ultimately you take

0:45on your way

0:46to becoming a Cisco certified DevNet professional.

0:50So if you happen to be unaware of how Cisco actually structures that exams,

0:53they really

0:54have three different tiers you have the associate level, which is the entry

0:58level, then you have

0:59the professional level, and then you have the expert level.

1:04So very roughly the associates for beginners, the professional is for

1:07intermediate learners

1:08and the expert is for expert learners.

1:11So really this will be an intermediary course focused on these particular

1:15concepts.

1:15Now we can actually look very briefly at the exam topics in a little bit more

1:19detail,

1:20let's just look here.

1:21As you can see, we have six different sections, the first section is all about

1:25CI/CD pipelines.

1:26So in this particular scale, all we're going to do is to focus on our

1:30preparation to begin

1:31learning these particular concepts.

1:32So effectively what we'll do is build a little development environment whereby

1:36we will build

1:37a virtual machine, which we can use to essentially download and install the

1:40software that we

1:41need.

1:42And we'll also quickly talk about some basic concepts relating to get, which is

1:45super

1:45super important with respect to DevOps.

1:48And we'll also look at getting ourselves set up with a get top account and we

1:51'll see how

1:52we can actually create repositories on get top.

1:54And then once we've done that in the very next scale, we will begin tackling

1:57all of the

1:58content that we see within this particular chapter care.

2:01So you see we have a focus on things like GitLab, things like Jenkins, CI/CD

2:06pipeline

2:06failures, the way we can roll out CI/CD pipelines, all that type of good stuff.

2:10Then the next section we will visit will be the packaging and delivery of

2:14applications.

2:15And this will really be looking at things like Docker and containerization.

2:19And then the next stage will begin down to automating infrastructure.

2:23Once again, notice the concepts of CI/CD pipeline still very prevalent, things

2:26like Git, things

2:27like GitHub will also be very relevant here.

2:30But we'll also be looking at particular tooling such as Ansible and Terraform.

2:34Then we'll briefly look toward the cloud environments.

2:37We'll get to see things such as AWS, which is Amazon Web Services, a super

2:41super popular

2:42cloud environment provider, as well as a technology known as Kubernetes, which

2:47is a great way

2:47as you come to learn to manage your containers.

2:51And then we have the subject of logging, monitoring and metrics.

2:54We'll get to look at things such as collaboration technologies such as Cisco

2:58WebEx and how we

2:59can interact with this programmatically using its API and Python code.

3:04Once again, we'll be looking at the technology known as Kubernetes and CI/CD

3:08pipelines.

3:09This is a huge concept within this examination.

3:11But of course, we're going to have a very heavy focus on, as you can see here,

3:15monitoring,

3:15logging.

3:16So that's all very utilizing things such as dashboards, so on and so forth.

3:20And then the final topic is a rather short one, as we can see here.

3:23And it's all focused around security.

3:25Now, once again, what do you see security as it relates to CI/CD pipelines, as

3:30well as

3:31how we can actually implement secure software development life cycles.

3:35So quite honestly, this is a very modern and relevant examination.

3:39So much of the tooling that you see here, so much of the concepts and practices

3:42are really

3:43at the forefront of the world of automation and configuration management.

3:46So basically what I'm saying is that it should be a blast to go through.

3:49Now, before we begin, like I say, we're going to have to get ourselves up and

3:52running with

3:53a nice development environment.

3:55So how about we talk about that in the very next video.

Setting Up Ubuntu

0:00Hey friends, so in this particular video, what I want to do is to talk to you

0:04how we can get an

0:05Ubuntu Virtual Machine up and running pretty much so that you have the same

0:09environment at home

0:10as I'm working with right here. Now I will say you do not have to use Ubuntu if

0:14you really don't

0:15want to, it just makes things a little bit cleaner, a little bit easier if you

0:19happen to be using the

0:20same operating system as me. So this is going to be the solution that I'm going

0:23to recommend.

0:24Now in order to get Ubuntu up and running, I'm going to use some type of

0:28virtualization software

0:29because I actually do not have a Windows machine or rather a Windows machine. I

0:33actually do not have

0:35a Linux machine running right now. I happen to be running a MacBook. Now quite

0:38simply,

0:39when I'm doing development, when I'm doing testing and demos, I don't want to

0:42work on my host machine

0:43pretty much. I don't want to risk breaking anything. And by the way, many of

0:47the most popular DevOps

0:49tools happen to be built for Linux. So it does make sense and makes things

0:52really quite easy.

0:54If I'm just working from that particular environment. So like I say, I'm going

0:57to be doing some type

0:58of virtualization. So what we need is some type of virtualization software. So

1:03you can use any

1:03solution you so wish, perhaps you want to use maybe say VMware, which is a very

1:07common one.

1:08If you happen to be using a MacBook, you would want to install VMware Fusion.

1:12If you happen to be on

1:12Linux natively or you happen to be on Windows, you would want to have VMware

1:17workstation. Or you

1:18can go and download another very well known and popular choice. This is Oracle

1:22's VirtualBox.

1:23Either or it's going to be fine. Just take your preference. So choose one of

1:27your solutions, get

1:28your virtualization software up and running. And now let's discuss what we

1:32actually want to be

1:33installing. So check this out. Now I'm just going to search for Ubuntu desktop

1:37downloads. So the

1:38desktop means I'm going to have the full graphical environment. I'm going to be

1:41able to use things

1:42like my web browser, so on so forth. Whereas if you want a more minimal

1:46installation that uses

1:47less resources that just got a basic command line interface, you can just

1:50download the server

1:51version, but I wouldn't really recommend you do that because at times we're

1:54going to be using the

1:55functionality of the actual desktop itself. So it makes sense to actually have

1:59one natively on the

2:01box. Now one last point. What I happen to be using is a MacBook M1. Okay, this

2:06is an M1 chip.

2:07This is Apple's own silicon. Because of this, I have to download a very

2:11particular image.

2:12I'm going to have to make sure that my image is an ARM architecture. Whereas if

2:17you happen to be

2:17running Windows or an older MacBook that uses an Intel processor, you can just

2:22download the regular

2:2364 bit installation. So in the case of the Windows downloads or the older

2:28MacBooks,

2:29you would click this link right here. And as you can see here, we have the

2:32Ubuntu desktop download

2:33and here it is here. And you just simply click this link and then you specify

2:37where you would

2:37want to save the image and just save and download it. Now in my case here, I

2:41want to get a very

2:42particular version. So what I'm going to also add on is the word ARM. Okay. Now

2:46if I just go for

2:47Ubuntu for ARM right here in this particular option, all that's given me is the

2:51Ubuntu server for

2:52ARM at the moment. Maybe when you watch this video, things will be a little bit

2:55different.

2:56But right now all I have is the server images without the actual desktop. So

3:00what I want to do

3:00here is if I go back, all I'm going to search is for this right now Ubuntu, J

3:02ami Jaylefish

3:05download ARM and I'll just collect this link right here. And if I just scroll

3:10on down,

3:10what we can see here is on the right, we actually have a 64 bit ARM

3:14architecture and it's a desktop

3:16image. This is the one that I want to collect. So let's click this here and all

3:19I will do is

3:19choose save. And now as we can see here, the download begins. So once you've

3:23done that, go and open up

3:24your virtualization software. In my case, I'm using VMware. So I'll just go and

3:28add a new machine.

3:29I'll choose the image that I want to be using. And if I scroll on down here as

3:33the Jami desktop

3:34ARM 64 image that I want to use, I'll choose continue. And then you can

3:37customize the settings

3:38for whatever you want. I'll just call this Ubuntu to and if you so wish, you

3:42can do things like

3:43add more memory. So on so forth. But quite honestly, the defaults should be

3:46okay. So once that's done,

3:48just start the machine and all I will do is try or install Ubuntu. So your

3:51environment might look

3:52a little bit different in my case here and present it with a desktop. And all I

3:56have to do in my case

3:57is just double click this link. Ultimately, this is the point we want to get to

4:00. So I'll just choose

4:01my language, which is English, choose continue. In my case, I'm in the UK so I

4:05'll select that. But

4:06of course, choose whatever one fits your scenario best. And all I want to do is

4:10to make sure I've

4:10got a normal installation, okay, and then choose continue. And I want to erase

4:14disk and install

4:15Ubuntu and then choose continue. Now I'll just choose my location, which is

4:19going to be in the

4:19United Kingdom. So I will choose London as the time zone. And now I'll give it

4:23a name. So in my

4:23case, yeah, my name will be IPV zero. Just give the computer a name. If you so

4:27wish, call it server

4:28or system or my computer, whatever you want. It doesn't really matter. I'll

4:32just say server.

4:33And now just choose a password. So I'll choose a fairly simple password because

4:36it is just a

4:37lab environment after all. And I'll choose require my password to log in and

4:40then choose continue.

4:41So we just give it some time to copy over the files are necessary. So the

4:45installation is now

4:46complete. I will just choose to restart. So if you happen to be experiencing

4:50the same thing that I

4:51am right now, you might think that something is wrong. We see a failure, but

4:54don't worry about it.

4:55In this case here, all you have to do is press enter. And then if you give it a

4:58moment to reload,

5:00it begins to boot up once again. And now as you can see here, I actually have

5:04my log in. So if I

5:05hit enter and then type in the password that you created when the account was

5:08made and then hit

5:09enter, then just choose skip next, next, next, and done. And all I'll do is go

5:14into my preferences,

5:15go to unnamed. And all I'm going to do is just change the font size to be a

5:19little bit bigger.

5:20So going here, move this up a little bit. Now maybe your installation was a

5:23little bit different

5:24depending on the platform that you were using. But broadly, those are the

5:28configurations that

5:28that you would want to set in order to get yourself up and running.

Visual Studio Code

0:00So here's the thing now we have an Ubuntu machine up and running.

0:03What I now want to do is I want to install what is known as an IDE.

0:07This is an integrated development environment and basically this is just an

0:11application that's going

0:12to help you write your code, manage your configurations for DevOps, that type

0:16of thing.

0:16So the one that I'm going to recommend you install is VS Code. This is a super

0:20popular solution.

0:21As you can see, you can download it for Mac, Linux or Windows. So here's the

0:25thing.

0:26I actually have my MacBook right here and I also have my Ubuntu virtual machine

0:31.

0:31Now as it transpires, I'm going to actually download the software directly onto

0:35my host

0:36machine, which is my MacBook. That means that VS Code will be on this machine

0:39and I'm actually

0:40going to use an SSH connection to SSH from the application directly into the

0:44virtual machine so

0:45we can actually use the app on the host machine and it will actually make

0:50changes on the virtual

0:51machine. But if you want to log in to the virtual machine itself and just

0:54download VS Code directly

0:56on the Linux box, you can do so also. This is just my preferred way of doing

0:59things.

1:00I like to work within my actual host machine. So this is the way I'm going to

1:03recommend you

1:04handle this. So depending on your environment, select Windows or if you happen

1:08to be on Linux

1:09natively, select if you're on Debian based systems such as Ubuntu or a Red Hat

1:13based systems such as

1:14Fedora, Red Hat, Rocky Linux, so on so forth. But in my case here, I have Mac

1:19OS.

1:20So I have the Apple Silicon so I'd want to download this. So all you have to do

1:24is download the software,

1:25open it when it's complete and just follow the installation steps. So once you

1:29run the application,

1:30you should see something quite like this. Now mine will look a little bit

1:33different because I

1:34have been using this application for a long time and you're going to see old

1:37configurations here.

1:38Do not worry about it. What I want you to do is on the left hand side, go and

1:44click remote

1:45Explorer. Now what I'm going to do is I'm going to go over to my Ubuntu machine

1:49and I want to get

1:50two pieces of information. I want to get the IP address of this machine, which

1:53in my case here,

1:54if I type the IP adder command, I can see this is the address to connect to

1:57this device. So all

1:59I will do is just copy this right now. And now the next thing I want to do is

2:03to type sudo apt install

2:05open SSH hyphen server. This is going to effectively allow SSH connections into

2:10this particular machine.

2:12So I would just say why and to enter again. And once you've done that, if you

2:15take the command

2:16systemctl status on SSH, you should see that SSH is now active and running. So

2:23if you press

2:23Q2 quit, what I want to do is to now go back to my VS code. So here I am. And

2:28what I want to do is I

2:29want to look at my SSH targets and click the plus sign I'm going to add in new

2:33targets. And all I

2:34want to do is I want to type in how I would log in via SSH to that particular

2:38device now recall.

2:40In my case here, I have the address of 192168.168.168.138. This is the address

2:46I want to connect to.

2:47And this is my login username IPV0. In your case, choose your own username. So

2:54all I will say is SSH

2:55give my username, which is IPV0. And then the add symbol and then type in IP

2:59address. So I'll do

3:01add 160.138 and I hit enter. So I will just hit enter. And now I will choose

3:07connect down the

3:08bottom right here. Now for whatever reason it did not connect to that was a

3:13little bit of a bug. So

3:14all I will do is right click and I'll just choose connect to host in a new

3:17window. So now it's

3:18giving me the fingerprint. Do I want to continue? I will say continue. And now

3:22I just type in the

3:23password for my username. Okay. So if I hit enter give it a moment, you can see

3:27it in the right hand

3:27side we're downloading the VS code server. And now if I go to view and let me

3:31just zoom in a little

3:32bit so you can see a bit better. And then I get down to terminal. What you can

3:35see is we've

3:36actually opened up a terminal on the Ubuntu machine right here. So if I do an

3:40LS we can see my documents,

3:42my downloads so on so forth. If I do an IP adder notice the IP address is

3:46showing IP address of

3:47the Ubuntu machine basically it's like I'm working within that directly

3:51utilizing VS code. And the

3:53cool thing is if I just go up to VS code, maybe say new file inside the fear I

3:57have my VS code

3:58text editor and I can just say this is just a test. And if I just press command

4:03S or control S to

4:04save it, I can now specify where I want to save it in. I can just save it and

4:07let's maybe say my

4:08home directory and just call it my file dot txt, hit return. It's now saved. If

4:13I go back to my

4:15terminal right here, doing LS, we can see here indeed we have my file dot txt

4:20and I can cat the

4:20file to open it up and we can see the content. And once again, if I actually go

4:24back to the virtual

4:25machine, just directly to it to do an LS, we can see the file has actually been

4:29created on the

4:30machine itself. And we can see once again, the content is just there. So this

4:33is going to be the

4:33environment I'm going to recommend it's going to give you an option for

4:36utilizing things like

4:37plugins, which is going to help you manage, say, for example, configurations

4:41with respect to

4:41tools like terraform and Ansible, so on, so forth. So now that we have our

4:45environments up and running,

4:46let's now talk about a very important skill that we need for DevOps operations.

Setting Up Git

0:00Okay, let's talk DevOps.

0:02To with respect to DevOps, we're going to be learning about things such as CI/

0:06CD pipelines.

0:07We'll learn about configuration management tools.

0:10But there's one particular technology that you're going to be utilizing over

0:13and over

0:13again when you invoke these types of technologies or approaches.

0:17Now what exactly is this?

0:19Well, we're talking about something known as Git.

0:22So because Git is so often used because it is so integral to CI/CD pipelines to

0:27DevOps,

0:28so all I want to do right now is to take a little bit of time to ensure that we

0:31're all

0:31up to speed with the basics of Git.

0:34We don't have to worry about too many advanced concepts, certainly not.

0:38But having some familiarity with the absolute basics, if you want to work in

0:41the world of

0:42DevOps, having this under your belt really is non-negotiable.

0:45So with that said, let's get hands on.

0:47Let's do some operations with Git.

0:50So very first thing that we're going to be doing is actually installing Git on

0:53our system.

0:54So I will just say sudo apt install.

0:57Git and to enter, give a moment, hit Y and enter again.

1:02Now Git is going to install.

1:04And boom, we now have the software.

1:05Now what we're going to have to do at the beginning is to actually specify a

1:10name as

1:10well as an email that we can associate with our Git operations.

1:15Pretty much Git is going to allow us to implement what is known as version

1:18control.

1:19So if we have a particular file, a particular piece of code, that type of thing

1:23, if we want

1:24to make a modification to this, then we want that modification to ultimately be

1:28tracked.

1:28Because you know what happens if you write bad code, you may have to reverse

1:33gears and

1:33go back to the original working version before you made the breaking change.

1:38Now basically when we make our changes to our files that are going to be

1:41tracked, they're

1:42going to be associated with a particular user and a particular email address

1:45who made the

1:46change on the team.

1:47This is information that we want to configure right now.

1:50Now there are two ways in which we can do this.

1:53We can specify global configurations and it would be helpful if I could write

1:56that correctly.

1:57Let's try that again.

1:59Global conflicts.

2:00Now this is going to mean that the name and email is going to be the same

2:05configuration

2:06for all of our repositories and our repositories.

2:08You can just imagine them as like a little folder or a parent folder that

2:13contains all

2:13of the information about your project, all of the sub folders, all of the files

2:17, that

2:18type of thing.

2:19And the repository is the thing that is going to be version controlled and

2:22tracked.

2:23Now as you may suspect, you can have different projects, you can have different

2:27repos.

2:28And if maybe you wanted to have a different username for every single

2:31repository and a

2:32different email for a different repository, that type of thing, you could

2:35configure the

2:36configuration to be on a more individual basis.

2:39But in my case here, everything is on my machine right now.

2:42I want to have it associated with a particular user name of IPV0, which is my

2:46username, and

2:47another particular email, which is my email address.

2:50So let me go and show you how we can get this up and running.

2:53Let me just take clear to clear the stream and I'll just say get config.

2:56And I'm going to say dash dash global because this is a global configuration.

3:00And I will say user dot name and then in my quotation marks, I'm going to give

3:04my username

3:05that I want to associate.

3:06So me is IPV0, let's just enter.

3:09And now we have the configuration.

3:11If I just happen to say get config dash dash list and hit enter, look at this

3:15right here.

3:16This is my get configuration so far.

3:18This has been successfully added.

3:20Now let's add in the emails.

3:21I'll say get config.

3:22Again, it's going to be a global configuration.

3:25This time I will say user dot email.

3:28And again, in my quotation marks, I'll just type in my email address.

3:31Okay, so I'll just put this in.

3:33And again, hit enter, Rwup list the configuration.

3:36Now we can see we have both email and username configured.

3:39Perfect.

3:40What I now want to do is I want to create a little project.

3:43So to speak, it's a kind of a pseudo project.

3:45So I want to do a real project, just effectively a little folder so I can show

3:48you some basic

3:49version control information or version control operations when working with

3:54files.

3:55So what I will do here is I will just create a little directory using the mkdir

3:58command

3:59and I'll just say my test project.

4:01Okay.

4:02The name itself doesn't actually matter.

4:04Call anything used to wish.

4:05Now I'm going to cd enter that directory, which means I will move into the

4:09directory.

4:10And if I do an LS to list the contents of that directory, nothing is appearing

4:14on the

4:14screen because nothing is actually inside this directory.

4:17Now if you actually use a very particular switch in Linux and say LS dash LA,

4:22it will

4:23actually show you anything hidden within the directory.

4:26Now right now again, nothing of notes.

4:29So what I want to do is I actually want to initialize this folder as a get

4:33repository

4:34so to speak.

4:35So what I will do here is I will say get init.

4:38And if I just hit enter, what it says here is we have initialize an empty get

4:43repository.

4:43And now it says empty because we don't actually have any files.

4:46Again, we don't list a list.

4:48We see nothing but now if we actually list the hidden contents with a dash LA

4:52once again,

4:53look what we have here.

4:54We actually have this dot get folder.

4:57Perfect.

4:58So check this out.

4:59What I want to do is I want to go and create some files and I'll do some

5:03version controlling

5:04of these files.

5:05Okay.

5:06So what I will do here is I'll create a file.

5:07I should call this my first file dot txt.

5:10Okay.

5:11Not all I will do is go into VS code.

5:12I'll open up the file.

5:13Go to my test project and then click the file right here.

5:16And all I will do is say this is my very first file, exclamation mark.

5:21And I'll just press command S to save this particular file.

5:25Or if you still wish by the way, what you can do is go up to the file here and

5:28then get

5:28down to save.

5:29That is also going to work.

5:30Now what I will do is I'll create a new file.

5:32I'll just save my second file dot txt, go up here, open it up and go into the

5:37second

5:37one and just say this is my second file.

5:40And again, we can just go and save this.

5:42Perfect.

5:43If I do an LS, be list the contents of my directory, we can see we have my

5:46first file

5:46and my second file.

5:49Now right now, these particular files will still do exist in a get repository.

5:53They're not actually being tracked by a git.

5:55And the way I can test this is a very important command you want to remember.

5:58If I say get status, what we can actually see here is we have two untracked

6:03files within

6:04our get repository, meaning that if I happen to make a change to a particular

6:08file and

6:09for whatever reason, I want to go back to an older version, that is not going

6:12to be possible

6:13with git because the file has not been tracked at all.

6:15So let's actually add these to our get repository so that they are tracked.

6:19Now the command we want to do here is to say get add and then we can add in the

6:23name

6:23of the file.

6:24I can say get add file one dot txt or rather not fail one, my first file,

6:29apologies there.

6:30And I can just hit enter and that's going to add the first file.

6:33If I now say get status and hit enter, look at this right here.

6:36We have changes to be committed.

6:39This is for the fail we're tracking but still right now my second file is untr

6:42acked.

6:43So what are we going to do?

6:44We can again say get add my second file.

6:47Now this will work absolutely but if you happen to have many, many files you

6:51don't want

6:51to have to continue to repeat yourself, what you can see is get add and then do

6:56an asterisk.

6:57And that will just tell get to track everything within this directory.

7:00So if I hit enter and now you say get status or once again, now we can see we

7:05have our

7:05two files being tracked and ready to commit.

7:08So when we say commit, we are essentially committing them to the get records.

7:13So every major change you make to a file you want to effectively record it and

7:18get and

7:18the way we do this is via the commit.

7:20So now let's commit these.

7:21We'll say get commit.

7:22We'll say dash aim for specifying a message along with the commit.

7:27Now just to just testing my first commit will be my message.

7:30And then I specify the files that I want to commit.

7:33Now similar to when we added the files or rather to use the correct terminology

7:37when

7:37we staged the changes, this is effectively what we want to do before we make

7:41our commits.

7:42We want to stage the changes which is kind of like preparing the file to be

7:45committed.

7:46What I can do is just specify the name of the file I want to commit.

7:49I can say my first file and then I could maybe say my second file or if I so

7:53wish I can once

7:54again just use my asterisk to say hey commit everything all files within the

7:58directories

7:59if I hit enter.

8:00Now we can see here we have two files changed, two files have been inserted and

8:04now these

8:05files as they are right now have been committed to the get record.

8:09Here's the content of the first file and here's the content of the second file.

8:12Now if I just go back into my second file and I say this is some more configs.

8:17Let's imagine it's a configuration file for example and say the changes.

8:21If I say get diff on my second file what I'm asking get to do is to check if

8:26there's

8:26any differences between the committed state of the file and its current state

8:31basically

8:32has anyone made any modifications.

8:34So let's hit enter and we can see here the original file initially just said

8:38this is my

8:38second file and that has been removed so to speak it's not really been removed

8:42but get

8:43sees it as a removal because we have a new entry and the line now says instead

8:47this is

8:47my second file this is some more config.

8:50So we can see here straight away this here is the new content of the file

8:54itself.

8:55Now let's just say for whatever reason we liked this configuration change.

8:59We had done sufficient testing we like it we want to save it.

9:02So what I want to do is I want to commit it but before I commit it what am I

9:06going to

9:07have to do I'm going to have to stage the changes.

9:09So I'll say get add to stage the change and again I can use my asterisk to

9:14stage all potential

9:15changes or you can just be explicit and say I want to stage the changes for my

9:19second

9:20file.txt particularly.

9:22So let's stage the changes and now what I can do is I can say get commit dash

9:27end to

9:27specify my message and let's just say the message is updated configurations and

9:31then

9:32we specify the name of the file my second file dot txt and bam we now have a

9:37new commit

9:38for that particular file and you'll notice now if I take the command get log we

9:42actually

9:42see a log of all of these changes here is the first commit that I made we can

9:47actually

9:47see the time and the dates and then we can see the second commits whereby we

9:51have our

9:52updated configurations which is the message we supplied and again time dates

9:56and the author

9:57as the username we configured and the contact as the email we also configured.

Merging Branches

0:00Now that we know how to stage and commit our changes,

0:03what I now want to do is to briefly talk to you about the concept of branches.

0:07Now branches are one of the most important things to understand about Git.

0:10So let's find out why.

0:11Now conceptualize our commit history as kind of like a timeline of events.

0:17Every time you happen to commit the changes you make,

0:21you effectively add in a type of snapshot of the version of that file into the

0:27timeline history.

0:28So imagine you make a commit right here, okay?

0:30And then some time passes and you make some changes to a file,

0:33you'll like the changes and you want to take that snapshot of that file once

0:37again

0:37so you have another commit.

0:39And again, maybe later you update some configurations once again,

0:42you like to commit these changes so you commit it once more.

0:45So this here would be the latest version of the file.

0:48Now right now this is all in one timeline.

0:51You have the current state of the file,

0:52you have a snapshot of an older state of the file

0:55and a snapshot of an even older state of the file.

0:58Now this timeline here is referred to as a branch.

1:01And in fact the timeline that I'm operating on right now is known as the master

1:05branch.

1:05Now you might also hear the term main branch,

1:08which is a more modern name for effectively the same thing.

1:10You'll tend to see both in the real world.

1:13Now conceptualize this, imagine we've got an entirely new file, okay?

1:16So you make a change to this particular file here as a commit

1:19and then through some time you add another change.

1:22Now let's say these are representing configurations

1:25of maybe say your infrastructure, okay?

1:27Maybe it's a terraform configuration file, that type of thing.

1:30Now suppose the changes that you are proposing

1:33are in essence experimental.

1:36Basically you're not really sure if these configs are going to work

1:38or blow up the network.

1:40So you don't really want to commit these changes

1:43into the history of your main or master branch.

1:47So if you don't want them in the actual branch itself,

1:51what we would like to do is to split out and create a second timeline

1:56which would be our second branch.

1:58And this is exactly what I'm talking about right here.

2:00So imagine as opposed to just going and you know,

2:03going and making a third commit into the master main timeline,

2:07instead we will take the information from the previous commits

2:11and we'll actually branch off and create a secondary timeline right here.

2:15So now here we're creating a new timeline

2:18and now we have our commit with our experimental changes.

2:21Now this new branch or new timeline can have any name you so much,

2:25you could call it the test branch or maybe the dev branch

2:28for development, that type of thing.

2:29These types of names are very, very common.

2:31And let's just say you just want to continually test out these new features

2:35and you want to keep making snapshots that you can effectively reverse back to.

2:38So whilst in this test branch, you make some more changes

2:41to the configuration, you're not quite so sure yet.

2:44So once again, you create a new commit within the test branch.

2:48Right here is our new timeline.

2:49Now eventually what might happen is you gain a lot of confidence

2:53in these changes in the test branch and you say,

2:55hey, I like these changes so much that I actually want them to be

2:59in the timeline of my main branch.

3:01And what's going to happen is you can effectively take these changes

3:04and you can in essence merge them into the main branch once again

3:09and then you continue on your timeline of the main branch once more

3:12until of course you again want to branch out,

3:15switch to a test branch or development branch

3:17and begin making more experimental changes.

3:20This really is the concept that I want to highlight here

3:22and it's very, very important in the world of DevOps

3:25and in particular with things like CI/CD pipelines.

3:28So let's actually look at it and practice them.

3:31Now you'll notice or you may have noticed what I say

3:33when I happen to download Git, or rather not do you look at it,

3:37when I happen to initialize my Git repository

3:40there actually was a little bit of text that came up on the screen

3:43and it told me the name of the branch that I happened to create.

3:47Now we can actually see this branch if I just take the command

3:49Git branch and to enter.

3:51Look at this right here, we see all of the branches that we have.

3:54Now I only have one branch which is the master branch

3:57and we know we are on that particular branch

3:59or in that particular timeline because it has an asterisk next to it.

4:03As it stands right now, whilst I'm operating on the master branch,

4:06well be committed into that timeline.

4:08Okay, so let's go into let's say my second file once again.

4:11Now suppose I want to add in some new configurations.

4:14Now of course these are not actual configurations

4:16I'm just simulating them and suppose that the configurations

4:20that I was going to make are a little bit dodgy.

4:22I'm not quite so sure about them okay.

4:24So I think here I'm going to make these changes

4:27but I don't want to do this on my master branch.

4:30So here's what I do.

4:31I first go and create a new branch entirely.

4:33So what I can do here is I can say get check out

4:35and try to remember this command dash B to specify the name of the branch

4:39that I want to create and now I just list the name that I want to choose.

4:42So I'll just maybe say develop branch okay.

4:45So I hit enter and look at what we actually see here.

4:47It says switched to a new branch develop.

4:50So we didn't just create the branch, we also created it and switched to it.

4:54So now if I take the command get branch,

4:56we see the two branches that we have created and now next to the asterisk

5:01we see the develop branch indicating that we're on this particular timeline now

5:05.

5:05So now that I'm on the develop branch, if I just happen to say get log,

5:09notice we actually see the previous history.

5:12But anything we do from this point on is not going to affect the master branch

5:16unless we perform what is known as a merge operation.

5:19So now that I'm on the test branch or the develop branch rather,

5:22what I will now do is put in my rather experimental configuration.

5:25So I'll just say this is some dodgy config that I'm unsure about.

5:29Cool. So let's save this.

5:31If I say get diff on my second file, we can see here we have some changes made

5:37and let's say I want to commit these changes.

5:39So I stage them.

5:39So I'll say get add asterisk and hit enter.

5:43And I now say get commit dash M for the message.

5:46And I'll just say testing out some new configs.

5:48Okay. And now specify the name of the file that I want to commit.

5:50So I enter here we have our new commit.

5:52Now if I just say get log at this point,

5:54look at what we actually see here.

5:55We see the previous history and look at the actual brackets here.

5:58We see this is the master branch.

6:00But now this particular commit here is inside of the develop branch.

6:05See that right there.

6:06Now if I do an LS, we can see we still have all of our files.

6:10Now watch this in particular.

6:11Let me just look at this right here.

6:12Okay. Let me clear the screen.

6:14Now again, the branch that I'm on right now is develop branch.

6:17And this is the version of the file within that branch.

6:19Now if I just switch back to my master branch,

6:23and I can do so by saying get check out.

6:25And then we don't use a dash B.

6:26We're not creating a new branch.

6:27We just specify the name of the branch that we want to flip to.

6:30If I say master, watch what happens to the file above as I hit enter.

6:35Look at that.

6:35See that now we've switched to master branch.

6:38And the content within this particular file is actually unchanged.

6:42We don't have this new weird potentially dangerous development feature inside

6:47the file.

6:47We just have the well tested and secure version of that file so to speak.

6:51So again, LS, we see your files.

6:52If I say get log, notice in the get logs, if I scroll on up,

6:55look at the last commit within this particular timeline.

6:58It's just the updated configurations.

7:00Whereas again, if I go down, if I say get check out develop and hit enter,

7:05look at this straight away.

7:06Suddenly the configurations come back.

7:08So let's for whatever reason say we test these configurations.

7:11We no longer think them to be dodged.

7:13We actually have strong confidence that these happen to be pretty good

7:16configurations.

7:17And we want them to be present inside of our main timeline.

7:21The main versions of our configuration files that ultimately will be used in

7:25production.

7:25Here's what I want to do.

7:26I want to perform this merge operation.

7:28Now the first thing I want to do is I want to make sure

7:32that I'm on the branch that I want to be merging into.

7:34So I want the changes to be merged into the master branch.

7:37So right now if I say get branch, we can see I'm on develop.

7:40So what I want to do is to first switch back to master by saying get check out

7:45master.

7:45Now if I say get branch, the asterisk tells us we're on get master.

7:49So now what I will do is from the master branch, I will just say get merge.

7:55And then the name of the branch that I want to merge in.

7:57So I want to merge in the changes from the develop branch.

8:00So I'll say get merge develop and to enter.

8:03Suddenly the new configurations are present but they're actually present within

8:08the main

8:09branch now or the master branch.

8:10So if I say get branch now, I can see I'm on the master branch.

8:14And look at this right here.

8:15The once experimental configurations are now present in the main timeline.

8:19And now again, if I happen to say get log, as we can see here,

8:23now we have this new commit.

8:25And we can see here this was from the develop branch now in master branch.

8:28It really is a very important concept to understand when working with

8:32configuration fails called that type of thing.

Setting Up A Github Account

0:00So here is the thing. It is very very unlikely that you're going to be dealing

0:04in a DevOps

0:05environment, any silo, meaning that you're not going to be working all by

0:09yourself, much

0:10more likely instead you're going to be involved in some type of collaboration.

0:15So in this

0:16particular video, what I want to do is I want to highlight the concept of

0:19having a remote

0:20repository that is ultimately going to act as a type of centralized source and

0:26an intermediary

0:27point between a whole bunch of different members of a team. Because right now

0:31it's all very

0:31well and good. Well, I on my machine right here make all of my changes that are

0:36all version

0:36controlled. I've got my own branches. But let's say I happen to be a member of

0:41a team whereby

0:42we're all contributing to the same type of code, the same code base or maybe

0:46the same

0:46configurations. How on earth am I going to be able to make my nice version

0:50control changes

0:52and have them be shareable and accessible with other members of the team? Not

0:56everyone

0:56after all is going to have access to my laptop nor should they. We need a way

1:00to effectively

1:01transfer our changes and make them available to other people. So imagine this

1:06here I am

1:07right here on my machine. Okay, let's just say this is John's laptop. And let's

1:11just

1:11say I've got an application called application dot py. It's a Python file. Okay

1:15. Now I may

1:16change this to my file on this particular machine. But really this is just one

1:20file

1:21in a larger project. So let's say we've got another developer called Samona.

1:25Now Samona

1:25would like to have access to the changes that I've made in my particular file

1:30so that she

1:30has the updated version. Now how are we going to effectively pass these changes

1:34about because

1:35maybe Samona has got another good idea to add to the code base and she also

1:40wants to

1:41effectively make that change available to me also. So step in the world of

1:46remote repositories.

1:47Now the most well known remote repository perhaps you've heard of it is one

1:51called GitHub. Never

1:53ever confuse us with get itself. Okay, just because the name has get is not the

1:57same thing.

1:58But it does integrate well with get itself. So imagine this as the architecture

2:02. Let's

2:03imagine we've got the big wide internet out there. Okay. And this is where

2:07GitHub actually

2:08lives. Now I hear with my laptop make some changes onto let's babysate my

2:13production branch.

2:15So over here I make some changes to my application. Now what I want to do is I

2:19want to effectively

2:21push those changes to a remote repository so that they happen to be available

2:25on the

2:26internet. Okay, so I'm pushing them towards GitHub. Now that they're available

2:30on GitHub,

2:31what Samona can do here on her computer she can send a request to GitHub to in

2:36essence

2:37pull in the changes so she gets a copy of my code as it's been updated on her

2:42local machine.

2:43And then when Samona wants to make a change to the code base she can commit

2:47those changes

2:48and then push these new changes to GitHub. And as we're building my building my

2:52building

2:53what do I want to do? Well, I want to get a copy of the latest change. So once

2:57again

2:57I pull in some money changes and now I can begin working on these version

3:01control files

3:02on my system too. And of course you can extrapolate this to include many more

3:06developers, many

3:07more contributors. But in this case here just with two people you can already

3:11see the advantage

3:12of having this centralized intermediary point whereby we can effectively post

3:16and retrieve

3:17our data. So what I want you to do is to go to GitHub and create your very own

3:22GitHub

3:23account. So let's go and do that then. So if you just search for GitHub on

3:27Google and

3:27click the top link right here what I'm going to do is I'm going to choose

3:31either sign in

3:32or sign up if you don't have an account you want to sign up of course just go

3:35through

3:35some of the details provide some information like an email address your

3:39username that's

3:39type of thing have a password. But if you have already created an account which

3:43I have then

3:45you want to choose to sign in. Okay, so now I have logged into my account what

3:49I'm going

3:50to do is I'm going to select new for a new repository let's click this here.

3:54Now all

3:54I'm going to do is give the repository a name. Let's just call it my app. Okay,

3:59and

3:59we just say repository for my application. So imagine this is where all the

4:04code for my

4:05application is going to live. Now I can specify whether or not the repository

4:09is going to be

4:10public or it's going to be private. Now if you don't care about people seeing

4:14your code

4:14if you want it to be open source and fully shareable then you can make the code

4:18public

4:18whereas some companies some teams they would prefer their code base to actually

4:22be private.

4:23In my case here I will just choose a public repository. Now all I will do is I

4:27will choose

4:27and add a read me file to initialize the repository and now all I will do is

4:32choose create repository

4:34and bam that is us we've now created a repo for my repository we just don't

4:38really have

4:39any real information and it no actual code exists quite just yet. So this is

4:43our code

4:44base out in the insonnet. Now what I want to do is I want to get a copy of this

4:49code

4:50or rather a copy of this repository on my own local machine. So what I'm going

4:54to do

4:54here is if I go to code and click this now I can just copy this particular URL

4:59which is

5:00the URL to the repository and all I will do is I'll go back to my terminal. Now

5:06right

5:06now as you can see I'm inside of my test project this is a completely separate

5:10repository

5:11this is not the one we want to be working on. So all I will do is I will say cd

5:14to take

5:14me back to my home directory and what I want to do is I want to clone this

5:18repository

5:19so I'll just say get clone and then paste in the URL. If I hit enter we're

5:24going to download

5:25that repository so that it's now accessible to me on my local machine. Now

5:29because this

5:30is a public repository I didn't have to type in any type of credentials. If it

5:34was private

5:35I would have to authenticate that I do actually have access to read the

5:39information within

5:40this repo but because like I say it's public let's just go and cd into my app.

5:44If I hit

5:44enter and I now say get branch. Look at this right here but actually on the

5:50main branch

5:51of the my app repository now again if you don't recall the previous version or

5:56rather

5:56the previous repo actually referred to in master branch now in the case of get

6:01to write here

6:02they're calling the master branch the main branch but basically it's the same

6:05type of

6:05thing. So what this now means is that I'm on the main branch and if I so wish I

6:10can create

6:11files or just to touch my underscore code dot py let's go into this particular

6:17file.

6:17So it's going to the my app directory and then into my code dot py or to say

6:21this is

6:22just some Python code again pretending that I'm writing some code right here

6:26and I'll

6:26save it and now what I want to do is I want to essentially stage these changes

6:31so I say

6:31get add aesthetics to add then everything if I say get status now we can see

6:35the files

6:36I'm tracking now if I just go to my get a repository once more if I refresh the

6:41page

6:41here notice nothing is actually happening the get repository still doesn't have

6:46that

6:46newly created file we're going to have to essentially commit these changes and

6:51then

6:51we want to push them to the remote repository so now with stage the changes we

6:56're going to

6:56go with a commit so I say get commit dash m I'll just say my first push to get

7:02to up

7:02okay and then I'll target everything I have which happens to be just one file

7:06now here

7:07comes the part whereby we want to push the changes now in order to do this we

7:11want to

7:11actually authenticate with my account so what I'm going to do is I'm going to

7:15go to my

7:15account here I'll click and go down to settings down the left hand side I'm

7:20going to check

7:21developer settings and now I'm going to select for personal access tokens and

7:25then choose

7:26tokens classic okay and then I'll go up to generate new token and again same

7:31again generate

7:31new token classic and now I'll give the token a name here's a note I'll just

7:35say my first

7:37test token now I can say how long should this token actually live for so you

7:41can specify seven

7:42days, six to days, a customer amount or have no expiration I will just say

7:46custom and I'll

7:46make this token expire tomorrow so pretty much when you see this video this

7:50particular

7:51token is not going to exist anymore now I specify this scope for this

7:54particular token

7:56ie which permissions should this token actually grant me should I be able to

8:00write to my repository

8:02or only read from it should I be able to write to particular branches so on so

8:06forth should

8:06I be able to delete repositories you can specify all of this and these check

8:11boxes here so right

8:12now I'll be super liberal just check pretty much everything which by the way is

8:15not best practice

8:16I'm just giving you an idea of what you can do in fact I'm not going to check

8:19absolutely

8:20everything I'll just check a few things okay so let's just generate the token

8:23now here it is right

8:25here and I'm going to copy this okay so it's now copied now here's the thing

8:29when I go to effectively

8:31push to my repository I don't want to have to continually paste in this token

8:35over and over and

8:36over again what I want to happen is I want this particular token to be

8:40remembered by git

8:41now right now if I say git config - - list we can see our configurations I have

8:46my username I have

8:46my email we see the remote origin URL why I also want to do is I want to

8:51specify my git configurations

8:54actually remember the credentials I pass in so I'll say git config - global and

9:00then I'm going to say

9:00credential dot helper and then space and right store okay so if I hit enter

9:06here what this means

9:07is if I just list my config once again we can see here I'm going to be saving

9:11my credentials

9:12now here comes the push what I will do is I'll say git push - you origin and

9:19then I specify the

9:20branch that I want to target now the branch that I'm on is the main branch

9:24remember not master so if

9:25I hit enter I'm going to have to type in my email address here so I'll just

9:29type in my login details

9:30hit enter and now it says it wants my password now my password here is actually

9:35just going to be

9:35me pasting in the token I just copied over here I'll just paste in my token you

9:41're not going to

9:41see on the screen just hit enter and now we can see here we have written our

9:46data on the target

9:47repository so if I now go back check this out right here out on the internet

9:51right now you can see

9:52I have my file my code dot py and if I just click it here we can see the

9:56content right here now again

9:58it's not valid Python code nevertheless but you can imagine if it was now it is

10:02publicly accessible

10:03so if anyone wants to collaborate with me but what they can do is they can

10:07effectively copy and

10:08pull down the latest version of this repository and then they'll have access to

10:13it similarly just

10:14as we saw before what I can also do is I can say git check out -b and I can

10:18create maybe a test

10:19branch okay so now if I say git branch and to enter here we have our test

10:24branch and once again we

10:25see our files now if I go into my file or say this is some new code features

10:30save you what do I

10:32want to do I want to stage the changes so I'll say git add asterisk also git

10:36commit -m trying out

10:38some new codes again I'll just do asterisk to add everything and now I can say

10:42git push -u origin

10:44and now the origin is going to be the test branch okay so if I hit enter it

10:49remembers my credentials

10:51and now we've actually set up a new test branch so if I go back to get some

10:54once more check this

10:56out right here we actually have a new branch okay so if I happen to click the

11:00my code and the main

11:01branch this is going to be unchanged which we can see right here the feature is

11:05not there but if I go

11:06back and I just say I want to see the test branch and click this now I'm on the

11:10test branch if I

11:11click the code now now we can see we have the new experimental features and

11:15these really are just

11:16some of the core fundamentals that we have to understand as we begin to look at

11:20things like cicd

Validation

0:00So friends, let's walk through the validation challenge.

0:03The very first thing I would like you to do is to create a new directory called

0:06validation

0:07there and initialize it as a get repository.

0:10Next, I want you to create global credentials specifying your username and

0:15email address

0:16and then list your configurations.

0:18Once you've done that, I want you to create a file called validation.txt and

0:22write your

0:23name as the actual content within it.

0:25Then stage and commit the validation.txt file and add the message validation

0:30commits.

0:31Once you've done that, I want you to inspect the get log before creating a new

0:35branch called

0:36test and open the validation.txt file from within the test branch and add a new

0:41line

0:42saying validation check.

0:44Once you've done that, I want you to stage and commit to these changes.

0:48Then I would like you to switch branches back to your main or master branch and

0:52check that

0:52the file and this branch only shows your name so pretty much you don't want to

0:56see that validation

0:57check line in the main or master branch quite just yet.

1:00Once you've confirmed that, then go in and attempt to merge the changes from

1:04the test

1:05branch into the main or master branch and now ensure that the file has the

1:09validation

1:10check line in both branches.

1:12So boot up your terminal give it a thank and I will see you in the very next

1:15video where

1:16we discuss the solution.

Validation

0:00So friends, let's walk through the validation challenge.

0:02So the first thing I'm going to do is to create a new directory called

0:06validation.dear

0:07and initialize it as a get repository.

0:09So I'll just say mkdear validation-dear.

0:12And now I'll go and initialize it as a get repository by changing into that

0:16directory

0:17and just saying get a net and to enter.

0:19And now we can see the empty repository has been created.

0:23Next, I'm going to create my global credentials,

0:25specify my username and email address and then list my configurations.

0:29So I will say get config-global user.name.

0:33And my username is going to be ipv0.

0:36I enter and I'm also going to create my email.

0:38So I'll say user.email is ipv0@gmail.com.

0:43And let me just zoom out a little bit.

0:44Keep it all on one line.

0:45There we go.

0:46Now I'm going to specify what my configurations are.

0:49So I'll say get config-list.

0:51And now we can see what I have configured.

0:54Next, I'm going to have to create a file called validation.txt

0:58and write my name as the actual content.

1:00So I'll just say touch validation.txt.

1:03So I'll open the file up and just add my name as the content, john McGovern,

1:07and just save this.

1:08So now as we can see here, I have this file with the contents.

1:11And now what I want to do is I want to stage and commit this file

1:15and add the message validation commit.

1:17So the first thing I will do is say get add and then the name of the file.

1:21And then I'll say get commits-m and then specify the message.

1:25So to say validation commits.

1:26And the file I want to target is validation.txt.

1:29And now we have committed the next thing I'm going to have to do

1:32to inspect my git log, which I can do via the command git log.

1:35Here we go right here.

1:36And now I'm going to have to create a new branch called test.

1:39OK, so what I will say is get checkout -b for the branch

1:42and then give the name of the branch test.

1:44Now we can see we'll switch to the new branch

1:46and we can check that out by saying get branch.

1:48Here we have our asterisk to ensure we are on the test branch.

1:51And from this point here, I want to open the file

1:54and add a new line called validation check.

1:56So I'll go into the file and I'll just add the line validation check

2:00and save this.

2:01Now again, I'm going to have to stage these changes.

2:03So I'll say get add validation.txt.

2:06And we're going to have to commit them once again.

2:08So I'll just say another commit as the message.

2:10And to enter, we can now see I have a second commit.

2:13And now what I want to do is I want to switch branches back

2:15to the main or master branch and check that the file in this branch

2:19only shows my name.

2:20So right now, as we can see, I'm on the test branch.

2:23And if I just say get checkout and go to the master branch,

2:26I've now switched to the master.

2:28If I look at the file once again, the file here now only says my name.

2:32Now what I want to do is I want to merge the changes from the test

2:35branch into the main branch or the master branch if you so well.

2:38So all I'm going to do is ensure I'm on the branch

2:41that I want to merge into, which is the master branch.

2:43And then I will say get merge and then specify the branch

2:47that I'm merging from.

2:48So I want to merge from the test branch.

2:50So I will say get merge test and to enter.

2:53So now as we can see, I'm still on the master branch.

2:55And if we now look at the file, notice the file also now has the validation

2:59check.

3:00And again, if I switch back over to the test branch and I look at the file

3:04again,

3:04we still have the validation check line right there.

3:06So that is us for our validation challenge on utilizing get.

3:10I hope this has been informative for you.

3:12I really to thank you for viewing.

Team training path

Turn this skill into assignable team training

This free skill is a preview of the courses your team can assign, track, and report on with CBT Nuggets.

What's next?

Ready to keep going?

For your team

Bring this training to your team

See how CBT Nuggets helps IT teams close skills gaps, hit compliance targets, and prove training ROI.

Book a Demo
Just need CCNP DEVOPS?

Learning on your own? Browse individual plans ($49/month, billed annually)

Not ready to buy?
with no purchase required. Already have an account?
Book a Demo