{"id":3012,"date":"2022-04-20T15:25:05","date_gmt":"2022-04-20T15:25:05","guid":{"rendered":"https:\/\/exceedthecloud.com\/?p=3012"},"modified":"2022-04-20T15:25:10","modified_gmt":"2022-04-20T15:25:10","slug":"version-controlling-with-git-in-azure-repos","status":"publish","type":"post","link":"https:\/\/exceedthecloud.com\/?p=3012","title":{"rendered":"Version Controlling with Git in Azure Repos"},"content":{"rendered":"\n<p>Azure DevOps supports two types of version control, Git and Team Foundation Version Control (TFVC). Here is a quick overview of the two version control systems:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Team Foundation Version Control (TFVC)<\/strong>: TFVC is a centralized version control system. Typically, team members have only one version of each file on their dev machines. Historical data is maintained only on the server. Branches are path-based and created on the server.<\/li><li><strong>Git<\/strong>: Git is a distributed version control system. Git repositories can live locally (such as on a developer\u2019s machine). Each developer has a copy of the source repository on their dev machine. Developers can commit each set of changes on their dev machine and perform version control operations such as history and compare without a network connection.<\/li><\/ul>\n\n\n\n<p>Git is the default version control provider for new projects. You should use Git for version control in your projects unless you have a specific need for centralized version control features in TFVC.<\/p>\n\n\n\n<p>In this lab, you will learn how to establish a local Git repository, which can easily be synchronized with a centralized Git repository in Azure DevOps. In addition, you will learn about Git branching and merging support. You will use Visual Studio Code, but the same processes apply for using any Git-compatible client.<\/p>\n\n\n\n<p>After you complete this lab, you will be able to:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Clone an existing repository<\/li><li>Save work with commits<\/li><li>Review history of changes<\/li><li>Work with branches by using Visual Studio Code<\/li><\/ul>\n\n\n\n<p>Identify the applications that you\u2019ll use in this lab:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Microsoft Edge<\/li><li><a href=\"https:\/\/gitforwindows.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Git for Windows download page<\/a>. This will be installed as part of prerequisites for this lab.<\/li><li><a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Visual Studio Code<\/a>. This will be installed as part of prerequisites for this lab.<\/li><\/ul>\n\n\n\n<p><strong>Set up an Azure DevOps organization<\/strong><\/p>\n\n\n\n<p>If you don\u2019t already have an Azure DevOps organization that you can use for this lab, create one by following the instructions available at\u00a0<a href=\"https:\/\/exceedthecloud.com\/?p=2937\" target=\"_blank\" rel=\"noreferrer noopener\">Create an organization or project collection<\/a>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 0: Configure the lab prerequisites<\/strong><\/p>\n\n\n\n<p>In this Lab, you will set up the prerequisites for the lab, which include the preconfigured Parts Unlimited team project based on an Azure DevOps Demo Generator template and a Visual Studio Code configuration.<\/p>\n\n\n\n<p><strong>Task 1: Configure the Parts Unlimited team project<\/strong><\/p>\n\n\n\n<p>In this task, you will use Azure DevOps Demo Generator to generate a new project based on the&nbsp;<strong>Parts Unlimited<\/strong>&nbsp;template.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On your lab computer, start a web browser and navigate to\u00a0<a href=\"https:\/\/azuredevopsdemogenerator.azurewebsites.net\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure DevOps Demo Generator<\/a>. This utility site will automate the process of creating a new Azure DevOps project within your account that is prepopulated with content (work items, repos, etc.) required for the lab.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: For more information on the site, see <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/demo-gen\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/demo-gen<\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>Click\u00a0<strong>Sign in<\/strong>\u00a0and sign in using the Microsoft account associated with your Azure DevOps subscription.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"272\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture1-2.png\" alt=\"\" class=\"wp-image-3013\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture1-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture1-2-300x131.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>If required, on the\u00a0<strong>Azure DevOps Demo Generator<\/strong>\u00a0page, click\u00a0<strong>Accept<\/strong>\u00a0to accept the permission requests for accessing your Azure DevOps subscription.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"440\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture2-2.png\" alt=\"\" class=\"wp-image-3014\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture2-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture2-2-300x212.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the\u00a0<strong>Create New Project<\/strong>\u00a0page, in the\u00a0<strong>New Project Name<\/strong>\u00a0textbox, type\u00a0<strong>Version Controlling with Git in Azure Repos<\/strong>, in the\u00a0<strong>Select organization<\/strong>\u00a0dropdown list, select your Azure DevOps organization, and then click\u00a0<strong>Choose template<\/strong>.<\/li><li>In the list of templates, locate the\u00a0<strong>PartsUnlimited<\/strong>\u00a0template and click\u00a0<strong>Select Template<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"285\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture3-2.png\" alt=\"\" class=\"wp-image-3015\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture3-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture3-2-300x137.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>Back on the\u00a0<strong>Create New Project<\/strong>\u00a0page, click\u00a0<strong>Create Project<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"326\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture4-2.png\" alt=\"\" class=\"wp-image-3016\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture4-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture4-2-300x157.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: Wait for the process to complete. This should take about 2 minutes. In case the process fails, navigate to your Azure DevOps organization, delete the project, and try again.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the\u00a0<strong>Create New Project<\/strong>\u00a0page, click\u00a0<strong>Navigate to project<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"301\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture5-2.png\" alt=\"\" class=\"wp-image-3017\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture5-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture5-2-300x145.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 2: Install and configure Git and Visual Studio Code<\/strong><\/p>\n\n\n\n<p>In this task, you will install and configure Git and Visual Studio Code, including configuring the Git credential helper to securely store the Git credentials used to communicate with Azure DevOps. If you have already implemented these prerequisites, you can proceed directly to the next task.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>If you don\u2019t have Git 2.29.2 or later installed yet, start a web browser, navigate to the\u00a0<a href=\"https:\/\/gitforwindows.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Git <\/a><a href=\"https:\/\/gitforwindows.org\/\">for Windows download page<\/a>\u00a0download it, and install it.<\/li><li>If you don\u2019t have Visual Studio Code installed yet, from the web browser window, navigate to the\u00a0<a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Visual Studio Code download page<\/a>, download it, and install it.<\/li><li>If you don\u2019t have Visual Studio C# extension installed yet, in the web browser window, navigate to the\u00a0<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-dotnettools.csharp\" target=\"_blank\" rel=\"noreferrer noopener\">C# extension installation page<\/a>\u00a0and install it.<\/li><li>On the lab computer, open\u00a0<strong>Visual Studio Code<\/strong>.<\/li><li>In the Visual Studio Code interface, from the main menu, select\u00a0<strong>Terminal | New Terminal<\/strong>\u00a0to open the\u00a0<strong>TERMINAL<\/strong>\u00a0pane.<\/li><li>Make sure that the current Terminal is running\u00a0<strong>PowerShell<\/strong>\u00a0by checking if the drop-down list at the top right corner of the\u00a0<strong>TERMINAL<\/strong>\u00a0pane shows\u00a0<strong>1: powershell<\/strong><\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: To change the current Terminal shell to&nbsp;<strong>PowerShell<\/strong>&nbsp;click the drop-down list at the top right corner of the&nbsp;<strong>TERMINAL<\/strong>&nbsp;pane and click&nbsp;<strong>Select Default Shell<\/strong>. At the top of the Visual Studio Code window select your preferred terminal shell&nbsp;<strong>Windows PowerShell<\/strong>&nbsp;and click the plus sign on the right-hand side of the drop-down list to open a new terminal with the selected default shell.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"7\"><li>In the\u00a0<strong>TERMINAL<\/strong>\u00a0pane, run the following command below to configure the credential helper.<\/li><\/ul>\n\n\n\n<p>CodeCopy<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git config --global credential.helper wincred<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the\u00a0<strong>TERMINAL<\/strong>\u00a0pane, run the following commands to configure a user name and email for Git commits (replace the placeholders in braces with your preferred user name and email eliminating the &lt; and > symbols):<\/li><\/ul>\n\n\n\n<p>CodeCopy<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git config --global user.name \"Marcelin NDJILA\"\ngit config --global user.email &lt;xxxxxxxx@example.com><\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"151\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture6-2.png\" alt=\"\" class=\"wp-image-3018\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture6-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture6-2-300x73.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 1: Clone an existing repository<\/strong><\/p>\n\n\n\n<p>In this Lab, you use Visual Studio Code to clone the Git repository you provisioned as part of the previous Lab.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 1: Clone an existing repository<\/strong><\/p>\n\n\n\n<p>In this task, you will step through the process of cloning a Git repository by using Visual Studio Code.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Switch to the the web browser displaying your Azure DevOps organization with the\u00a0<strong>Version Controlling with Git in Azure Repos<\/strong>\u00a0project you generated in the previous Lab.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: Alternatively, you can access the project page directly by navigating to the&nbsp;<a href=\"https:\/\/dev.azure.com\/%60%3Cyour-Azure-DevOps-account-name%3E%60\/Version%20Controlling%20with%20Git%20in%20Azure%20Repos\">https:\/\/dev.azure.com\/&lt;your-Azure-DevOps-account-name&gt;\/Version%20Controlling%20with%20Git%20in%20Azure%20Repos<\/a>&nbsp;URL, where the&nbsp;&lt;your-Azure-DevOps-account-name&gt;&nbsp;placeholder, represents your account name.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>In the vertical navigational pane of the Azure DevOps portal, select the\u00a0<strong>Repos<\/strong>\u00a0icon.<\/li><li>In the upper right corner of the\u00a0<strong>PartsUnlimited<\/strong>\u00a0pane, click\u00a0<strong>Clone<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"317\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture7-2.png\" alt=\"\" class=\"wp-image-3019\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture7-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture7-2-300x152.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: Getting a local copy of a Git repo is called&nbsp;<em>cloning<\/em>. Every mainstream development tool supports this and will be able to connect to Azure Repos to pull down the latest source to work with.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the\u00a0<strong>Clone Repository<\/strong>\u00a0panel, with the\u00a0<strong>HTTPS<\/strong>\u00a0Command line option selected, click the\u00a0<strong>Copy to clipboard<\/strong>\u00a0button next to the repo clone URL.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"367\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture8-2.png\" alt=\"\" class=\"wp-image-3020\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture8-2.png 474w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture8-2-300x232.png 300w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: You can use this URL with any Git-compatible tool to get a copy of the codebase.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Close the\u00a0<strong>Clone Repository<\/strong>\u00a0panel.<\/li><li>Switch to\u00a0<strong>Visual Studio Code<\/strong>\u00a0running on your lab computer.<\/li><li>Click the\u00a0<strong>View<\/strong>\u00a0menu header and, in the drop-down menu, click\u00a0<strong>Command Palette<\/strong>.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: The Command Palette provides an easy and convenient way to access a wide variety of tasks, including those implemented as 3rd party extensions. You can use the keyboard shortcut&nbsp;<strong>Ctrl+Shift+P<\/strong>&nbsp;or&nbsp;<strong>F1<\/strong>&nbsp;to open it.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"4\"><li>At the Command Palette prompt, run the\u00a0<strong>Git: Clone<\/strong>\u00a0command.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: To see all relevant commands, you can start by typing&nbsp;<strong>Git<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"5\"><li>In the\u00a0<strong>Provide repository URL or pick a repository source<\/strong>\u00a0text box, paste the repo clone URL you copied earlier in this task and press the\u00a0<strong>Enter<\/strong>\u00a0key.<\/li><li>Within the\u00a0<strong>Select Folder<\/strong>\u00a0dialog box, navigate to the C: drive, create a new folder named\u00a0<strong>Git<\/strong>, select it, and then click\u00a0<strong>Select Repository Location<\/strong>.<\/li><li>When prompted, log in to your Azure DevOps account.<\/li><li>After the cloning process completes, once prompted, in the Visual Studio Code, click\u00a0<strong>Open<\/strong>\u00a0to open the cloned repository.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"297\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture9-2.png\" alt=\"\" class=\"wp-image-3021\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture9-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture9-2-300x143.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: You can ignore warnings you might receive regarding problems with loading of the project. The solution may not be in the state suitable for a build, but we\u2019re going to focus on working with Git, so building the project is not required.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 2: Save work with commits<\/strong><\/p>\n\n\n\n<p>In this Lab, you will step through several scenarios that involve the use of Visual Studio Code to stage and commit changes.<\/p>\n\n\n\n<p>When you make changes to your files, Git will record the changes in the local repository. You can select the changes that you want to commit by staging them. Commits are always made against your local Git repository, so you don\u2019t have to worry about the commit being perfect or ready to share with others. You can make more commits as you continue to work and push the changes to others when they are ready to be shared.<\/p>\n\n\n\n<p>Git commits consists of the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>The file(s) changed in the commit. Git keeps the contents of all file changes in your repo in the commits. This keeps it fast and allows intelligent merging.<\/li><li>A reference to the parent commit(s). Git manages your code history using these references.<\/li><li>A message describing a commit. You give this message to Git when you create the commit. It\u2019s a good idea to keep this message descriptive, but to the point.<\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 1: Commit changes<\/strong><\/p>\n\n\n\n<p>In this task, you will use Visual Studio Code to commit changes.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the Visual Studio Code window, at the top of the vertical toolbar, select the\u00a0<strong>EXPLORER<\/strong>\u00a0tab, navigate to the\u00a0<strong>\/PartsUnlimited-aspnet45\/src\/PartsUnlimitedWebsite\/Models\/CartItem.cs<\/strong>\u00a0file and select it. This will automatically display its content in the details pane.<\/li><li>Add to the\u00a0<strong>CartItem.cs<\/strong>\u00a0file right above the\u00a0[key]\u00a0entry an extra line containing the following comment:<\/li><\/ul>\n\n\n\n<p>C#Copy<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ My first change<\/code><\/pre>\n\n\n\n<p><strong>Note<\/strong>: It doesn\u2019t really matter what the comment is since the goal is just to make a change.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"434\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture10-2.png\" alt=\"\" class=\"wp-image-3022\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture10-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture10-2-300x209.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Press\u00a0<strong>Ctrl+S<\/strong>\u00a0to save the change.<\/li><li>In the Visual Studio Code window, select the\u00a0<strong>SOURCE CONTROL<\/strong>\u00a0tab to verify that Git recognized the latest change to the file residing in the local clone of the Git repository.<\/li><li>With the\u00a0<strong>SOURCE CONTROL<\/strong>\u00a0tab selected, at the top of the pane, in the textbox, type\u00a0<strong>My commit<\/strong>\u00a0as the commit message and press\u00a0<strong>Ctrl+Enter<\/strong>\u00a0to commit it locally.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"326\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture11-2.png\" alt=\"\" class=\"wp-image-3023\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture11-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture11-2-300x157.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>If prompted whether you would like to automatically stage your changes and commit them directly, click\u00a0<strong>Always<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"290\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture12-2.png\" alt=\"\" class=\"wp-image-3024\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture12-2.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture12-2-300x139.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: We will discuss&nbsp;<strong>staging<\/strong>&nbsp;later in the lab.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the lower left corner of the Visual Studio Code window, to the right of the\u00a0<strong>master<\/strong>\u00a0label, note the\u00a0<strong>Synchronize Changes<\/strong>\u00a0icon of a circle with two vertical arrows pointing in the opposite directions and the number\u00a0<strong>1<\/strong>\u00a0next to the arrow pointing up. Click the icon and, if prompted, whether to proceed, click\u00a0<strong>OK<\/strong>\u00a0to push and pull commits to and from\u00a0<strong>origin\/master<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"318\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture13-1.png\" alt=\"\" class=\"wp-image-3025\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture13-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture13-1-300x153.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Task 2: Review commits<\/strong><\/p>\n\n\n\n<p>In this task, you will use the Azure DevOps portal to review commits.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Switch to the web browser window displaying the Azure DevOps interface.<\/li><li>In the vertical navigational pane of the of the Azure DevOps portal, in the\u00a0<strong>Repos<\/strong>\u00a0section, select\u00a0<strong>Commits<\/strong>.<\/li><li>Verify that your commit appears at the top of list.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"310\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture14-1.png\" alt=\"\" class=\"wp-image-3026\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture14-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture14-1-300x149.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 3: Stage changes<\/strong><\/p>\n\n\n\n<p>In this task, you will explore the use of staging changes by using Visual Studio Code. Staging changes allows you to selectively add certain files to a commit while passing over the changes made in other files.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Switch back to the\u00a0<strong>Visual Studio Code<\/strong>\u00a0window.<\/li><li>Update the open\u00a0<strong>CartItem.cs<\/strong>\u00a0class by changing the first comment to\u00a0\/\/My second change\u00a0and saving the file.<\/li><li>In the Visual Studio Code window, switch back the\u00a0<strong>EXPLORER<\/strong>\u00a0tab, navigate to the\u00a0<strong>\/PartsUnlimited-aspnet45\/src\/PartsUnlimitedWebsite\/Models\/Category.cs<\/strong>\u00a0file and select it. This will automatically display its content in the details pane.<\/li><li>Add to the\u00a0<strong>Category.cs<\/strong>\u00a0file right above the\u00a0public int CategoryId { get; set; }\u00a0entry an extra line containing the following comment and save the file.<\/li><\/ul>\n\n\n\n<p>C#Copy<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ My third change<\/code><\/pre>\n\n\n\n<p>In the Visual Studio Code window, switch to the\u00a0<strong>SOURCE CONTROL<\/strong>\u00a0tab, hover the mouse pointer over the\u00a0<strong>CartItem.cs<\/strong>\u00a0entry, and click the plus sign on the right side of that entry.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"410\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture15-1.png\" alt=\"\" class=\"wp-image-3027\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture15-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture15-1-300x197.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: This stages the change to the&nbsp;<strong>CartItem.cs<\/strong>&nbsp;file only, preparing it for commit without&nbsp;<strong>Category.cs<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>With the\u00a0<strong>SOURCE CONTROL<\/strong>\u00a0tab selected, at the top of the pane, in the textbox, type\u00a0<strong>Added comments<\/strong>\u00a0as the commit message.<\/li><li>At the top of the\u00a0<strong>SOURCE CONTROL<\/strong>\u00a0tab, click the ellipsis symbol, in the drop-down menu, select\u00a0<strong>Commit<\/strong>\u00a0and, in the cascading menu, select\u00a0<strong>Commit Staged<\/strong>.<\/li><li>In the lower left corner of the Visual Studio Code window, click the\u00a0<strong>Synchronize Changes<\/strong>\u00a0button to synchronize the committed changes with the server and, if prompted, whether to proceed, click\u00a0<strong>OK<\/strong>\u00a0to push and pull commits to and from\u00a0<strong>origin\/master<\/strong>.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: Note that since only the staged change was committed, the other change is still pending to be synchronized.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 3: Review history<\/strong><\/p>\n\n\n\n<p>In this Lab, you will use the Azure DevOps portal to review history of commits.<\/p>\n\n\n\n<p>Git uses the parent reference information stored in each commit to manage a full history of your development. You can easily review this commit history to find out when file changes were made and determine differences between versions of your code using the terminal or from one of the many available Visual Studio Code extensions. You can also review changes by using the Azure DevOps portal.<\/p>\n\n\n\n<p>Git\u2019s use of the\u00a0<strong>Branches and Merges<\/strong>\u00a0feature works through pull requests, so the commit history of your development doesn\u2019t necessarily form a straight, chronological line. When you use history to compare versions, think in terms of file changes between two commits instead of file changes between two points in time. A recent change to a file in the master branch may have come from a commit created two weeks ago in a feature branch that was merged yesterday.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 1: Compare files<\/strong><\/p>\n\n\n\n<p>In this task, you will step through commit history by using the Azure DevOps portal.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>With the\u00a0<strong>SOURCE CONTROL<\/strong>\u00a0tab of the Visual Studio Code window open, select\u00a0<strong>Category.cs<\/strong>\u00a0representing the non-staged version of the file.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: A comparison view is opened to enable you to easily locate the changes you\u2019ve made. In this case, it\u2019s just the one comment.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>Switch to the web browser window displaying the\u00a0<strong>Commits<\/strong>\u00a0pane of the\u00a0<strong>Azure DevOps<\/strong>\u00a0portal to review the source branches and merges. These provide a convenient way to visualize when and how changes were made to the source.<\/li><li>Scroll down to the\u00a0<strong>Merged PR 27<\/strong>\u00a0entry and hover the mouse pointer over it to reveal the ellipsis symbol on the right side.<\/li><li>Click the ellipsis, in the dropdown menu, select\u00a0<strong>Browse Files<\/strong>, and review the results.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"435\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture16-1.png\" alt=\"\" class=\"wp-image-3028\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture16-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture16-1-300x209.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: This view represents the state of the source corresponding to the commit, allowing you to review and download each of source files.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 4: Work with branches<\/strong><\/p>\n\n\n\n<p>In this Lab, you will step through scenarios that involve branch management by using Visual Studio Code and the Azure DevOps portal.<\/p>\n\n\n\n<p>You can manage in your Azure DevOps Git repo from the&nbsp;<strong>Branches<\/strong>&nbsp;view of&nbsp;<strong>Azure Repos<\/strong>&nbsp;in the Azure DevOps portal. You can also customize the view to track the branches you care most about so you can stay on top of changes made by your team.<\/p>\n\n\n\n<p>Committing changes to a branch will not affect other branches and you can share branches with others without having to merge the changes into the main project. You can also create new branches to isolate changes for a feature or a bug fix from your master branch and other work. Since the branches are lightweight, switching between branches is quick and easy. Git does not create multiple copies of your source when working with branches, but rather uses the history information stored in commits to recreate the files on a branch when you start working on it. Your Git workflow should create and use branches for managing features and bugfixes. The rest of the Git workflow, such as sharing code and reviewing code with pull requests, all work through branches. Isolating work in branches makes it very simple to change what you are working on by simply changing your current branch.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 1: Create a new branch in your local repository<\/strong><\/p>\n\n\n\n<p>In this task, you will create a branch by using Visual Studio Code.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Switch to\u00a0<strong>Visual Studio Code<\/strong>\u00a0running on your lab computer.<\/li><li>With the\u00a0<strong>SOURCE CONTROL<\/strong>\u00a0tab selected, in the lower left corner of the Visual Studio Code window, click\u00a0<strong>master<\/strong>.<\/li><li>In the pop-up window, select\u00a0<strong>+ Create new branch from\u2026<\/strong>.<\/li><li>In the\u00a0<strong>Branch name<\/strong>\u00a0textbox, type\u00a0<strong>dev<\/strong>\u00a0to specify the new branch and press\u00a0<strong>Enter<\/strong>.<\/li><li>In the\u00a0<strong>Select a ref to create the \u2018dev\u2019 branch from<\/strong>\u00a0textbox, select\u00a0<strong>master<\/strong>\u00a0as the reference branch.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"357\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture17-1.png\" alt=\"\" class=\"wp-image-3029\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture17-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture17-1-300x172.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: At this point, you are automatically switched to the\u00a0<strong>dev<\/strong>\u00a0branch.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 2: Work with branches<\/strong><\/p>\n\n\n\n<p>In this task, you will use the Visual Studio Code to work with a branch created in the previous task.<\/p>\n\n\n\n<p>Git keeps track of which branch you are working on and makes sure that, when you check out a branch, your files match the most recent commit on that branch. Branches let you work with multiple versions of the source code in the same local Git repository at the same time. You can use Visual Studio Code to publish, check out and delete branches.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the\u00a0<strong>Visual Studio Code<\/strong>\u00a0window, with the\u00a0<strong>SOURCE CONTROL<\/strong>\u00a0tab selected, in the lower left corner of the Visual Studio Code window, click the\u00a0<strong>Publish changes<\/strong>\u00a0icon (directly to the right of the\u00a0<strong>dev<\/strong>\u00a0label representing your newly created branch).<\/li><li>Switch to the web browser window displaying the\u00a0<strong>Commits<\/strong>\u00a0pane of the\u00a0<strong>Azure DevOps<\/strong>\u00a0portal and select\u00a0<strong>Branches<\/strong>.<\/li><li>On the\u00a0<strong>Mine<\/strong>\u00a0tab of the\u00a0<strong>Branches<\/strong>\u00a0pane, verify that the list of branches includes\u00a0<strong>dev<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"408\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture18-1.png\" alt=\"\" class=\"wp-image-3030\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture18-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture18-1-300x196.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Hover the mouse pointer over the\u00a0<strong>dev<\/strong>\u00a0branch entry to reveal the ellipsis symbol on the right side.<\/li><li>Click the ellipsis, in the pop-up menu, select\u00a0<strong>Delete branch<\/strong>, and, when prompted for confirmation, click\u00a0<strong>Delete<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"388\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture19-1.png\" alt=\"\" class=\"wp-image-3031\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture19-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture19-1-300x187.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture19-1-80x50.png 80w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Switch back to the\u00a0<strong>Visual Studio Code<\/strong>\u00a0window and, with the\u00a0<strong>SOURCE CONTROL<\/strong>\u00a0tab selected, in the lower left corner of the Visual Studio Code window, click the\u00a0<strong>dev<\/strong>\u00a0entry. This will display the existing branches in the upper portion of the Visual Studio Code window.<\/li><li>Verify that now there are two\u00a0<strong>dev<\/strong>\u00a0branches listed.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"365\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture20-1.png\" alt=\"\" class=\"wp-image-3032\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture20-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture20-1-300x175.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: The local (<strong>dev<\/strong>) branch is listed because it\u2019s existence is not affected by the deletion of the branch in the remote repository. The server (<strong>origin\/dev<\/strong>) is listed because it hasn\u2019t been pruned.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the list of branches select the\u00a0<strong>master<\/strong>\u00a0branch to check it out.<\/li><li>Press\u00a0<strong>Ctrl+Shift+P<\/strong>\u00a0to open the\u00a0<strong>Command Palette<\/strong>.<\/li><li>At the\u00a0<strong>Command Palette<\/strong>\u00a0prompt, start typing\u00a0<strong>Git: Delete<\/strong>\u00a0and select\u00a0<strong>Git: Delete Branch<\/strong>\u00a0when it becomes visible.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"369\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture21-1.png\" alt=\"\" class=\"wp-image-3033\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture21-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture21-1-300x177.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Select the\u00a0<strong>dev<\/strong>\u00a0entry in the list of branches to delete.<\/li><li>In the lower left corner of the Visual Studio Code window, click the\u00a0<strong>master<\/strong>\u00a0entry again. This will display the existing branches in the upper portion of the Visual Studio Code window.<\/li><li>Verify that the local\u00a0<strong>dev<\/strong>\u00a0branch no longer appears in the list, but the remote\u00a0<strong>origin\/dev<\/strong>\u00a0is still there.<\/li><li>Press\u00a0<strong>Ctrl+Shift+P<\/strong>\u00a0to open the\u00a0<strong>Command Palette<\/strong>.<\/li><li>At the\u00a0<strong>Command Palette<\/strong>\u00a0prompt, start typing\u00a0<strong>Git: Fetch<\/strong>\u00a0and select\u00a0<strong>Git: Fetch (Prune)<\/strong>\u00a0when it becomes visible.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"369\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture22-1.png\" alt=\"\" class=\"wp-image-3034\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture22-1.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture22-1-300x177.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: This command will update the origin branches in the local snapshot and delete those that are no longer there.<\/p>\n\n\n\n<p><strong>Note<\/strong>: You can check in on exactly what these tasks are doing by selecting the&nbsp;<strong>Output<\/strong>&nbsp;window in the lower right part bottom of the Visual Studio Code window. If you don\u2019t see the Git logs in the output console, make sure to select&nbsp;<strong>Git<\/strong>&nbsp;as the source.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the lower left corner of the Visual Studio Code window, click the\u00a0<strong>master<\/strong>\u00a0entry again.<\/li><li>Verify that the\u00a0<strong>origin\/dev<\/strong>\u00a0branch no longer appears in the list of branches.<\/li><\/ul>\n\n\n\n<p><strong>Review<\/strong><\/p>\n\n\n\n<p>In this lab, you used Visual Studio Code to clone an existing repository, save work with commits, review history of changes, and work with branches.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Azure DevOps supports two types of version control, Git and Team Foundation Version Control (TFVC). Here is a quick overview of the two version control systems: Team Foundation Version Control (TFVC): TFVC is a centralized version control system. Typically, team &hellip; <a href=\"https:\/\/exceedthecloud.com\/?p=3012\">Continued<\/a><\/p>\n","protected":false},"author":1,"featured_media":3036,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"kt_blocks_editor_width":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[16,4],"tags":[8,105,53,106,54],"class_list":["post-3012","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-practical-labs-series","tag-azure","tag-devops","tag-git","tag-version","tag-visual-studio-code"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/istockphoto-1346698461-612x612-1.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/3012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3012"}],"version-history":[{"count":1,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/3012\/revisions"}],"predecessor-version":[{"id":3035,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/3012\/revisions\/3035"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/media\/3036"}],"wp:attachment":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}