{"id":1204,"date":"2026-09-02T13:00:00","date_gmt":"2026-09-02T07:30:00","guid":{"rendered":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/"},"modified":"2026-09-02T13:00:00","modified_gmt":"2026-09-02T07:30:00","slug":"git-for-salesforce-developers","status":"publish","type":"post","link":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/","title":{"rendered":"Git for Salesforce Developers: Git and GitHub Basics"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Git for Salesforce is the skill that turns a solo coder into a real team developer. Git keeps a full history of every change in your project. GitHub stores that history online, so your whole team can share it, review it and deploy from it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the last post in our Foundations level. You already have a <a href=\"https:\/\/swapnilzambare.com\/blog\/salesforce-dx-project-structure\/\">Salesforce DX project<\/a> and you know how to <a href=\"https:\/\/swapnilzambare.com\/blog\/salesforce-cli-deploy-retrieve-metadata\/\">deploy and retrieve metadata<\/a>. Now we will put that project under version control. If you have used the admin <a href=\"https:\/\/swapnilzambare.com\/blog\/salesforce-devops-center-guide\/\">DevOps Center guide<\/a>, you have already seen Git working in the background.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Git for Salesforce?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Git is a free version control system. It records snapshots of your files, called commits, so you can see what changed and go back if needed. GitHub is a website that hosts Git projects online and adds tools for teamwork.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Git for Salesforce simply means using Git with your Salesforce DX project. Your Apex classes, objects, flows and layouts are all files, so Git can track them like any other code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Think of Git as the &#8220;track changes&#8221; feature in a Word document, but for a whole folder. Every saved version has a note, a date and an author. You can compare any two versions or roll back to an older one.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Git for Salesforce Matters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Without Git for Salesforce, the org is the only copy of your work. If someone overwrites a class, the old version is gone. Teams also step on each other&#8217;s changes without knowing it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Git fixes these problems and adds more benefits.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Full history.<\/strong> You can see every change, who made it and why.<\/li>\n\n<li><strong>Safe experiments.<\/strong> Branches let you try ideas without breaking the main code.<\/li>\n\n<li><strong>Code review.<\/strong> Teammates check changes in a pull request before they merge.<\/li>\n\n<li><strong>Rollback.<\/strong> You can return to a working version in minutes.<\/li>\n\n<li><strong>Automation.<\/strong> Pipelines can deploy from GitHub to sandboxes and production.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Key Git Terms in Plain Words<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Git has its own words, and they can confuse beginners. The table below explains the main ones.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Term<\/th><th>Plain meaning<\/th><\/tr><\/thead><tbody><tr><td>Repository (repo)<\/td><td>A project folder tracked by Git<\/td><\/tr><tr><td>Commit<\/td><td>A saved snapshot with a short message<\/td><\/tr><tr><td>Branch<\/td><td>A separate line of work<\/td><\/tr><tr><td>Merge<\/td><td>Joining one branch into another<\/td><\/tr><tr><td>Remote<\/td><td>The online copy, for example on GitHub<\/td><\/tr><tr><td>Push<\/td><td>Send your commits to the remote<\/td><\/tr><tr><td>Pull<\/td><td>Get new commits from the remote<\/td><\/tr><tr><td>Pull request<\/td><td>A request to review and merge a branch<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How Git for Salesforce Works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A normal day with Git for Salesforce follows a simple loop. You create a branch, change files, deploy to your org to test, commit, push and open a pull request. After review, the branch merges into main.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-1-1024x640.png\" alt=\"Git for Salesforce diagram showing the daily Git workflow\" class=\"wp-image-1202\" srcset=\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-1-1024x640.png 1024w, https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-1-300x188.png 300w, https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-1-768x480.png 768w, https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-1-1536x960.png 1536w, https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-1-2048x1280.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">The daily Git workflow for a Salesforce developer.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The key idea is that Git tracks files, not orgs. So if you change something in Setup, Git does not know about it. You must retrieve that change into your project first. Then Git sees the new file and you can commit it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Setting Up Git for Salesforce<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s set up Git for Salesforce on the Bright Path Tutors project, step by step.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Install Git and Set Your Name<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Download Git from git-scm.com and install it with the default options. Then open a terminal and tell Git who you are. Git adds this name to every commit you make.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git --version\ngit config --global user.name \"Asha Mehta\"\ngit config --global user.email \"asha@example.com\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The first command checks that Git works. The next two set your name and email for all projects on this computer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Start a Repository<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open a terminal in your <code>brightpath-app<\/code> folder and run these commands.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git init\ngit add .\ngit commit -m \"Initial Salesforce DX project for Bright Path Tutors\"\ngit branch -M main<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">First, <code>git init<\/code> turns the folder into a repository. Next, <code>git add .<\/code> stages every file, and <code>git commit<\/code> saves the first snapshot. Finally, <code>git branch -M main<\/code> names the main branch &#8220;main&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The project&#8217;s <code>.gitignore<\/code> already skips local folders like <code>.sf<\/code>, <code>.sfdx<\/code> and <code>node_modules<\/code>. So those never reach your repository.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Push to GitHub<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Create a free account on github.com. Then click New repository, name it <code>brightpath-app<\/code> and leave it empty. GitHub shows you the commands to connect your local project. They look like this.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git remote add origin https:\/\/github.com\/your-username\/brightpath-app.git\ngit push -u origin main<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The first line links your local repo to GitHub. Then the second line sends your commits up and sets &#8220;main&#8221; to track the online branch. On your first push, Git may open a browser window to sign in to GitHub.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Git for Salesforce vs the Org as the Source<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Many older teams treat the org itself as the only truth. The table below compares that with a Git-based way of working.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Feature<\/th><th>Org as the source<\/th><th>Git for Salesforce<\/th><\/tr><\/thead><tbody><tr><td>History<\/td><td>Setup Audit Trail only<\/td><td>Every file change with author and message<\/td><\/tr><tr><td>Rollback<\/td><td>Manual rebuild<\/td><td>Revert a commit and deploy again<\/td><\/tr><tr><td>Teamwork<\/td><td>Easy to overwrite others<\/td><td>Branches and merges<\/td><\/tr><tr><td>Code review<\/td><td>Rare<\/td><td>Pull requests<\/td><\/tr><tr><td>Automation<\/td><td>Hard<\/td><td>CI\/CD pipelines<\/td><\/tr><tr><td>Learning effort<\/td><td>Low<\/td><td>Medium<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">When to use which is clear for code. Use Git for every developer project, and keep the org in sync by retrieving often.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-2-1024x640.png\" alt=\"Git for Salesforce diagram comparing the org as the source with Git\" class=\"wp-image-1203\" srcset=\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-2-1024x640.png 1024w, https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-2-300x188.png 300w, https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-2-768x480.png 768w, https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-2-1536x960.png 1536w, https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-diagram-2-2048x1280.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Org as the source vs Git for Salesforce.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">A Real Git for Salesforce Example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bright Path Tutors wants the fee rule changed from 500 to 1,000. Let&#8217;s do it the Git way.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Pull the latest code with <code>git pull<\/code>, so you start from the newest version.<\/li>\n\n<li>Create a branch with <code>git switch -c feature\/fee-minimum-1000<\/code>.<\/li>\n\n<li>Change the number in <code>CourseTrigger.trigger<\/code> and save the file.<\/li>\n\n<li>Deploy it to your scratch org and test it by saving a course with a fee of 800.<\/li>\n\n<li>Commit and push the change with the commands below.<\/li>\n\n<li>Open a pull request on GitHub and ask a teammate to review it.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>git status\ngit add force-app\/main\/default\/triggers\/CourseTrigger.trigger\ngit commit -m \"Raise minimum course fee to 1000\"\ngit push -u origin feature\/fee-minimum-1000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>git status<\/code> lists the files you changed. <code>git add<\/code> stages only the trigger file. Then <code>git commit<\/code> saves it with a clear message, and <code>git push<\/code> sends the new branch to GitHub.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before you commit, you can check the exact change line by line.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git diff force-app\/main\/default\/triggers\/CourseTrigger.trigger<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The output shows removed lines with a minus sign and new lines with a plus sign. For example, the old line with <code>&lt; 500<\/code> shows as removed. The new line with <code>&lt; 1000<\/code> shows as added.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On GitHub, click &#8220;Compare &amp; pull request&#8221;. Write a short summary, such as &#8220;Raises the minimum fee as requested by the Sales Manager&#8221;. Once a teammate approves it, click &#8220;Merge pull request&#8221;. The change is now part of main.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Simple Branching for Salesforce Teams<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Teams use many branching models, but beginners only need a simple one. Keep a <code>main<\/code> branch that always matches production. Then create one short-lived branch for each feature or fix.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Name branches so others can read them at a glance. For example, use <code>feature\/course-waitlist<\/code> for new work and <code>fix\/fee-rounding<\/code> for bug fixes. Delete a branch after it merges, so the list stays tidy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some teams also add branches for each sandbox, such as <code>uat<\/code> for testing. You will learn these models when we cover CI\/CD later in the series.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Git for Salesforce in VS Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You do not have to type every Git command. VS Code has a built-in Source Control panel, and it works well for Git for Salesforce projects. Click the branch icon in the left sidebar, or press Ctrl+Shift+G, to open it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The panel lists every changed file. Click a file to see a side-by-side view of the old and new versions. Then click the plus icon to stage it, type a message and click Commit. The Sync button pushes and pulls in one step.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also, the bottom-left corner of VS Code shows your current branch. Click it to switch branches or create a new one. Many beginners find this easier than the terminal at first. Still, learn the commands too, because pipelines and teammates will use them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Handling Merge Conflicts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes two developers change the same lines in the same file. When the second one merges, Git cannot decide which version wins. This is a merge conflict, and it is normal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Git marks the conflict inside the file. You will see your version and the other version, split by special marker lines. Your job is to keep the right code, delete the markers and save the file. Then you commit the fixed file as usual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Salesforce files can conflict more often than normal code, especially profiles and large layouts. This is one more reason to use source format, which splits objects into small files. Also, use permission sets instead of profiles where you can, since they are smaller and change less often. Small, frequent commits keep conflicts rare in Git for Salesforce work.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Common Mistakes with Git for Salesforce<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Forgetting to retrieve Setup changes. Git cannot track what is only in the org.<\/li>\n\n<li>Committing local folders like <code>.sf<\/code> or <code>.sfdx<\/code>. They hold login details and local state.<\/li>\n\n<li>Writing vague messages like &#8220;changes&#8221;. Say what changed and why.<\/li>\n\n<li>Working on main directly. Use a branch, so main stays stable.<\/li>\n\n<li>Making huge commits. Small commits are easier to review and roll back.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Best Practices for Git for Salesforce<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Commit small, related changes together, with a clear message.<\/li>\n\n<li>Pull before you start work each day, so you avoid conflicts.<\/li>\n\n<li>Use pull requests for every change, even in a small team.<\/li>\n\n<li>Retrieve from your development org before you commit, so files match the org.<\/li>\n\n<li>Protect the main branch on GitHub, so nobody can push to it without review.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Practice Task<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Put your <code>brightpath-app<\/code> project on GitHub. Then create a branch, change the welcome message in CourseWelcome, commit and push it. Finally, open a pull request and merge it yourself. Hint: use <code>git log --oneline<\/code> to see your commit history afterwards.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Official Resources<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/trailhead.salesforce.com\/content\/learn\/modules\/git-and-git-hub-basics\" target=\"_blank\" rel=\"noopener noreferrer\">Trailhead: Git and GitHub Basics<\/a><\/li>\n\n<li><a href=\"https:\/\/git-scm.com\/book\/en\/v2\" target=\"_blank\" rel=\"noopener noreferrer\">Pro Git book (free, official Git documentation)<\/a><\/li>\n\n<li><a href=\"https:\/\/docs.github.com\/en\/get-started\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Docs: Get started<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Quick Recap<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Git records snapshots of your project files, called commits.<\/li>\n\n<li>GitHub hosts your repository online for teamwork.<\/li>\n\n<li>Git for Salesforce tracks metadata files, not the org itself.<\/li>\n\n<li>Use branches and pull requests for every change.<\/li>\n\n<li>Retrieve Setup changes into your project before you commit.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What&#8217;s Next?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You have finished the Foundations level of our developer series. Coming soon: What is Apex? Your First Apex Class. That post starts Level 2, where you write real Apex code step by step.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Git for Salesforce is the skill that turns a solo coder into a real team developer. Git keeps a full history of every change&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1201,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_swapz_level":"","_swapz_series_part":0,"_swapz_hide_toc":false,"_swapz_hide_featured":false,"_swapz_description":"","footnotes":""},"categories":[8,96],"tags":[15,33,104,7,97],"swapz_series":[],"class_list":["post-1204","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-salesforce","category-salesforce-developer","tag-beginner","tag-deployment","tag-git","tag-salesforce","tag-salesforce-developer"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Git for Salesforce Developers: Git and GitHub Basics<\/title>\n<meta name=\"description\" content=\"Git for Salesforce explained for beginners: track metadata changes, use branches, commit, push to GitHub and review work with pull requests.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Git for Salesforce Developers: Git and GitHub Basics\" \/>\n<meta property=\"og:description\" content=\"Git for Salesforce explained for beginners: track metadata changes, use branches, commit, push to GitHub and review work with pull requests.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/\" \/>\n<meta property=\"og:site_name\" content=\"Swapnil Zambare - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-02T07:30:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-featured.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1260\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Swapnil Zambare\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Swapnil Zambare\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/\"},\"author\":{\"name\":\"Swapnil Zambare\",\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/#\\\/schema\\\/person\\\/922ac0131aaa7088c78c2cb1700e0c9a\"},\"headline\":\"Git for Salesforce Developers: Git and GitHub Basics\",\"datePublished\":\"2026-09-02T07:30:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/\"},\"wordCount\":1642,\"publisher\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/git-for-salesforce-developers-featured.png\",\"keywords\":[\"Beginner\",\"Deployment\",\"Git\",\"Salesforce\",\"Salesforce Developer\"],\"articleSection\":[\"Salesforce\",\"Salesforce Developer\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/\",\"url\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/\",\"name\":\"Git for Salesforce Developers: Git and GitHub Basics\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/git-for-salesforce-developers-featured.png\",\"datePublished\":\"2026-09-02T07:30:00+00:00\",\"description\":\"Git for Salesforce explained for beginners: track metadata changes, use branches, commit, push to GitHub and review work with pull requests.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/#primaryimage\",\"url\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/git-for-salesforce-developers-featured.png\",\"contentUrl\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/git-for-salesforce-developers-featured.png\",\"width\":2400,\"height\":1260,\"caption\":\"Git for Salesforce featured image: title card with Git branches\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/git-for-salesforce-developers\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Git for Salesforce Developers: Git and GitHub Basics\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/\",\"name\":\"Swapnil Zambare - Blog\",\"description\":\"Salesforce &amp; Tech Guides\",\"publisher\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/#organization\",\"name\":\"Swapnil Zambare - Blog\",\"url\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/site-icon-512.png\",\"contentUrl\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/site-icon-512.png\",\"width\":512,\"height\":512,\"caption\":\"Swapnil Zambare - Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/theSwapnilZambare\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/#\\\/schema\\\/person\\\/922ac0131aaa7088c78c2cb1700e0c9a\",\"name\":\"Swapnil Zambare\",\"sameAs\":[\"https:\\\/\\\/swapnilzambare.com\\\/blog\"],\"url\":\"https:\\\/\\\/swapnilzambare.com\\\/blog\\\/author\\\/swapnil-zambare\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Git for Salesforce Developers: Git and GitHub Basics","description":"Git for Salesforce explained for beginners: track metadata changes, use branches, commit, push to GitHub and review work with pull requests.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/","og_locale":"en_US","og_type":"article","og_title":"Git for Salesforce Developers: Git and GitHub Basics","og_description":"Git for Salesforce explained for beginners: track metadata changes, use branches, commit, push to GitHub and review work with pull requests.","og_url":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/","og_site_name":"Swapnil Zambare - Blog","article_published_time":"2026-09-02T07:30:00+00:00","og_image":[{"width":2400,"height":1260,"url":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-featured.png","type":"image\/png"}],"author":"Swapnil Zambare","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Swapnil Zambare","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/#article","isPartOf":{"@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/"},"author":{"name":"Swapnil Zambare","@id":"https:\/\/swapnilzambare.com\/blog\/#\/schema\/person\/922ac0131aaa7088c78c2cb1700e0c9a"},"headline":"Git for Salesforce Developers: Git and GitHub Basics","datePublished":"2026-09-02T07:30:00+00:00","mainEntityOfPage":{"@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/"},"wordCount":1642,"publisher":{"@id":"https:\/\/swapnilzambare.com\/blog\/#organization"},"image":{"@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/#primaryimage"},"thumbnailUrl":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-featured.png","keywords":["Beginner","Deployment","Git","Salesforce","Salesforce Developer"],"articleSection":["Salesforce","Salesforce Developer"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/","url":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/","name":"Git for Salesforce Developers: Git and GitHub Basics","isPartOf":{"@id":"https:\/\/swapnilzambare.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/#primaryimage"},"image":{"@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/#primaryimage"},"thumbnailUrl":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-featured.png","datePublished":"2026-09-02T07:30:00+00:00","description":"Git for Salesforce explained for beginners: track metadata changes, use branches, commit, push to GitHub and review work with pull requests.","breadcrumb":{"@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/#primaryimage","url":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-featured.png","contentUrl":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/10\/git-for-salesforce-developers-featured.png","width":2400,"height":1260,"caption":"Git for Salesforce featured image: title card with Git branches"},{"@type":"BreadcrumbList","@id":"https:\/\/swapnilzambare.com\/blog\/git-for-salesforce-developers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/swapnilzambare.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Git for Salesforce Developers: Git and GitHub Basics"}]},{"@type":"WebSite","@id":"https:\/\/swapnilzambare.com\/blog\/#website","url":"https:\/\/swapnilzambare.com\/blog\/","name":"Swapnil Zambare - Blog","description":"Salesforce &amp; Tech Guides","publisher":{"@id":"https:\/\/swapnilzambare.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/swapnilzambare.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/swapnilzambare.com\/blog\/#organization","name":"Swapnil Zambare - Blog","url":"https:\/\/swapnilzambare.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/swapnilzambare.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/09\/site-icon-512.png","contentUrl":"https:\/\/swapnilzambare.com\/blog\/wp-content\/uploads\/2026\/09\/site-icon-512.png","width":512,"height":512,"caption":"Swapnil Zambare - Blog"},"image":{"@id":"https:\/\/swapnilzambare.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/theSwapnilZambare"]},{"@type":"Person","@id":"https:\/\/swapnilzambare.com\/blog\/#\/schema\/person\/922ac0131aaa7088c78c2cb1700e0c9a","name":"Swapnil Zambare","sameAs":["https:\/\/swapnilzambare.com\/blog"],"url":"https:\/\/swapnilzambare.com\/blog\/author\/swapnil-zambare\/"}]}},"_links":{"self":[{"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/posts\/1204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/comments?post=1204"}],"version-history":[{"count":0,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/posts\/1204\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/media\/1201"}],"wp:attachment":[{"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/media?parent=1204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/categories?post=1204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/tags?post=1204"},{"taxonomy":"swapz_series","embeddable":true,"href":"https:\/\/swapnilzambare.com\/blog\/wp-json\/wp\/v2\/swapz_series?post=1204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}