CINXE.COM
Git Hooks | Atlassian Git Tutorial
<!DOCTYPE html> <html id="magnolia" lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta property="fb:pages" content="115407078489594" /> <meta name="description" content="Git Hooks are scripts that run automatically every time a particular event occurs in a Git repository. Learn what they do and how to use them effectively."> <meta name="author" content="Atlassian"> <link rel="canonical" href="https://www.atlassian.com/git/tutorials/git-hooks"/> <title> Git Hooks | Atlassian Git Tutorial </title> <link rel="preload" href="https://wac-cdn.atlassian.com/static/master/8798/assets/build/fonts/charlie-sans/charlie-text/Charlie_Text-Regular.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="https://wac-cdn.atlassian.com/static/master/8798/assets/build/fonts/charlie-sans/charlie-text/Charlie_Text-Semibold.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="https://wac-cdn.atlassian.com/static/master/8798/assets/build/fonts/charlie-sans/charlie-text/Charlie_Text-Bold.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="https://wac-cdn.atlassian.com/static/master/8798/assets/build/fonts/charlie-sans/charlie-text/Charlie_Text-Black.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="https://wac-cdn.atlassian.com/static/master/8798/assets/build/fonts/charlie-sans/charlie-display/Charlie_Display-Semibold.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="https://wac-cdn.atlassian.com/static/master/8798/assets/build/fonts/charlie-sans/charlie-display/Charlie_Display-Black.woff2" as="font" type="font/woff2" crossorigin> <link rel="stylesheet" href="https://wac-cdn.atlassian.com/static/master/8798/assets/build/css/wpl-main.css?cdnVersion=2563" id="main-css" /> <link href="https://wac-cdn.atlassian.com" rel="preconnect"> <script type="text/javascript" src="https://wac-cdn.atlassian.com/static/master/8798/assets/build/js/head.js?cdnVersion=2563"></script> <link rel="alternate" href="https://www.atlassian.com/git/tutorials/git-hooks" hreflang="x-default" /> <link rel="alternate" href="https://www.atlassian.com/git/tutorials/git-hooks" hreflang="en" /> <link rel="alternate" href="https://www.atlassian.com/ja/git/tutorials/git-hooks" hreflang="ja" /> <link rel="alternate" href="https://www.atlassian.com/fr/git/tutorials/git-hooks" hreflang="fr" /> <link rel="alternate" href="https://www.atlassian.com/de/git/tutorials/git-hooks" hreflang="de" /> <link rel="alternate" href="https://www.atlassian.com/es/git/tutorials/git-hooks" hreflang="es" /> <link rel="alternate" href="https://www.atlassian.com/br/git/tutorials/git-hooks" hreflang="pt-BR" /> <link rel="alternate" href="https://www.atlassian.com/zh/git/tutorials/git-hooks" hreflang="zh-Hans" /> <link rel="alternate" href="https://www.atlassian.com/ko/git/tutorials/git-hooks" hreflang="ko" /> <link rel="alternate" href="https://www.atlassian.com/ru/git/tutorials/git-hooks" hreflang="ru" /> <link rel="alternate" href="https://www.atlassian.com/pl/git/tutorials/git-hooks" hreflang="pl" /> <link rel="alternate" href="https://www.atlassian.com/it/git/tutorials/git-hooks" hreflang="it" /> <link rel="alternate" href="https://www.atlassian.com/nl/git/tutorials/git-hooks" hreflang="nl" /> <link rel="alternate" href="https://www.atlassian.com/hu/git/tutorials/git-hooks" hreflang="hu" /> <link rel="apple-touch-icon" sizes="16x16" href="/favicon-16x16.png" /> <link rel="apple-touch-icon" sizes="32x32" href="/favicon-32x32.png" /> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32" /> <meta name="theme-color" content="#205081"> <meta property="og:title" content="Git Hooks | Atlassian Git Tutorial" /> <meta property="og:description" content="Git Hooks are scripts that run automatically every time a particular event occurs in a Git repository. Learn what they do and how to use them effectively." /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.atlassian.com/git/tutorials/git-hooks" /> <meta property="og:site_name" content="Atlassian" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="@Atlassian" /> <script src="https://wac-cdn.atlassian.com/static/master/8798/assets/build/js/jquery.js?cdnVersion=2563"></script> <script type="text/javascript"> window.featureFlags = "".split('&') .reduce((flags, flagStr) => { const [flagKey, flagValue] = flagStr.split('='); return { ...flags, [flagKey]: flagValue }; }, {}) </script> <script type="text/javascript"> window.cmsPageVariant = window.cmsPageVariant ? window.cmsPageVariant : window.featureFlags?.cmsVariant; </script> <script type="text/javascript"> var LOCALIZED_PRICING_CONTENTFUL_SPACE = "3s3v3nq72la0"; var LOCALIZED_PRICING_CONTENTFUL_ENVIRONMENT = "master"; var LOCALIZED_PRICING_CONTENTFUL_ACCESS_TOKEN = "v5nSeyuO6dUxZX_Gh5OWEHOJHt3GYSKtyB7ySulLgHg"; var LOCALIZED_CCP_PRICING_CONTENTFUL_ENVIRONMENT = "master"; var LOCALIZED_CCP_PRICING_CONTENTFUL_ACCESS_TOKEN = "v5nSeyuO6dUxZX_Gh5OWEHOJHt3GYSKtyB7ySulLgHg"; var LOCALIZED_PRICING_USE_GEO_CURRENCY = true; </script> </head> <body id="git-hooks" class="wac git tutorials git-hooks"> <div class="language-selector-banner "> <script type="text/x-component"> { "type":"imkt.components.LanguageSwitcherNav", "params": { } } </script> <span class="language-selector-banner__close-banner">Close</span> <div class="language-selector-banner__inner-container"> <div class="language-selector-banner__language-suggestion"> <a href="#">View this page in <span class="preferred-locale-detected">your language</span>?</a> </div> <div class="language-selector-banner__language-selector"> <a href="#" class="language-selector-banner__language-selector__trigger">All languages</a> <div class="language-selector-banner__language-selector__options"> <div class="language-selector-banner__language-selector__options__header"> <span>Choose your language</span> </div> <ul class="language-selector-banner__language-selector__options__list"> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="中文" data-event="clicked" data-uuid="212a1c0b-40-0" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="zh" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/zh/git/tutorials/git-hooks" href="https://www.atlassian.com/zh/git/tutorials/git-hooks">中文</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="Deutsch" data-event="clicked" data-uuid="212a1c0b-40-1" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="de" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/de/git/tutorials/git-hooks" href="https://www.atlassian.com/de/git/tutorials/git-hooks">Deutsch</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="English" data-event="clicked" data-uuid="212a1c0b-40-2" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="en" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/git/tutorials/git-hooks" href="https://www.atlassian.com/git/tutorials/git-hooks">English</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="Español" data-event="clicked" data-uuid="212a1c0b-40-3" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="es" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/es/git/tutorials/git-hooks" href="https://www.atlassian.com/es/git/tutorials/git-hooks">Español</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="Français" data-event="clicked" data-uuid="212a1c0b-40-4" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="fr" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/fr/git/tutorials/git-hooks" href="https://www.atlassian.com/fr/git/tutorials/git-hooks">Français</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="Italiano" data-event="clicked" data-uuid="212a1c0b-40-5" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="it" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/it/git/tutorials/git-hooks" href="https://www.atlassian.com/it/git/tutorials/git-hooks">Italiano</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="한국어" data-event="clicked" data-uuid="212a1c0b-40-6" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="ko" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/ko/git/tutorials/git-hooks" href="https://www.atlassian.com/ko/git/tutorials/git-hooks">한국어</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="Nederlands" data-event="clicked" data-uuid="212a1c0b-40-7" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="nl" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/nl/git/tutorials/git-hooks" href="https://www.atlassian.com/nl/git/tutorials/git-hooks">Nederlands</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="日本語" data-event="clicked" data-uuid="212a1c0b-40-8" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="ja" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/ja/git/tutorials/git-hooks" href="https://www.atlassian.com/ja/git/tutorials/git-hooks">日本語</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="Português" data-event="clicked" data-uuid="212a1c0b-40-9" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="br" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/br/git/tutorials/git-hooks" href="https://www.atlassian.com/br/git/tutorials/git-hooks">Português</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="Pусский" data-event="clicked" data-uuid="212a1c0b-40-10" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="ru" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/ru/git/tutorials/git-hooks" href="https://www.atlassian.com/ru/git/tutorials/git-hooks">Pусский</a> </li> <li class="language-selector-banner__language-selector__options__list__item"> <a aria-label="Polski" data-event="clicked" data-uuid="212a1c0b-40-11" data-event-component="linkButton" data-event-container="languageSelectorBanner" data-schema-version="1" data-product-key="bitbucket" data-lang="pl" class="notranslate SL_opaque" data-locale-url="https://www.atlassian.com/pl/git/tutorials/git-hooks" href="https://www.atlassian.com/pl/git/tutorials/git-hooks">Polski</a> </li> </ul> </div> </div> </div> </div> <header class="header header--wac"> <style> @media (min-width: 1024px) { #adg4-global-nav .adg4-nav-link-products .dropdown-content { left: -100px; width: 912px; } } .adg4-nav-link-teams .dropdown-content, .adg4-nav-link-why-atlassian .dropdown-content { width: 696px; left: 5px; } .adg4-nav-link-resources .dropdown-content { width: 912px; right: -170px; } #adg4-global-nav .intra-div.n10 { background: #F8F8F8; } #adg4-global-nav div.h5:before { content: "\00A0"; display: block; } #adg4-global-nav a.component__link.default { font-size: 0.875rem; margin: 0; padding: 5px 0; line-height: 1.8; display: block; color: inherit; } #adg4-global-nav a.component__link.default:hover { text-decoration: none; color: #0052CC; } #adg4-global-nav h3 { font-size: 0.875rem; margin: 0; font-weight: 600; } #adg4-global-nav p { font-size: 0.75rem; margin: 0; color: #505258; } #adg4-global-nav .products-tab-contents .component__image--left img { border-radius: 5px; padding: 5px; background-color: #f8f8f8; margin: 0; } #adg4-global-nav .products-tab-contents a.component--block__link:hover .component__image--left img { background-color: #F0F1F2; } #adg4-global-nav .dropdown-content a.component--block__link:hover h3 { color: #1868DB; } .nav-two-col .intra-div.flexRow.wrap, .nav-three-col .intra-div.flexRow.wrap, .nav-four-col .intra-div.flexRow.wrap, .bottom-three-col .intra-div.flexRow.wrap, .bottom-four-col .intra-div.flexRow.wrap { display: grid; gap: 32px; } .nav-two-col .intra-div.flexRow.wrap { grid-template-columns: 1fr 1fr; padding: 40px 32px 40px 40px; } .bottom-three-col .intra-div.flexRow.wrap, .nav-three-col .intra-div.flexRow.wrap { grid-template-columns: 1fr 1fr 1fr; padding: 40px; } .bottom-four-col .intra-div.flexRow.wrap, .nav-four-col .intra-div.flexRow.wrap { grid-template-columns: 1fr 1fr 1fr 1fr; padding: 40px; } @media (max-width: 1023px) { .bottom-three-col .intra-div.flexRow.wrap, .bottom-four-col .intra-div.flexRow.wrap, .nav-two-col .intra-div.flexRow.wrap, .nav-three-col .intra-div.flexRow.wrap, .nav-four-col .intra-div.flexRow.wrap { padding: 20px; grid-template-columns: 1fr; } } .component.s0.between.component--block.team-card { position: relative; } .component.s0.between.component--block.team-card .hoverable { position: absolute; opacity: 0; width: 1px; height: 1px; top: 0px; left: 0px; } .component.s0.between.component--block.team-card:hover .component--image-heading-textblock img { opacity: 0; } .component.s0.between.component--block.team-card:hover .hoverable { width: auto; height: 28px; opacity: 1; } #adg4-global-nav .component--image-heading-textblock.with-flex { display: flex; } #adg4-global-nav .component--image-heading-textblock.with-flex div.component__image { margin-right: 8px; } #adg4-global-nav .component--image-heading-textblock.with-flex div.component__heading-textblock { margin-left: 8px; } #adg4-global-nav span.lozenge { border: 0; background: #cfe1fd; border-radius: 30px; font-size: .625rem; font-weight: 600; text-transform: uppercase; padding: 1px 6px; letter-spacing: .3px; line-height: 1.45; white-space: nowrap; vertical-align: middle; } .imkt-sticky-wrapper { border-top: 1px solid #DDDEE1; } .imkt-sticky-wrapper .imkt-navbar .imkt-navbar__main-section { min-height: 72px } </style> <nav id="adg4-global-nav" class="adg4-global-nav globalNav prod-view "> <div class="nav-space"> <div class="adg4-nav-inner"> <div class="overlay-style overlay-color"></div> <div class="overlay-style overlay-clickable"><button class="close-all"></button></div> <a href="/" class="header-link" data-event="clicked" data-uuid="0703b6c2-3e-logo-link" data-event-component="linkButton" data-event-container="globalNavWac-ADG4" data-schema-version="1" data-product-key="bitbucket" > <img class="header-logo" alt="Atlassian" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/AtlassianHeaderLogo.svg" style="aspect-ratio: 180/24;"> </a> <button class="mobile-toggle" title="Mobile menu"> <hr class="top" /> <hr class="mid mid1" /> <hr class="mid mid2" /> <hr class="bot" /> </button> <div class="menu-right"> <div class="menu-popout"> <div class="inter-popout-container"> <ul class="nav-links"> <li class="cta-mobile"> <a class="cta button--one button--regular button--primary" href="/try" data-event="clicked" data-uuid="0703b6c2-3e-cta-mobile" data-event-component="linkButton" data-event-container="globalNav-cta-mobile" data-schema-version="1" data-product-key="bitbucket" data-label-english="Get it free" >Get it free</a> </li> <li class="outline-element"></li> <li id="adg4-nav-link-products" class="nav-link globalNav has-dropdown multi adg4-nav-link-products"> <button class="nav-link-button main current-page-false" data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64" data-event="clicked" data-uuid="22d568a6-9f-link" data-event-component="linkButton" data-event-container="globalNav-navigation-link" data-schema-version="1" data-product-key="bitbucket" > Products <svg class="desktop" width="11" height="6" viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.19995 1.18182L5.19995 4.81818L1.19995 1.18182" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> </button> <button class="mobile-nav-link nav-link-button" data-tabid="tab-d3062495-a1fa-455d-af4a-1deb514d7223" data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64"> Featured <svg class="mobile" width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.36377 1L5.00013 5L1.36377 9" stroke="#101214" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> </button> <button class="mobile-nav-link nav-link-button" data-tabid="tab-e0500fdf-b128-45d6-93b4-b062a202b657" data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64"> Developers <svg class="mobile" width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.36377 1L5.00013 5L1.36377 9" stroke="#101214" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> </button> <button class="mobile-nav-link nav-link-button" data-tabid="tab-c014fb24-377d-4a31-89c4-6071c19f8a95" data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64"> Product Managers <svg class="mobile" width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.36377 1L5.00013 5L1.36377 9" stroke="#101214" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> </button> <button class="mobile-nav-link nav-link-button" data-tabid="tab-3d19a5a4-952c-4fb1-9f13-7892fa162cec" data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64"> IT professionals <svg class="mobile" width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.36377 1L5.00013 5L1.36377 9" stroke="#101214" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> </button> <button class="mobile-nav-link nav-link-button" data-tabid="tab-e3ef4fba-ad10-4f84-af12-2f6f6d1efd67" data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64"> Business Teams <svg class="mobile" width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.36377 1L5.00013 5L1.36377 9" stroke="#101214" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> </button> <button class="mobile-nav-link nav-link-button" data-tabid="tab-7d0e41e0-832f-4327-9102-52887f676ce2" data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64"> Leadership Teams <svg class="mobile" width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.36377 1L5.00013 5L1.36377 9" stroke="#101214" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> </button> <div class="dropdown-content" id="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64"> <div class="dropdown-content-inner"> <div class="tab-buttons-area"> <button class="tab-button active" data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64" data-tabid="tab-d3062495-a1fa-455d-af4a-1deb514d7223" data-event="clicked" data-uuid="d3062495-a1-tab-butotn" data-event-component="linkButton" data-event-container="globalNav-tab-button" data-schema-version="1" data-product-key="bitbucket" > Featured </button> <button class="tab-button " data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64" data-tabid="tab-e0500fdf-b128-45d6-93b4-b062a202b657" data-event="clicked" data-uuid="e0500fdf-b1-tab-butotn" data-event-component="linkButton" data-event-container="globalNav-tab-button" data-schema-version="1" data-product-key="bitbucket" > Developers </button> <button class="tab-button " data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64" data-tabid="tab-c014fb24-377d-4a31-89c4-6071c19f8a95" data-event="clicked" data-uuid="c014fb24-37-tab-butotn" data-event-component="linkButton" data-event-container="globalNav-tab-button" data-schema-version="1" data-product-key="bitbucket" > Product Managers </button> <button class="tab-button " data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64" data-tabid="tab-3d19a5a4-952c-4fb1-9f13-7892fa162cec" data-event="clicked" data-uuid="3d19a5a4-95-tab-butotn" data-event-component="linkButton" data-event-container="globalNav-tab-button" data-schema-version="1" data-product-key="bitbucket" > IT professionals </button> <button class="tab-button " data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64" data-tabid="tab-e3ef4fba-ad10-4f84-af12-2f6f6d1efd67" data-event="clicked" data-uuid="e3ef4fba-ad-tab-butotn" data-event-component="linkButton" data-event-container="globalNav-tab-button" data-schema-version="1" data-product-key="bitbucket" > Business Teams </button> <button class="tab-button " data-navlinkid="nav-link-22d568a6-9ff4-4125-bc6b-05c6e1965a64" data-tabid="tab-7d0e41e0-832f-4327-9102-52887f676ce2" data-event="clicked" data-uuid="7d0e41e0-83-tab-butotn" data-event-component="linkButton" data-event-container="globalNav-tab-button" data-schema-version="1" data-product-key="bitbucket" > Leadership Teams </button> <div class="link-in-dropdown"> <a class="easy-link-arrow" href="/software" data-event="clicked" data-uuid="7d0e41e0-83" data-event-component="linkButton" data-event-container="globalNav-tab-link-in-dropdown" data-schema-version="1" data-product-key="bitbucket" > See all products </a> </div> </div> <div class="tab-content-area globalNav cols-6"> <div id="tab-d3062495-a1fa-455d-af4a-1deb514d7223" class="singular-tab-content active"> <h5 class="mobile-title eyebrows"> Featured </h5> <div class="component component--block products-tab-contents nav-two-col" style="margin:0;" > <div class="intra-div flexRow alignContentStart alignItemsStart justifyStart wrap no s0 between flexColSm has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/jira" class="component--block__link" data-event="clicked" data-uuid="866c24d9-b0" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="a15115f1" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira </h3> <p>Flexible project management</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/confluence" class="component--block__link" data-event="clicked" data-uuid="561b5cff-b0" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="c58719b2" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Confluence.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Confluence </h3> <p>Knowledge, all in one place</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/jira/service-management" class="component--block__link" data-event="clicked" data-uuid="94838acb-4e" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="402ab225" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira-Service-Management.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira Service Management </h3> <p>High-velocity service delivery</p> </div> </div> </a> </div> <div class="component s0 between hide-all component--block" style="margin:4px 0;padding:0;" > <a href="https://trello.com/home" class="component--block__link" data-event="clicked" data-uuid="1cf0174b-9a" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="6069d7e9" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Trello.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Trello </h3> <p>Organized & visualized work</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/rovo" class="component--block__link" data-event="clicked" data-uuid="154e84e5-f5" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="1a28c744" alt="Rovo icon" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn-bfldr.atlassian.com/K3MHR9G8/at/k5xhw8hpqxghzb55nfktt4/logo-light_Rovo_mark_brand_RGB.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Rovo <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Unlock enterprise knowledge</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/jira/product-discovery" class="component--block__link" data-event="clicked" data-uuid="44176d6a-9a" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="61053761" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira-Product-Discovery.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira Product Discovery <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Capture & prioritize ideas</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/compass" class="component--block__link" data-event="clicked" data-uuid="a182ac56-4e" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="659f8f31" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Compass.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Compass <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Optimize software health</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/guard" class="component--block__link" data-event="clicked" data-uuid="50063449-6b" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="58aaa51d" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Guard.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Guard <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Enhanced cloud security</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/loom" class="component--block__link" data-event="clicked" data-uuid="6ee54a1e-1e" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="e12ac81c" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Loom.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Loom <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Quick, async video updates</p> </div> </div> </a> </div> </div> </div> </div> <div id="tab-e0500fdf-b128-45d6-93b4-b062a202b657" class="singular-tab-content "> <h5 class="mobile-title eyebrows"> Developers </h5> <div class="component component--block products-tab-contents nav-two-col" style="margin:0;" > <div class="intra-div flexRow alignContentStart alignItemsStart justifyStart wrap no s0 between flexColSm has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/jira" class="component--block__link" data-event="clicked" data-uuid="676acbb3-62" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="29306f11" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira </h3> <p>Flexible project management</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/bitbucket" class="component--block__link" data-event="clicked" data-uuid="c33432cf-d2" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="04091352" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Bitbucket.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Bitbucket </h3> <p>Collaborative code repos</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/compass" class="component--block__link" data-event="clicked" data-uuid="b189cc6c-90" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="461b52ba" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Compass.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Compass <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Optimize software health</p> </div> </div> </a> </div> </div> </div> </div> <div id="tab-c014fb24-377d-4a31-89c4-6071c19f8a95" class="singular-tab-content "> <h5 class="mobile-title eyebrows"> Product Managers </h5> <div class="component component--block products-tab-contents nav-two-col" style="margin:0;" > <div class="intra-div flexRow alignContentStart alignItemsStart justifyStart wrap no s0 between flexColSm has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/jira" class="component--block__link" data-event="clicked" data-uuid="290c4dc3-76" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="a76bb88f" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira </h3> <p>Flexible project management</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/confluence" class="component--block__link" data-event="clicked" data-uuid="6ce391a6-10" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="50f44221" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Confluence.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Confluence </h3> <p>Knowledge, all in one place</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0 ;padding:0;" > <a href="/software/jira/product-discovery" class="component--block__link" data-event="clicked" data-uuid="b6e816c2-90" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="38733354" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira-Product-Discovery.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira Product Discovery <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Capture & prioritize ideas</p> </div> </div> </a> </div> </div> </div> </div> <div id="tab-3d19a5a4-952c-4fb1-9f13-7892fa162cec" class="singular-tab-content "> <h5 class="mobile-title eyebrows"> IT professionals </h5> <div class="component component--block products-tab-contents nav-two-col" style="margin:0;" > <div class="intra-div flexRow alignContentStart alignItemsStart justifyStart wrap no s0 between flexColSm has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/jira/service-management" class="component--block__link" data-event="clicked" data-uuid="1c45f049-49" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="74cb2c5b" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira-Service-Management.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira Service Management </h3> <p>High-velocity service delivery</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/guard" class="component--block__link" data-event="clicked" data-uuid="923a9b01-40" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="cd74c518" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Guard.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Guard <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Enhanced cloud security</p> </div> </div> </a> </div> </div> </div> </div> <div id="tab-e3ef4fba-ad10-4f84-af12-2f6f6d1efd67" class="singular-tab-content "> <h5 class="mobile-title eyebrows"> Business Teams </h5> <div class="component component--block products-tab-contents nav-two-col" style="margin:0;" > <div class="intra-div flexRow alignContentStart alignItemsStart justifyStart wrap no s0 between flexColSm has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/jira" class="component--block__link" data-event="clicked" data-uuid="13474f83-26" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="1ef222e7" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira </h3> <p>Flexible project management</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/confluence" class="component--block__link" data-event="clicked" data-uuid="4b6d0074-94" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="5dc02e14" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Confluence.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Confluence </h3> <p>Knowledge, all in one place</p> </div> </div> </a> </div> <div class="component alignContentStretch alignItemsStretch justifyStart noWrap no s0 between component--block" style="margin:4px 0;padding:0;:;" > <a href="https://trello.com/home" class="component--block__link" data-event="clicked" data-uuid="05036e06-dd" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="f5faeacd" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Trello.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Trello </h3> <p>Organized & visualized work</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0;padding:0;" > <a href="/software/loom" class="component--block__link" data-event="clicked" data-uuid="c3dcae40-95" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="4d83dea7" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Loom.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Loom <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Quick, async video updates</p> </div> </div> </a> </div> </div> </div> </div> <div id="tab-7d0e41e0-832f-4327-9102-52887f676ce2" class="singular-tab-content "> <h5 class="mobile-title eyebrows"> Leadership Teams </h5> <div class="component component--block products-tab-contents nav-two-col" style="margin:0;" > <div class="intra-div flexRow alignContentStart alignItemsStart justifyStart wrap no s0 between flexColSm has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block" style="margin:4px 0 ;padding:0;" > <a href="/software/jira" class="component--block__link" data-event="clicked" data-uuid="3c258fc0-fc" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="a891fdc9" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira </h3> <p>Flexible project management</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0 ;padding:0;" > <a href="https://loom.com" class="component--block__link" data-event="clicked" data-uuid="21331073-0f" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="3bbb9fed" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Confluence.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Confluence </h3> <p>Knowledge, all in one place</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0 ;padding:0;" > <a href="/software/loom" class="component--block__link" data-event="clicked" data-uuid="b30cd095-78" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="c3942edb" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Loom.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Loom <span class="lozenge blue200 text-adg4secondarynavy">NEW</span> </h3> <p>Quick, async video updates</p> </div> </div> </a> </div> <div class="component s0 between component--block" style="margin:4px 0 ;padding:0;" > <a href="/software/jira/align" class="component--block__link" data-event="clicked" data-uuid="e177e36d-f2" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="c3d49c45" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira-Align.svg" loading="lazy" /> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Jira Align </h3> <p>Enterprise-wide work planning & value</p> </div> </div> </a> </div> </div> </div> </div> </div></div> <button class="mobile-back-button"> <svg width="16" height="15" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.77087 14.5334C7.87109 14.4335 7.9506 14.3148 8.00485 14.1841C8.0591 14.0535 8.08702 13.9134 8.08702 13.772C8.08702 13.6306 8.0591 13.4905 8.00485 13.3599C7.9506 13.2292 7.87109 13.1105 7.77087 13.0106L3.68091 8.92576L14.0174 8.92576C14.3034 8.92576 14.5777 8.8123 14.7799 8.61033C14.9821 8.40837 15.0957 8.13444 15.0957 7.84882C15.0957 7.5632 14.9821 7.28927 14.7799 7.08731C14.5777 6.88534 14.3034 6.77188 14.0174 6.77188L3.68091 6.77188L7.77087 2.68705C7.87109 2.58712 7.9506 2.46843 8.00485 2.33778C8.0591 2.20714 8.08702 2.06709 8.08702 1.92565C8.08702 1.78421 8.0591 1.64416 8.00485 1.51351C7.9506 1.38286 7.87109 1.26418 7.77087 1.16425C7.35033 0.744243 6.6667 0.744243 6.24508 1.16425L0.315557 7.08742C0.120278 7.28171 0.00717735 7.54348 -0.00038147 7.81867V7.88005C0.00734234 8.15489 0.120439 8.41626 0.315557 8.61022L6.24508 14.5334C6.34523 14.6335 6.46415 14.713 6.59505 14.7672C6.72596 14.8213 6.86627 14.8492 7.00798 14.8492C7.14968 14.8492 7.28999 14.8213 7.4209 14.7672C7.5518 14.713 7.67072 14.6335 7.77087 14.5334Z" fill="#1868DB"/> </svg> Back </button> </div> </li> <li id="adg4-nav-link-teams" class="nav-link globalNav has-dropdown single adg4-nav-link-teams"> <button class="nav-link-button main current-page-false" data-navlinkid="nav-link-c7337bad-f071-4c96-b5a3-99d33e6c73bd" data-event="clicked" data-uuid="c7337bad-f0-link" data-event-component="linkButton" data-event-container="globalNav-navigation-link" data-schema-version="1" data-product-key="bitbucket" > Teams <svg class="desktop" width="11" height="6" viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.19995 1.18182L5.19995 4.81818L1.19995 1.18182" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> </button> <div class="dropdown-content" id="nav-link-c7337bad-f071-4c96-b5a3-99d33e6c73bd"> <div class="dropdown-content-inner"> <div class="tab-buttons-area"> </div> <div class="tab-content-area globalNav cols-1"> <div id="tab-8212b0b7-5103-48a7-8a92-ac9fbd91d1b4" class="singular-tab-content active"> <h5 class="mobile-title eyebrows"> Teams </h5> <div class="component component--block nav-three-col" style="margin:0;" > <div class="intra-div flexRow alignContentStart alignItemsStretch justifyStart wrap no s0 between flexColSm has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block team-card" style="margin:0;" > <a href="/teams/software-development" class="component--block__link" data-event="clicked" data-uuid="f708e77a-a5" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock"> <div class="component__image"> <img id="90d05cb9" alt="" class="component__image xs-compact-bottom xs-none-top" style="width:28px;height:28px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/nav-software.svg" loading="lazy" /> </div> <div class="component__heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Software </h3> <p>Ship high-quality, innovative software faster</p> </div> </div> <div class="component component--image hoverable"> <img id="38496121" alt="" class="component__image" style="width:28px;height:28px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/nav-software-hover.svg" loading="lazy" /> </div> </a> </div> <div class="component s0 between component--block team-card" style="margin:0;" > <a href="/teams/marketing" class="component--block__link" data-event="clicked" data-uuid="6fe6061e-15" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock"> <div class="component__image"> <img id="1126eb5b" alt="" class="component__image xs-none-top xs-compact-bottom" style="width:44px;height:28px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/nav-marketing.svg" loading="lazy" /> </div> <div class="component__heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Marketing </h3> <p>Collaborative strategies for marketing success</p> </div> </div> <div class="component component--image hoverable"> <img id="663b0d9c" alt="" class="component__image" style="width:44px;height:28px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/nav-marketing-hover.svg" loading="lazy" /> </div> </a> </div> <div class="component s0 between component--block team-card" style="margin:0;" > <a href="/teams/it" class="component--block__link" data-event="clicked" data-uuid="bd6097b7-ae" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock"> <div class="component__image"> <img id="c99a84f3" alt="" class="component__image xs-none-top xs-compact-bottom" style="width:32px;height:28px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/nav-it.svg" loading="lazy" /> </div> <div class="component__heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > IT </h3> <p>Deliver exceptional operations and support services.</p> </div> </div> <div class="component component--image hoverable"> <img id="b459ac25" alt="" class="component__image" style="width:32px;height:28px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/nav-it-hover.svg" loading="lazy" /> </div> </a> </div> </div> </div> <div class="component component--block bottom-three-col" style="margin-top:0;" > <div class="intra-div flexRow alignContentStart alignItemsStretch justifyStart wrap no s0 between flexColSm component--block__background neutral100 has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block col-1" style="margin:0;" > <div class="component component--heading"> <h5 class="fnt-wt font-wt-600 fnt-mg font-mgn-16 fnt-ln font-lnh- heading" > solution </h5> </div> <div class="component component--link-button "> <a href="/solutions/work-management" data-event="clicked" data-uuid="b179f79d-e5" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Work Management" data-label-english="Work Management" class="component__link default " > Work Management </a> </div> <div class="component component--link-button "> <a href="/solutions/itsm" data-event="clicked" data-uuid="5ad93cb6-9a" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="IT Service Management" data-label-english="IT Service Management" class="component__link default " > IT Service Management </a> </div> <div class="component component--link-button "> <a href="/solutions/devops" data-event="clicked" data-uuid="d013113f-55" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Agile & DevOps" data-label-english="Agile & DevOps" class="component__link default " > Agile & DevOps </a> </div> </div> <div class="component s0 between component--block col-1" > <div class="component component--heading"> <h5 class="fnt-wt font-wt-600 fnt-mg font-mgn-16 fnt-ln font-lnh- heading" > By team size </h5> </div> <div class="component component--link-button "> <a href="/enterprise" data-event="clicked" data-uuid="f56440e6-51" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Enterprise" data-label-english="Enterprise" class="component__link default " > Enterprise </a> </div> <div class="component component--link-button "> <a href="/software/small-business" data-event="clicked" data-uuid="7515a7d2-b8" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Small business" data-label-english="Small business" class="component__link default " > Small business </a> </div> <div class="component component--link-button "> <a href="/software/startups" data-event="clicked" data-uuid="7dd4032c-05" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Startup" data-label-english="Startup" class="component__link default " > Startup </a> </div> <div class="component component--link-button "> <a href="/teams/nonprofits" data-event="clicked" data-uuid="ecd56900-50" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Non-profit" data-label-english="Non-profit" class="component__link default " > Non-profit </a> </div> </div> <div class="component s0 between component--block col-1" > <div class="component component--heading"> <h5 class="fnt-wt font-wt-600 fnt-mg font-mgn-16 fnt-ln font-lnh- heading" > By industry </h5> </div> <div class="component component--link-button "> <a href="/industries/retail" data-event="clicked" data-uuid="d1ccbcfe-58" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Retail" data-label-english="Retail" class="component__link default " > Retail </a> </div> <div class="component component--link-button "> <a href="/industries/telecom" data-event="clicked" data-uuid="3c615ef5-97" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Telecommunications" data-label-english="Telecommunications" class="component__link default " > Telecommunications </a> </div> <div class="component component--link-button "> <a href="/industries/professional-services" data-event="clicked" data-uuid="4926e993-46" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Professional services" data-label-english="Professional services" class="component__link default " > Professional services </a> </div> <div class="component component--link-button "> <a href="/government" data-event="clicked" data-uuid="89d1956c-e2" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Government" data-label-english="Government" class="component__link default " > Government </a> </div> </div> </div> </div> </div> </div></div> <button class="mobile-back-button"> <svg width="16" height="15" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.77087 14.5334C7.87109 14.4335 7.9506 14.3148 8.00485 14.1841C8.0591 14.0535 8.08702 13.9134 8.08702 13.772C8.08702 13.6306 8.0591 13.4905 8.00485 13.3599C7.9506 13.2292 7.87109 13.1105 7.77087 13.0106L3.68091 8.92576L14.0174 8.92576C14.3034 8.92576 14.5777 8.8123 14.7799 8.61033C14.9821 8.40837 15.0957 8.13444 15.0957 7.84882C15.0957 7.5632 14.9821 7.28927 14.7799 7.08731C14.5777 6.88534 14.3034 6.77188 14.0174 6.77188L3.68091 6.77188L7.77087 2.68705C7.87109 2.58712 7.9506 2.46843 8.00485 2.33778C8.0591 2.20714 8.08702 2.06709 8.08702 1.92565C8.08702 1.78421 8.0591 1.64416 8.00485 1.51351C7.9506 1.38286 7.87109 1.26418 7.77087 1.16425C7.35033 0.744243 6.6667 0.744243 6.24508 1.16425L0.315557 7.08742C0.120278 7.28171 0.00717735 7.54348 -0.00038147 7.81867V7.88005C0.00734234 8.15489 0.120439 8.41626 0.315557 8.61022L6.24508 14.5334C6.34523 14.6335 6.46415 14.713 6.59505 14.7672C6.72596 14.8213 6.86627 14.8492 7.00798 14.8492C7.14968 14.8492 7.28999 14.8213 7.4209 14.7672C7.5518 14.713 7.67072 14.6335 7.77087 14.5334Z" fill="#1868DB"/> </svg> Back </button> </div> </li> <li id="adg4-nav-link-why-atlassian" class="nav-link globalNav has-dropdown single adg4-nav-link-why-atlassian"> <button class="nav-link-button main current-page-false" data-navlinkid="nav-link-fa47bfda-a17c-48bb-b238-3fb7545b1e42" data-event="clicked" data-uuid="fa47bfda-a1-link" data-event-component="linkButton" data-event-container="globalNav-navigation-link" data-schema-version="1" data-product-key="bitbucket" > Why Atlassian <svg class="desktop" width="11" height="6" viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.19995 1.18182L5.19995 4.81818L1.19995 1.18182" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> </button> <div class="dropdown-content" id="nav-link-fa47bfda-a17c-48bb-b238-3fb7545b1e42"> <div class="dropdown-content-inner"> <div class="tab-buttons-area"> </div> <div class="tab-content-area globalNav cols-1"> <div id="tab-94bac309-9300-4042-bafe-297e6188d84f" class="singular-tab-content active"> <h5 class="mobile-title eyebrows"> Why Atlassian </h5> <div class="component component--block nav-three-col" style="margin:0;" > <div class="intra-div flexRow alignContentStart alignItemsStretch justifyStart wrap no s0 between flexColSm has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block" style="margin:0;" > <a href="https://marketplace.atlassian.com/" class="component--block__link" data-event="clicked" data-uuid="c9dc5872-ad" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Integrations </h3> <p>Connect thousands of apps to your Atlassian products</p> </div> </a> </div> <div class="component s0 between component--block" style="margin:0;" > <a href="/customers" class="component--block__link" data-event="clicked" data-uuid="d7af88e4-e4" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Customers </h3> <p>Case studies & stories powered by teamwork</p> </div> </a> </div> <div class="component s0 between component--block" style="margin:0;" > <a href="/trust/compliance/resources/fedramp" class="component--block__link" data-event="clicked" data-uuid="214ef2f0-e9" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > FedRAMP </h3> <p>Compliant solutions for the public sector</p> </div> </a> </div> <div class="component s0 between component--block" style="margin:0;" > <a href="/trust/resilience" class="component--block__link" data-event="clicked" data-uuid="12386179-63" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Resilience </h3> <p>Enterprise-grade & highly performant infrastructure</p> </div> </a> </div> <div class="component s0 between component--block" style="margin:0;" > <a href="/platform" class="component--block__link" data-event="clicked" data-uuid="b6627015-48" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Platform </h3> <p>Our deeply integrated, reliable & secure platform</p> </div> </a> </div> <div class="component s0 between component--block" style="margin:0;" > <a href="/trust" class="component--block__link" data-event="clicked" data-uuid="7a444656-29" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Trust center </h3> <p>Ensure your data’s security, compliance & availability</p> </div> </a> </div> </div> </div> </div> </div></div> <button class="mobile-back-button"> <svg width="16" height="15" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.77087 14.5334C7.87109 14.4335 7.9506 14.3148 8.00485 14.1841C8.0591 14.0535 8.08702 13.9134 8.08702 13.772C8.08702 13.6306 8.0591 13.4905 8.00485 13.3599C7.9506 13.2292 7.87109 13.1105 7.77087 13.0106L3.68091 8.92576L14.0174 8.92576C14.3034 8.92576 14.5777 8.8123 14.7799 8.61033C14.9821 8.40837 15.0957 8.13444 15.0957 7.84882C15.0957 7.5632 14.9821 7.28927 14.7799 7.08731C14.5777 6.88534 14.3034 6.77188 14.0174 6.77188L3.68091 6.77188L7.77087 2.68705C7.87109 2.58712 7.9506 2.46843 8.00485 2.33778C8.0591 2.20714 8.08702 2.06709 8.08702 1.92565C8.08702 1.78421 8.0591 1.64416 8.00485 1.51351C7.9506 1.38286 7.87109 1.26418 7.77087 1.16425C7.35033 0.744243 6.6667 0.744243 6.24508 1.16425L0.315557 7.08742C0.120278 7.28171 0.00717735 7.54348 -0.00038147 7.81867V7.88005C0.00734234 8.15489 0.120439 8.41626 0.315557 8.61022L6.24508 14.5334C6.34523 14.6335 6.46415 14.713 6.59505 14.7672C6.72596 14.8213 6.86627 14.8492 7.00798 14.8492C7.14968 14.8492 7.28999 14.8213 7.4209 14.7672C7.5518 14.713 7.67072 14.6335 7.77087 14.5334Z" fill="#1868DB"/> </svg> Back </button> </div> </li> <li id="adg4-nav-link-resources" class="nav-link globalNav has-dropdown single adg4-nav-link-resources"> <button class="nav-link-button main current-page-false" data-navlinkid="nav-link-9fc4b679-6101-4d37-be62-9764cce616cb" data-event="clicked" data-uuid="9fc4b679-61-link" data-event-component="linkButton" data-event-container="globalNav-navigation-link" data-schema-version="1" data-product-key="bitbucket" > Resources <svg class="desktop" width="11" height="6" viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.19995 1.18182L5.19995 4.81818L1.19995 1.18182" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> </button> <div class="dropdown-content" id="nav-link-9fc4b679-6101-4d37-be62-9764cce616cb"> <div class="dropdown-content-inner"> <div class="tab-buttons-area"> </div> <div class="tab-content-area globalNav cols-1"> <div id="tab-e081e462-8411-40d8-9160-3f1b4949778a" class="singular-tab-content active"> <h5 class="mobile-title eyebrows"> Resources </h5> <div class="component component--block nav-four-col" style="margin:0;" > <div class="intra-div flexRow alignContentStart alignItemsStretch justifyStart wrap no s0 between flexColSm has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block" style="margin:0;" > <a href="https://support.atlassian.com/" class="component--block__link" data-event="clicked" data-uuid="29bbc167-92" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Customer Support </h3> <p>Ask questions, report bugs & give us feedback</p> </div> </a> </div> <div class="component s0 between component--block" style="margin:0;" > <a href="https://partnerdirectory.atlassian.com/" class="component--block__link" data-event="clicked" data-uuid="a6a57338-f5" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Find Partners </h3> <p>Consulting, training & product customization support</p> </div> </a> </div> <div class="component s0 between component--block" style="margin:0;" > <a href="/migration" class="component--block__link" data-event="clicked" data-uuid="92cc2fbe-15" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Migration Program </h3> <p>Step-by-step guidance for your Atlassian cloud migration</p> </div> </a> </div> <div class="component s0 between component--block" style="margin:0;" > <a href="https://university.atlassian.com/" class="component--block__link" data-event="clicked" data-uuid="b6f659ac-62" data-event-component="linkButton" data-event-container="block" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--heading-textblock"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > University </h3> <p>Learn and expand your skill set for all things Atlassian</p> </div> </a> </div> </div> </div> <div class="component component--block bottom-four-col" > <div class="intra-div flexRow alignContentStart alignItemsStretch justifyStart wrap no s0 between flexColSm component--block__background n10 has-border border-color- padding-24 padding-style-allSides allSides border-radius-default border-width-0"> <div class="component s0 between component--block col-1" style="margin:0;" > <div class="component component--heading"> <h5 class="fnt-wt font-wt-600 fnt-mg font-mgn-16 fnt-ln font-lnh-13 heading" > support </h5> </div> <div class="component component--link-button "> <a href="/company/contact/general-inquiries" data-event="clicked" data-uuid="a169f872-54" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="General inquiries" data-label-english="General inquiries" class="component__link default " > General inquiries </a> </div> <div class="component component--link-button "> <a href="/company/contact/product-evaluator-advice" data-event="clicked" data-uuid="761c7820-2e" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Product Advice" data-label-english="Product Advice" class="component__link default " > Product Advice </a> </div> <div class="component component--link-button "> <a href="/partners" data-event="clicked" data-uuid="78508d01-2c" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Partner support" data-label-english="Partner support" class="component__link default " > Partner support </a> </div> <div class="component component--link-button "> <a href="/enterprise/success" data-event="clicked" data-uuid="f4a22b8f-03" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Enterprise support" data-label-english="Enterprise support" class="component__link default " > Enterprise support </a> </div> </div> <div class="component s0 between component--block col-1" > <div class="component component--heading"> <div class="fnt-wt font-wt-600 fnt-mg font-mgn-16 fnt-ln font-lnh-13 h5 heading" > </div> </div> <div class="component component--link-button "> <a href="https://support.atlassian.com/contact/" data-event="clicked" data-uuid="b802a97d-a6" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Technical Support" data-label-english="Technical Support" class="component__link default " > Technical Support </a> </div> <div class="component component--link-button "> <a href="/company/contact/purchasing-licensing" data-event="clicked" data-uuid="80be0d0e-96" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Pricing and Billing" data-label-english="Pricing and Billing" class="component__link default " > Pricing and Billing </a> </div> <div class="component component--link-button "> <a href="https://developer.atlassian.com/" data-event="clicked" data-uuid="a77e284c-f5" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Developer support" data-label-english="Developer support" class="component__link default " > Developer support </a> </div> <div class="component component--link-button "> <a href="/licensing/purchase-licensing" data-event="clicked" data-uuid="7e4bcf50-d5" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Purchasing & Licensing" data-label-english="Purchasing & Licensing" class="component__link default " > Purchasing & Licensing </a> </div> </div> <div class="component s0 between component--block col-1" > <div class="component component--heading"> <h5 class="fnt-wt font-wt-600 fnt-mg font-mgn-16 fnt-ln font-lnh-13 heading" > learn </h5> </div> <div class="component component--link-button "> <a href="/project-management" data-event="clicked" data-uuid="37e63de2-8b" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Project Management" data-label-english="Project Management" class="component__link default " > Project Management </a> </div> <div class="component component--link-button "> <a href="/agile" data-event="clicked" data-uuid="cd88fac0-34" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Agile" data-label-english="Agile" class="component__link default " > Agile </a> </div> <div class="component component--link-button "> <a href="/community" data-event="clicked" data-uuid="777bf608-da" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Community" data-label-english="Community" class="component__link default " > Community </a> </div> <div class="component component--link-button "> <a href="/get-started" data-event="clicked" data-uuid="46448b23-df" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Get Started" data-label-english="Get Started" class="component__link default " > Get Started </a> </div> </div> <div class="component s0 between component--block col-1" > <div class="component component--heading"> <div class="fnt-wt font-wt-600 fnt-mg font-mgn-16 fnt-ln font-lnh-13 h5 heading" > </div> </div> <div class="component component--link-button "> <a href="/work-management/project-collaboration" data-event="clicked" data-uuid="121af982-23" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Project Collaboration" data-label-english="Project Collaboration" class="component__link default " > Project Collaboration </a> </div> <div class="component component--link-button "> <a href="/team-playbook" data-event="clicked" data-uuid="be1af204-2b" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Team Playbook" data-label-english="Team Playbook" class="component__link default " > Team Playbook </a> </div> <div class="component component--link-button "> <a href="https://confluence.atlassian.com/display/ALLDOC/Atlassian+Documentation" data-event="clicked" data-uuid="f088bee8-17" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Product Documentation" data-label-english="Product Documentation" class="component__link default " > Product Documentation </a> </div> </div> </div> </div> </div> </div></div> <button class="mobile-back-button"> <svg width="16" height="15" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.77087 14.5334C7.87109 14.4335 7.9506 14.3148 8.00485 14.1841C8.0591 14.0535 8.08702 13.9134 8.08702 13.772C8.08702 13.6306 8.0591 13.4905 8.00485 13.3599C7.9506 13.2292 7.87109 13.1105 7.77087 13.0106L3.68091 8.92576L14.0174 8.92576C14.3034 8.92576 14.5777 8.8123 14.7799 8.61033C14.9821 8.40837 15.0957 8.13444 15.0957 7.84882C15.0957 7.5632 14.9821 7.28927 14.7799 7.08731C14.5777 6.88534 14.3034 6.77188 14.0174 6.77188L3.68091 6.77188L7.77087 2.68705C7.87109 2.58712 7.9506 2.46843 8.00485 2.33778C8.0591 2.20714 8.08702 2.06709 8.08702 1.92565C8.08702 1.78421 8.0591 1.64416 8.00485 1.51351C7.9506 1.38286 7.87109 1.26418 7.77087 1.16425C7.35033 0.744243 6.6667 0.744243 6.24508 1.16425L0.315557 7.08742C0.120278 7.28171 0.00717735 7.54348 -0.00038147 7.81867V7.88005C0.00734234 8.15489 0.120439 8.41626 0.315557 8.61022L6.24508 14.5334C6.34523 14.6335 6.46415 14.713 6.59505 14.7672C6.72596 14.8213 6.86627 14.8492 7.00798 14.8492C7.14968 14.8492 7.28999 14.8213 7.4209 14.7672C7.5518 14.713 7.67072 14.6335 7.77087 14.5334Z" fill="#1868DB"/> </svg> Back </button> </div> </li> <li id="adg4-nav-link-enterprise" class="nav-link globalNav single adg4-nav-link-enterprise"> <a class="nav-link-button main current-page-false" data-navlinkid="nav-link-c13c1778-a877-4684-b860-ceb576c29507" href="/enterprise" data-event="clicked" data-uuid="c13c1778-a8-link" data-event-component="linkButton" data-event-container="globalNav-navigation-link" data-schema-version="1" data-product-key="bitbucket" > Enterprise </a> </li> <li class="menu-spacer"></li> <li class="more-less menu-more globalNav"><button class="lessmore button-menu-more" data-event="clicked" data-uuid="0703b6c2-3e-more" data-event-component="linkButton" data-event-container="globalNav-more" data-schema-version="1" data-product-key="bitbucket" >More +</button></li> <li class="more-less menu-less globalNav"><button class="lessmore button-menu-less" data-event="clicked" data-uuid="0703b6c2-3e-less" data-event-component="linkButton" data-event-container="globalNav-less" data-schema-version="1" data-product-key="bitbucket" >Less -</button></li> </ul> <ul class="search-profile"> <li class="cta-desktop" id="cta-desktop-dropdown-button"> <button class="cta button--one button--regular button--primary" id="try-now-dropdown-cta-desktop" data-dropdownId="try-now-cta-link-desktop-dropdown" data-event="clicked" data-uuid="0703b6c2-3e-linik" data-event-component="linkButton" data-event-container="globalNav-cta-desktop" data-schema-version="1" data-product-key="bitbucket" data-label-english="Get it free" > Get it free <svg class="desktop" width="11" height="6" viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9.19995 1.18182L5.19995 4.81818L1.19995 1.18182" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> <div class="cta-dropdown-content" id="try-now-cta-link-desktop-dropdown"> <div class="dropdown-content-inner"> <div class="dropdown-content-loader"> <div class="atlas-style-simple-loader-medium"></div> </div> <div class="dropdown-content-panel"> <div class="component s0 between component--block product-link-block"> <a href="/try/cloud/signup?bundle=jira-software&edition=free" id="highlightItem1__link" class="component--block__link" data-event="clicked" data-uuid="0703b6c2-3e-cta-desktop-product-link1" data-event-component="linkButton" data-event-container="globalNav-cta-desktop-product-link" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="highlightItem1__img" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira.svg" loading="auto"> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" id="highlightItem1__product--title" > Jira </h3> <p id="highlightItem1__product--subText"> Flexible project management </p> </div> </div> </a> </div> <div class="component s0 between component--block product-link-block"> <a href="/software/jira/service-management/free" id="highlightItem2__link" class="component--block__link" data-event="clicked" data-uuid="0703b6c2-3e-cta-desktop-product-link2" data-event-component="linkButton" data-event-container="globalNav-cta-desktop-product-link" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="highlightItem2__img" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira-Service-Management.svg" loading="auto"> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" id="highlightItem2__product--title" > Jira Service Management </h3> <p id="highlightItem2__product--subText"> High-velocity service delivery </p> </div> </div> </a> </div> <div class="component s0 between component--block product-link-block"> <a href="/try/cloud/signup?bundle=confluence&edition=free" id="highlightItem3__link" class="component--block__link" data-event="clicked" data-uuid="0703b6c2-3e-cta-desktop-product-link3" data-event-component="linkButton" data-event-container="globalNav-cta-desktop-product-link" data-schema-version="1" data-product-key="bitbucket" > <div class="component component--image-heading-textblock with-flex margin-default"> <div class="component__image component__image--left compact"> <img id="highlightItem3__img" alt="" class="component__image" style="width:44px;height:44px;" src="https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Confluence.svg" loading="auto"> </div> <div class="component__heading-textblock component__heading-textblock--right compact"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" id="highlightItem3__product--title" > Confluence </h3> <p id="highlightItem3__product--subText"> Knowledge, all in one place </p> </div> </div> </a> </div> <div class="link-in-dropdown"> <a class="easy-link-arrow" href="/try" data-event="clicked" data-uuid="0703b6c2-3e-cta-dropdown-content" data-event-component="linkButton" data-event-container="globalNav-cta-desktop-cta-dropdown-content" data-schema-version="1" data-product-key="bitbucket" > See all products </a> </div> </div> </div> </div> </li> <li class="cta-desktop" id="cta-desktop-default"> <a class="cta button--one button--regular button--primary" href="/try" data-event="clicked" data-uuid="0703b6c2-3e-linik" data-event-component="linkButton" data-event-container="globalNav-cta-desktop" data-schema-version="1" data-product-key="bitbucket" data-label-english="Get it free" >Get it free</a> </li> <li class="search-button"> <button class="search-open doNotAutoTrack"> <svg width="21" height="22" viewBox="0 0 21 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M15.8422 17.189L19.0001 20.3469" stroke="currentColor" stroke-width="2.75" stroke-linecap="round" /> <path d="M9.59182 17.7583C14.0392 17.7583 17.6444 14.1531 17.6444 9.70571C17.6444 5.25836 14.0392 1.65308 9.59182 1.65308C5.14447 1.65308 1.53918 5.25836 1.53918 9.70571C1.53918 14.1531 5.14447 17.7583 9.59182 17.7583Z" stroke="currentColor" stroke-width="2.25" /> </svg> </button> </li> <li class="adg4-nav-account-sign-in"></li> <li class="adg4-nav-account-my-products"></li> </ul> <div class="search-form"> <button class="mobile-back-button" data-event="clicked" data-uuid="0703b6c2-3e-mobile-back-button" data-event-component="linkButton" data-event-container="globalNav-mobile-back-button" data-schema-version="1" data-product-key="bitbucket" > <svg width="16" height="15" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.77087 14.5334C7.87109 14.4335 7.9506 14.3148 8.00485 14.1841C8.0591 14.0535 8.08702 13.9134 8.08702 13.772C8.08702 13.6306 8.0591 13.4905 8.00485 13.3599C7.9506 13.2292 7.87109 13.1105 7.77087 13.0106L3.68091 8.92576L14.0174 8.92576C14.3034 8.92576 14.5777 8.8123 14.7799 8.61033C14.9821 8.40837 15.0957 8.13444 15.0957 7.84882C15.0957 7.5632 14.9821 7.28927 14.7799 7.08731C14.5777 6.88534 14.3034 6.77188 14.0174 6.77188L3.68091 6.77188L7.77087 2.68705C7.87109 2.58712 7.9506 2.46843 8.00485 2.33778C8.0591 2.20714 8.08702 2.06709 8.08702 1.92565C8.08702 1.78421 8.0591 1.64416 8.00485 1.51351C7.9506 1.38286 7.87109 1.26418 7.77087 1.16425C7.35033 0.744243 6.6667 0.744243 6.24508 1.16425L0.315557 7.08742C0.120278 7.28171 0.00717735 7.54348 -0.00038147 7.81867V7.88005C0.00734234 8.15489 0.120439 8.41626 0.315557 8.61022L6.24508 14.5334C6.34523 14.6335 6.46415 14.713 6.59505 14.7672C6.72596 14.8213 6.86627 14.8492 7.00798 14.8492C7.14968 14.8492 7.28999 14.8213 7.4209 14.7672C7.5518 14.713 7.67072 14.6335 7.77087 14.5334Z" fill="#1868DB"/> </svg> Back </button> <div class="input-container"> <input class="adg4-search-input" type="text" placeholder="Search Atlassian" /> <svg width="21" height="22" viewBox="0 0 21 22" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M15.8422 17.189L19.0001 20.3469" stroke="#101214" stroke-width="2.75" stroke-linecap="round" /> <path d="M9.59182 17.7583C14.0392 17.7583 17.6444 14.1531 17.6444 9.70571C17.6444 5.25836 14.0392 1.65308 9.59182 1.65308C5.14447 1.65308 1.53918 5.25836 1.53918 9.70571C1.53918 14.1531 5.14447 17.7583 9.59182 17.7583Z" stroke="#101214" stroke-width="2.25" /> </svg> </div> <div class="adg4-search-results"></div> <button class="search-close doNotAutoTrack" title="Close search"> <hr class="mid mid1" /> <hr class="mid mid2" /> </button> </div> </div> </div> <div class="cta-tablet"> <a class="cta button--one button--regular button--primary" href="/try" data-event="clicked" data-uuid="0703b6c2-3e-cta-tablet" data-event-component="linkButton" data-event-container="globalNav-cta-tablet" data-schema-version="1" data-product-key="bitbucket" data-label-english="Get it free" >Get it free</a> </div> <div id="adg4-app-switcher"></div> <script type="text/jsx-component"> { "type": "WacAppSwitcher", "domRootId": "adg4-app-switcher", "props": { "domRootId": "adg4-app-switcher", "wacAppSwitcherLabel": "", "allowWacJoinSitesProvider": true } } </script> <div class="adg4-nav-account-logged-in"></div> <div class="adg4-nav-account-info"></div> </div> </div> </div> <script type="text/x-component"> { "type":"imkt.components.ADG4GlobalNav", "params": { "navType":"globalNav", "labels": { "JoinSiteUserDropdown.logOut":"Log out", "JoinSiteUserDropdown.logIn":"Sign in", "JoinSiteUserDropdown.joinTeam":"Join your team", "JoinSiteUserDropdown.profile":"Profile", "JoinSiteUserDropdown.switchAccount":"Switch account", "JoinSiteUserDropdown.licenses":"Licenses", "JoinSiteUserDropdown.logOutHeading":"Log out", "JoinSiteUserDropdown.logOutTriggerText":"Log out" }, "ctaLabel":"Get it free", "isShowCTADropdown":"true", "jiraProduct": { "imgSource":"https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira.svg", "heading":"Jira", "subText":"Flexible project management", "href":"/try/cloud/signup?bundle=jira-software&edition=free" }, "jiraServiceManagementProduct": { "imgSource":"https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira-Service-Management.svg", "heading":"Jira Service Management", "subText":"High-velocity service delivery", "href":"/software/jira/service-management/free" }, "confluenceProduct": { "imgSource":"https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Confluence.svg", "heading":"Confluence", "subText":"Knowledge, all in one place", "href":"/try/cloud/signup?bundle=confluence&edition=free" }, "jiraProductDiscovery": { "imgSource":"https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Jira-Product-Discovery.svg", "heading":"Jira Product Discovery", "subText":"Capture & prioritize ideas", "href":"/try/cloud/signup?bundle=jira-product-discovery" }, "compassProduct": { "imgSource":"https://wac-cdn.atlassian.com/misc-assets/adg4-nav/prod-icon-Compass.svg", "heading":"Compass", "subText":"Optimize software health", "href":"/try/cloud/signup?bundle=compass" } } } </script></nav> </header> <main> <style> .container, .container-fluid { width: 100%; } a.code-link { display: inline-block; background: #f4f5f7; padding: 0 0.25rem; margin: 0; line-height: inherit; top: 0.4rem; border-radius: 0.25rem; font-family: Courier,serif; font-size: 1rem; } td code { display: inline-block; background: #f4f5f7; padding: 0 0.25rem; margin: 0; line-height: inherit; position: relative; top: 0.4rem; border-radius: 0.25rem; } .wac table code { white-space: normal; } .overview-link {display: none;} </style> <div class="container-fluid md-comfortable-bottom xs-cozy lg-comfortable-top"> <div class="row"> <div class="column column-md-3 column-lg-offset-1 hide-xs hide-sm no-flex" > <div class="component component--guided-sidebar agile-style "> <div class="side-links"> <div class="custom-guide-link level-1 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials" data-event="clicked" data-uuid="ba117452-c6" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level1 "> Learn Git </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials" data-event="clicked" data-uuid="73376f82-9073376f82-90" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/glossary" data-event="clicked" data-uuid="73376f82-90" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git commands </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/learn-git-with-bitbucket-cloud" data-event="clicked" data-uuid="86e24901-d7" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Learn Git with Bitbucket Cloud </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/learn-about-code-review-in-bitbucket-cloud" data-event="clicked" data-uuid="b36f0666-8b" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Learn about code review in Bitbucket Cloud </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/learn-branching-with-bitbucket-cloud" data-event="clicked" data-uuid="da45f227-ff" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Learn Branching with Bitbucket Cloud </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/learn-undoing-changes-with-bitbucket" data-event="clicked" data-uuid="eb18bcb8-65" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Learn Undoing Changes with Bitbucket Cloud </a> </div> </div> </div> <div class="custom-guide-link level-1 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/what-is-version-control" data-event="clicked" data-uuid="73493862-1e" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level1 "> Beginner </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/what-is-version-control" data-event="clicked" data-uuid="cf2fa51b-e6cf2fa51b-e6" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/what-is-version-control" data-event="clicked" data-uuid="cf2fa51b-e6" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> What is version control </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/source-code-management" data-event="clicked" data-uuid="d27d6f52-4d" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Source Code Management </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/what-is-git" data-event="clicked" data-uuid="73ae8173-f4" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> What is Git </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/why-git" data-event="clicked" data-uuid="b3938bad-a6" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Why Git for your organization </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/install-git" data-event="clicked" data-uuid="5cf5c205-83" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Install Git </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-ssh" data-event="clicked" data-uuid="2d607960-05" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git SSH </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/export-git-archive" data-event="clicked" data-uuid="30c37aec-e8" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git archive </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/gitops" data-event="clicked" data-uuid="209b3e44-03" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> GitOps </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/atlassian-git-cheatsheet" data-event="clicked" data-uuid="e9f15021-de" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git cheat sheet </a> </div> </div> </div> <div class="custom-guide-link level-1 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/setting-up-a-repository" data-event="clicked" data-uuid="c4adb7fc-5f" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level1 "> Getting started </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/setting-up-a-repository" data-event="clicked" data-uuid="794c1414-45794c1414-45" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-2 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/setting-up-a-repository" data-event="clicked" data-uuid="794c1414-45" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Setting up a repository </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/setting-up-a-repository" data-event="clicked" data-uuid="26a7b432-3126a7b432-31" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/setting-up-a-repository/git-init" data-event="clicked" data-uuid="26a7b432-31" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git init </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/setting-up-a-repository/git-clone" data-event="clicked" data-uuid="ded833fd-f8" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git clone </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/setting-up-a-repository/git-config" data-event="clicked" data-uuid="e1226ff2-05" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git config </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/git-alias" data-event="clicked" data-uuid="b37eadd9-e5" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git alias </a> </div> </div> </div> <div class="custom-guide-link level-2 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/saving-changes" data-event="clicked" data-uuid="64157480-cf" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Saving changes (Git add) </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/saving-changes" data-event="clicked" data-uuid="40474ee2-6340474ee2-63" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/saving-changes/git-commit" data-event="clicked" data-uuid="40474ee2-63" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git commit </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/saving-changes/git-diff" data-event="clicked" data-uuid="ef19452c-2c" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git diff </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/saving-changes/git-stash" data-event="clicked" data-uuid="a9978af8-f3" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git stash </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/saving-changes/gitignore" data-event="clicked" data-uuid="cada9f6f-c3" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> .gitignore </a> </div> </div> </div> <div class="custom-guide-link level-2 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/inspecting-a-repository" data-event="clicked" data-uuid="086ab617-94" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Inspecting a repository </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/inspecting-a-repository" data-event="clicked" data-uuid="4e2b93eb-024e2b93eb-02" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/inspecting-a-repository/git-tag" data-event="clicked" data-uuid="4e2b93eb-02" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git tag </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/inspecting-a-repository/git-blame" data-event="clicked" data-uuid="1e93e5d4-a5" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git blame </a> </div> </div> </div> <div class="custom-guide-link level-2 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/undoing-changes" data-event="clicked" data-uuid="96b8fac3-83" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Undoing changes </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/undoing-changes" data-event="clicked" data-uuid="928165e1-0f928165e1-0f" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/undoing-changes/git-clean" data-event="clicked" data-uuid="928165e1-0f" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git clean </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/undoing-changes/git-revert" data-event="clicked" data-uuid="6da47fe0-15" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git revert </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/undoing-changes/git-reset" data-event="clicked" data-uuid="047fb663-70" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git reset </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/undoing-changes/git-rm" data-event="clicked" data-uuid="28192be1-60" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git rm </a> </div> </div> </div> <div class="custom-guide-link level-2 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/rewriting-history" data-event="clicked" data-uuid="f9033597-1e" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Rewriting history </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/rewriting-history" data-event="clicked" data-uuid="4ad15752-714ad15752-71" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/rewriting-history/git-rebase" data-event="clicked" data-uuid="4ad15752-71" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git rebase </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/rewriting-history/git-reflog" data-event="clicked" data-uuid="5405438e-25" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git reflog </a> </div> </div> </div> </div> </div> <div class="custom-guide-link level-1 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/syncing" data-event="clicked" data-uuid="b3aac986-ca" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level1 "> Collaborating workflows </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/syncing" data-event="clicked" data-uuid="005d17c0-fa005d17c0-fa" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-2 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/syncing" data-event="clicked" data-uuid="005d17c0-fa" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Syncing (git remote) </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/syncing" data-event="clicked" data-uuid="f2fb3f23-e8f2fb3f23-e8" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/syncing/git-fetch" data-event="clicked" data-uuid="f2fb3f23-e8" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git fetch </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/syncing/git-push" data-event="clicked" data-uuid="e126a06d-49" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git push </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/syncing/git-pull" data-event="clicked" data-uuid="bc45bdbd-a7" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git pull </a> </div> </div> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/making-a-pull-request" data-event="clicked" data-uuid="c5be40a1-fa" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Making a Pull Request </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/using-branches" data-event="clicked" data-uuid="21ac1b25-bf" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Using Branches (Git branch) </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/using-branches" data-event="clicked" data-uuid="aa86fb8a-c9aa86fb8a-c9" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/using-branches/git-checkout" data-event="clicked" data-uuid="aa86fb8a-c9" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git checkout </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/using-branches/git-merge" data-event="clicked" data-uuid="b9ab3d86-18" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> git merge </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/using-branches/merge-conflicts" data-event="clicked" data-uuid="6fd06a62-78" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Merge conflicts </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/using-branches/merge-strategy" data-event="clicked" data-uuid="1345f9e4-6e" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Merge strategies </a> </div> </div> </div> <div class="custom-guide-link level-2 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/comparing-workflows" data-event="clicked" data-uuid="8aea438d-dc" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Comparing Workflows </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/comparing-workflows" data-event="clicked" data-uuid="181b0684-4d181b0684-4d" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/comparing-workflows/feature-branch-workflow" data-event="clicked" data-uuid="181b0684-4d" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Feature Branch Workflow </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/comparing-workflows/gitflow-workflow" data-event="clicked" data-uuid="21fb53d2-09" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Gitflow Workflow </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/comparing-workflows/forking-workflow" data-event="clicked" data-uuid="5860a775-04" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Forking Workflow </a> </div> </div> </div> </div> </div> <div class="custom-guide-link level-1 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/svn-to-git-prepping-your-team-migration" data-event="clicked" data-uuid="988945c7-8b" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level1 "> Migrating to Git </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/svn-to-git-prepping-your-team-migration" data-event="clicked" data-uuid="3b93b24e-e63b93b24e-e6" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/svn-to-git-prepping-your-team-migration" data-event="clicked" data-uuid="3b93b24e-e6" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> SVN to Git - prepping for the migration </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link has-child-links foldup" > <a href="/git/tutorials/migrating-overview" data-event="clicked" data-uuid="8d528068-0c" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Migrate to Git from SVN </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/migrating-overview" data-event="clicked" data-uuid="f756d677-baf756d677-ba" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/migrating-prepare" data-event="clicked" data-uuid="f756d677-ba" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Prepare </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/migrating-convert" data-event="clicked" data-uuid="55fcfec0-ad" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Convert </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/migrating-synchronize" data-event="clicked" data-uuid="34d07ea8-c9" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Synchronize </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/migrating-share" data-event="clicked" data-uuid="adcf9e2b-ce" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Share </a> </div> <div class="custom-guide-link level-3 guide-sidebar-link foldup" > <a href="/git/tutorials/migrating-migrate" data-event="clicked" data-uuid="d61af60d-66" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level3 "> Migrate </a> </div> </div> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/perforce-git" data-event="clicked" data-uuid="0fe6f656-66" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Perforce to Git - why to make the move </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/perforce-git-migration" data-event="clicked" data-uuid="f922087b-39" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Migrating from Perforce to Git </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-p4" data-event="clicked" data-uuid="2b6f1aa1-0d" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Working with Git and Perforce: integration workflow </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-move-repository" data-event="clicked" data-uuid="ab11b7e2-31" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> How to move a Git repository with history </a> </div> </div> </div> <div class="custom-guide-link level-1 guide-sidebar-link has-child-links revealed active" > <a href="/git/tutorials/advanced-overview" data-event="clicked" data-uuid="cddab674-8a" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level1 active"> Advanced Tips </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/tutorials/advanced-overview" data-event="clicked" data-uuid="5f37e45a-b75f37e45a-b7" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/merging-vs-rebasing" data-event="clicked" data-uuid="5f37e45a-b7" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Merging vs. Rebasing </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/resetting-checking-out-and-reverting" data-event="clicked" data-uuid="6cf59c06-8c" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Reset, Checkout, and Revert </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-log" data-event="clicked" data-uuid="67d99cf1-a6" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Advanced Git log </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link revealed active" > <a href="/git/tutorials/git-hooks" data-event="clicked" data-uuid="1df36c53-7a" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 active"> Git Hooks </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/refs-and-the-reflog" data-event="clicked" data-uuid="93fa4708-95" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Refs and the Reflog </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-submodule" data-event="clicked" data-uuid="89f62575-d7" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git submodules </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-subtree" data-event="clicked" data-uuid="8feee60a-40" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git subtree </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/big-repositories" data-event="clicked" data-uuid="842498ec-d2" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Large repositories in Git </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-lfs" data-event="clicked" data-uuid="1e401cd6-a6" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git LFS </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-gc" data-event="clicked" data-uuid="db4590d5-06" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git gc </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-prune" data-event="clicked" data-uuid="0362885a-c4" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git prune </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-bash" data-event="clicked" data-uuid="426c55a6-e7" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git bash </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/dotfiles" data-event="clicked" data-uuid="53c67157-51" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> How to store dotfiles </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/cherry-pick" data-event="clicked" data-uuid="512b4190-93" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git cherry pick </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/gitk" data-event="clicked" data-uuid="89b384ba-9b" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> GitK </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-show" data-event="clicked" data-uuid="814de6d6-d2" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git-show </a> </div> </div> </div> <div class="custom-guide-link level-1 guide-sidebar-link has-child-links foldup" > <a href="/git/articles" data-event="clicked" data-uuid="211e7dd9-1b" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level1 "> Articles </a> <div class="nested-links" > <div class="overview-link "> <a href="/git/articles" data-event="clicked" data-uuid="34dfa4fb-4934dfa4fb-49" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link">Overview</a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/articles/maven-dependencies-versions-merging" data-event="clicked" data-uuid="34dfa4fb-49" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Dealing with Maven dependencies when switching to Git </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/articles/pull-request-proficiency-fetching-abilities-unlocked" data-event="clicked" data-uuid="ad17c8d0-65" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Pull request proficiency: Fetching abilities unlocked! </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/articles/git-and-project-dependencies" data-event="clicked" data-uuid="0f8e5ad2-8a" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git and project dependencies </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/articles/git-or-svn-git-branching-model" data-event="clicked" data-uuid="0ed14918-e0" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git or SVN? How Nuance Healthcare Chose a Git Branching Model </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/tutorials/git-forks-and-upstreams" data-event="clicked" data-uuid="97efe19c-57" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Git Forks And Upstreams: How-to and a cool tip </a> </div> <div class="custom-guide-link level-2 guide-sidebar-link foldup" > <a href="/git/articles/core-concept-workflows-and-tips" data-event="clicked" data-uuid="52397a9b-e5" data-event-component="linkButton" data-event-container="guidedSidebarLink" data-schema-version="1" data-product-key="bitbucket" class="guide-sidebar-child-link level2 "> Core concept, workflows and tips </a> </div> </div> </div> </div> <script type="text/x-component"> { "type":"imkt.components.GuidedSidebar", "params": { "stickyPosition":"100", "isAgile":true } } </script></div> </div> <div class="column column-lg-7 column-md-9 s0 between" > <div class="container-fluid xs-none"> <div class="row flex-container"> <div class="column xs-none-top vertical-top s0 between" > <div class="component component--heading"> <h1 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Git hooks </h1> </div> <div class="component component--heading-textblock text-oversized"> <p>Git hooks are scripts that run automatically every time a particular event occurs in a Git repository. They let you customize Git’s internal behavior and trigger customizable actions at key points in the development life cycle.</p> </div> <div class="component component--image image-center"> <img id="a6cf3e4a" alt="Hooks executing during the commit creation process" class="component__image" style="width:75%;" src="https://wac-cdn.atlassian.com/dam/jcr:ac22adee-d740-4216-a92a-33c14b5623e5/01.svg?cdnVersion=2563" loading="lazy" /> </div> <div class="component component--heading-textblock text-oversized"> <p>Common use cases for Git hooks include encouraging a commit policy, altering the project environment depending on the state of the repository, and implementing continuous integration workflows. But, since scripts are infinitely customizable, you can use Git hooks to automate or optimize virtually any aspect of your development workflow.</p> <p>In this article, we’ll start with a conceptual overview of how Git hooks work. Then, we’ll survey some of the most popular hooks for use in both local and server-side repositories.</p> </div> </div> </div> </div> <div class="component component--horizontal-rule align-center" style="padding-top:16px;"> <hr class="default " /> </div> <div class="container-fluid"> <div class="row flex-container"> <div class="column xs-none-bottom s0 between" > <div class="component component--heading" id="conceptual-overview"> <h2 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Conceptual overview </h2> </div> <div class="component component--horizontal-rule align-left"> <hr class="type2 " /> </div> </div> <div class="column column-sm-8 s0 between" > <div class="component component--textblock "> <p>All Git hooks are ordinary scripts that Git executes when certain events occur in the repository. This makes them very easy to install and configure.</p> <p>Hooks can reside in either local or server-side repositories, and they are only executed in response to actions in that repository. We’ll take a concrete look at categories of hooks later in this article. The configuration discussed in the rest of this section applies to both local and server-side hooks.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Installing hooks </h3> </div> <div class="component component--textblock component--text-block-white"> <p>Hooks reside in the <code>.git/hooks</code> directory of every Git repository. Git automatically populates this directory with example scripts when you initialize a repository. If you take a look inside <code>.git/hooks</code>, you’ll find the following files:</p> </div> <div class="component component--codeblock"> <pre><code>applypatch-msg.sample pre-push.sample<br/>commit-msg.sample pre-rebase.sample<br/>post-update.sample prepare-commit-msg.sample<br/>pre-applypatch.sample update.sample<br/>pre-commit.sample</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> </div> <div class="column column-sm-4 s0 between" > <div class="container-fluid xs-none"> <div class="row flex-container"> <div class="column " > <div class="intra-div s0 between block-theme-one-reduce-padding "> <div class="component component--image-heading-textblock"> <div class="component__image"> <img id="ee9df9f7" alt="databases" class="component__image" style="height:36px;" src="https://wac-cdn.atlassian.com/dam/jcr:f05d1440-c0ca-45f1-9f31-f376bb67adf6/databases.png?cdnVersion=2563" loading="lazy" /> </div> <div class="component__heading-textblock"> <h6 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- eyebrows heading" > related material </h6> </div> </div> <div class="component component--heading"> <h4 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > How to move a full Git repository </h4> </div> <div class="component component--link-button "> <a href="/git/tutorials/git-move-repository" data-event="clicked" data-uuid="8c661a75-59" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Read article" data-label-english="Read article" class="component__link link-arrow " > Read article<svg class="link-arrow-image" width="11px" height="8px" viewBox="0 0 11 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g class="group-path" transform="translate(-138.000000, -586.000000)" fill="#0052CC"><path d="M145.2803,586.507862 L144.2193,587.568863 L145.9393,589.287862 L138.7503,589.287862 C138.3363,589.287862 138.0003,589.623862 138.0003,590.037862 C138.0003,590.451862 138.3363,590.787862 138.7503,590.787862 L145.9393,590.787862 L144.2193,592.507862 L145.2803,593.568863 L148.8103,590.037862 L145.2803,586.507862 Z"></path></g></g></svg> </a> </div> </div> </div> <div class="column " > <div class="intra-div s0 between block-theme-one-reduce-padding "> <div class="component component--image-heading-textblock"> <div class="component__image"> <img id="e8ddd0c1" alt="Bitbucket logo" class="component__image" style="width:36px;" src="https://wac-cdn.atlassian.com/dam/jcr:03116c1f-27e5-4a82-9b9b-806786578fb2/logos-bitbucket-icon-gradient-blue-121x109@2x.png?cdnVersion=2563" loading="lazy" /> </div> <div class="component__heading-textblock"> <h6 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- eyebrows heading" > SEE SOLUTION </h6> </div> </div> <div class="component component--heading"> <h4 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Learn Git with Bitbucket Cloud </h4> </div> <div class="component component--link-button "> <a href="/git/tutorials/learn-git-with-bitbucket-cloud" data-event="clicked" data-uuid="6e2a6336-59" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Read tutorial" data-label-english="Read tutorial" class="component__link link-arrow " > Read tutorial<svg class="link-arrow-image" width="11px" height="8px" viewBox="0 0 11 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g class="group-path" transform="translate(-138.000000, -586.000000)" fill="#0052CC"><path d="M145.2803,586.507862 L144.2193,587.568863 L145.9393,589.287862 L138.7503,589.287862 C138.3363,589.287862 138.0003,589.623862 138.0003,590.037862 C138.0003,590.451862 138.3363,590.787862 138.7503,590.787862 L145.9393,590.787862 L144.2193,592.507862 L145.2803,593.568863 L148.8103,590.037862 L145.2803,586.507862 Z"></path></g></g></svg> </a> </div> </div> </div> </div> </div> </div> <div class="column s0 between" > <div class="component component--textblock "> <p>These represent most of the available hooks, but the <code>.sample</code> extension prevents them from executing by default. To “install” a hook, all you have to do is remove the <code>.sample</code> extension. Or, if you’re writing a new script from scratch, you can simply add a new file matching one of the above filenames, minus the <code>.sample</code> extension.</p> <p>As an example, try installing a simple <code>prepare-commit-msg</code> hook. Remove the <code>.sample</code> extension from this script, and add the following to the file:</p> </div> <div class="component component--codeblock"> <pre><code>#!/bin/sh<br/><br/>echo "# Please include a useful commit message!" > $1</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>Hooks need to be executable, so you may need to change the file permissions of the script if you’re creating it from scratch. For example, to make sure that <code>prepare-commit-msg</code> is executable, you would run the following command:</p> </div> <div class="component component--codeblock"> <pre><code>chmod +x prepare-commit-msg</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>You should now see this message in place of the default commit message every time you run <code>git commit</code>. We’ll take a closer look at how this actually works in the Prepare Commit Message section. For now, let’s just revel in the fact that we can customize some of Git’s internal functionality.</p> <p>The built-in sample scripts are very useful references, as they document the parameters that are passed in to each hook (they vary from hook to hook).</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Scripting languages </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The built-in scripts are mostly shell and PERL scripts, but you can use any scripting language you like as long as it can be run as an executable. The shebang line (<code>#!/bin/sh</code>) in each script defines how your file should be interpreted. So, to use a different language, all you have to do is change it to the path of your interpreter.</p> <p>For instance, we can write an executable Python script in the <code>prepare-commit-msg</code> file instead of using shell commands. The following hook will do the same thing as the shell script in the previous section.</p> </div> <div class="component component--codeblock"> <pre><code>#!/usr/bin/env python<br/><br/>import sys, os<br/><br/>commit_msg_filepath = sys.argv[1]<br/>with open(commit_msg_filepath, 'w') as f:<br/> f.write("# Please include a useful commit message!")</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>Notice how the first line changed to point to the Python interpreter. And, instead of using <code>$1</code> to access the first argument passed to the script, we used <code>sys.argv[1]</code> (again, more on this in a moment).</p> <p>This is a very powerful feature for Git hooks because it lets you work in whatever language you’re most comfortable with.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Scope of hooks </h3> </div> <div class="component component--textblock component--text-block-white"> <p>Hooks are local to any given Git repository, and they are <em>not</em> copied over to the new repository when you run <code>git clone</code>. And, since hooks are local, they can be altered by anybody with access to the repository.</p> <p>This has an important impact when configuring hooks for a team of developers. First, you need to find a way to make sure hooks stay up-to-date amongst your team members. Second, you can’t force developers to create commits that look a certain way—you can only encourage them to do so.</p> <p>Maintaining hooks for a team of developers can be a little tricky because the <code>.git/hooks</code> directory isn’t cloned with the rest of your project, nor is it under version control. A simple solution to both of these problems is to store your hooks in the actual project directory (above the <code>.git</code> directory). This lets you edit them like any other version-controlled file. To install the hook, you can either create a symlink to it in <code>.git/hooks</code>, or you can simply copy and paste it into the <code>.git/hooks</code> directory whenever the hook is updated.</p> </div> <div class="component component--image image-center"> <img id="59c2b244" alt="Hooks executing during the commit creation process" class="component__image" style="width:75%;" src="https://wac-cdn.atlassian.com/dam/jcr:e068ea71-a552-4d07-9917-49104f4d382e/02.svg?cdnVersion=2563" loading="lazy" /> </div> <div class="component component--textblock component--text-block-white"> <p>As an alternative, Git also provides a <a data-event="clicked" data-uuid="40637056-050" data-event-component="linkButton" data-event-container="textBlock" data-schema-version="1" data-product-key="bitbucket" data-label="Template Directory" data-label-english="Template Directory" href="http://git-scm.com/docs/git-init#_template_directory">Template Directory</a> mechanism that makes it easier to install hooks automatically. All of the files and directories contained in this template directory are copied into the <code>.git</code> directory every time you use <code>git init</code> or <code>git clone</code>.</p> <p>All of the local hooks described below can be altered—or completely un-installed—by the owner of a repository. It’s entirely up to each team member whether or not they actually use a hook. With this in mind, it’s best to think of Git hooks as a convenient developer tool rather than a strictly enforced development policy.</p> <p>That said, it is possible to reject commits that do not conform to some standard using server-side hooks. We’ll talk more about this later in the article.</p> </div> </div> <div class="column s0 between" > <div class="component component--heading" id="local-hooks"> <h2 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Local hooks </h2> </div> <div class="component component--horizontal-rule align-left"> <hr class="type2 " /> </div> <div class="component component--textblock "> <p>Local hooks affect only the repository in which they reside. As you read through this section, remember that each developer can alter their own local hooks, so you can’t use them as a way to enforce a commit policy. They can, however, make it much easier for developers to adhere to certain guidelines. In this section, we’ll be exploring 6 of the most useful local hooks:</p> </div> <div class="component component--textblock component--text-block-white"> <ul> <li><code>pre-commit</code></li> <li><code>prepare-commit-msg</code></li> <li><code>commit-msg</code></li> <li><code>post-commit</code></li> <li><code>post-checkout</code></li> <li style="margin-bottom: 24px"><code>pre-rebase</code></li> </ul> <p>The first 4 hooks let you plug into the entire commit life cycle, and the final 2 let you perform some extra actions or safety checks for the <code>git checkout</code> and <code>git rebase</code> commands, respectively.</p> <p>All of the <code>pre-</code> hooks let you alter the action that’s about to take place, while the <code>post-</code> hooks are used only for notifications.</p> <p>We’ll also see some useful techniques for parsing hook arguments and requesting information about the repository using lower-level Git commands.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Pre-Commit </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The <code>pre-commit</code> script is executed every time you run <code>git commit</code> before Git asks the developer for a commit message or generates a commit object. You can use this hook to inspect the snapshot that is about to be committed. For example, you may want to run some automated tests that make sure the commit doesn’t break any existing functionality.</p> <p>No arguments are passed to the <code>pre-commit</code> script, and exiting with a non-zero status aborts the entire commit. Let’s take a look at a simplified (and more verbose) version of the built-in <code>pre-commit</code> hook. This script aborts the commit if it finds any whitespace errors, as defined by the <code>git diff-index</code> command (trailing whitespace, lines with only whitespace, and a space followed by a tab inside the initial indent of a line are considered errors by default).</p> </div> <div class="component component--codeblock"> <pre><code>#!/bin/sh<br/><br/># Check if this is the initial commit<br/>if git rev-parse --verify HEAD >/dev/null 2>&1<br/>then<br/> echo "pre-commit: About to create a new commit..."<br/> against=HEAD<br/>else<br/> echo "pre-commit: About to create the first commit..."<br/> against=4b825dc642cb6eb9a060e54bf8d69288fbee4904<br/>fi<br/><br/># Use git diff-index to check for whitespace errors<br/>echo "pre-commit: Testing for whitespace errors..."<br/>if ! git diff-index --check --cached $against<br/>then<br/> echo "pre-commit: Aborting commit due to whitespace errors"<br/> exit 1<br/>else<br/> echo "pre-commit: No whitespace errors :)"<br/> exit 0<br/>fi</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>In order to use <code>git diff-index</code>, we need to figure out which commit reference we’re comparing the index to. Normally, this is <code>HEAD</code>; however, <code>HEAD</code> doesn’t exist when creating the initial commit, so our first task is to account for this edge case. We do this with <a data-event="clicked" data-uuid="d7c087c3-1e0" data-event-component="linkButton" data-event-container="textBlock" data-schema-version="1" data-product-key="bitbucket" data-label="git rev-parse --verify" data-label-english="git rev-parse --verify" href="https://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html"><code>git rev-parse --verify</code></a>, which simply checks whether or not the argument (<code>HEAD</code>) is a valid reference. The <code>>/dev/null 2>&1</code> portion silences any output from <code>git rev-parse</code>. Either <code>HEAD</code> or an empty commit object is stored in the <code>against</code> variable for use with <code>git diff-index</code>. The <code>4b825d...</code> hash is a magic commit ID that represents an empty commit.</p> <p>The <a data-event="clicked" data-uuid="d7c087c3-1e1" data-event-component="linkButton" data-event-container="textBlock" data-schema-version="1" data-product-key="bitbucket" data-label="git diff-index --cached" data-label-english="git diff-index --cached" href="http://www.kernel.org/pub/software/scm/git/docs/git-diff-index.html"><code>git diff-index --cached</code></a> command compares a commit against the index. By passing the <code>--check</code> option, we’re asking it to warn us if the changes introduces whitespace errors. If it does, we abort the commit by returning an exit status of <code>1</code>, otherwise we exit with <code>0</code> and the commit workflow continues as normal.</p> <p>This is just one example of the <code>pre-commit</code> hook. It happens to use existing Git commands to run tests on the changes introduced by the proposed commit, but you can do anything you want in <code>pre-commit</code> including executing other scripts, running a 3rd-party test suite, or checking code style with Lint.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Prepare commit message </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The <code>prepare-commit-msg</code> hook is called after the <code>pre-commit</code> hook to populate the text editor with a commit message. This is a good place to alter the automatically generated commit messages for squashed or merged commits.</p> <p>One to three arguments are passed to the <code>prepare-commit-msg</code> script:</p> <p>1. The name of a temporary file that contains the message. You change the commit message by altering this file in-place.</p> <p>2. The type of commit. This can be <code>message</code> (<code>-m</code> or <code>-F</code> option), <code>template</code> (<code>-t</code> option), <code>merge</code> (if the commit is a merge commit), or <code>squash</code> (if the commit is squashing other commits).</p> <p>3. The SHA1 hash of the relevant commit. Only given if <code>-c</code>, <code>-C</code>, or <code>--amend</code> option was given.</p> <p>As with <code>pre-commit</code>, exiting with a non-zero status aborts the commit.</p> <p>We already saw a simple example that edited the commit message, but let’s take a look at a more useful script. When using an issue tracker, a common convention is to address each issue in a separate branch. If you include the issue number in the branch name, you can write a <code>prepare-commit-msg</code> hook to automatically include it in each commit message on that branch.</p> </div> <div class="component component--codeblock"> <pre><code>#!/usr/bin/env python<br/><br/>import sys, os, re<br/>from subprocess import check_output<br/><br/># Collect the parameters<br/>commit_msg_filepath = sys.argv[1]<br/>if len(sys.argv) > 2:<br/> commit_type = sys.argv[2]<br/>else:<br/> commit_type = ''<br/>if len(sys.argv) > 3:<br/> commit_hash = sys.argv[3]<br/>else:<br/> commit_hash = ''<br/><br/>print "prepare-commit-msg: File: %s\nType: %s\nHash: %s" % (commit_msg_filepath, commit_type, commit_hash)<br/><br/># Figure out which branch we're on<br/>branch = check_output(['git', 'symbolic-ref', '--short', 'HEAD']).strip()<br/>print "prepare-commit-msg: On branch '%s'" % branch<br/><br/># Populate the commit message with the issue #, if there is one<br/>if branch.startswith('issue-'):<br/> print "prepare-commit-msg: Oh hey, it's an issue branch."<br/> result = re.match('issue-(.*)', branch)<br/> issue_number = result.group(1)<br/><br/> with open(commit_msg_filepath, 'r+') as f:<br/> content = f.read()<br/> f.seek(0, 0)<br/> f.write("ISSUE-%s %s" % (issue_number, content))</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>First, the above <code>prepare-commit-msg</code> hook shows you how to collect all of the parameters that are passed to the script. Then, it calls <code>git symbolic-ref --short HEAD</code> to get the branch name that corresponds to <code>HEAD</code>. If this branch name starts with <code>issue-</code>, it re-writes the commit message file contents to include the issue number in the first line. So, if your branch name is <code>issue-224</code>, this will generate the following commit message.</p> </div> <div class="component component--codeblock"> <pre><code>ISSUE-224 <br/><br/># Please enter the commit message for your changes. Lines starting <br/># with '#' will be ignored, and an empty message aborts the commit. <br/># On branch issue-224 <br/># Changes to be committed: <br/># modified: test.txt</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>One thing to keep in mind when using <code>prepare-commit-msg</code> is that it runs even when the user passes in a message with the <code>-m</code> option of <code>git commit</code>. This means that the above script will automatically insert the <code>ISSUE-[#]</code> string without letting the user edit it. You can handle this case by seeing if the 2nd parameter (<code>commit_type</code>) is equal to <code>message</code>.</p> <p>However, without the <code>-m</code> option, the <code>prepare-commit-msg</code> hook does allow the user to edit the message after its generated, so this is really more of a convenience script than a way to enforce a commit message policy. For that, you need the <code>commit-msg</code> hook discussed in the next section.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Commit message </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The <code>commit-msg</code> hook is much like the <code>prepare-commit-msg</code> hook, but it’s called <em>after</em> the user enters a commit message. This is an appropriate place to warn developers that their message doesn’t adhere to your team’s standards.</p> <p>The only argument passed to this hook is the name of the file that contains the message. If it doesn’t like the message that the user entered, it can alter this file in-place (just like with <code>prepare-commit-msg</code>) or it can abort the commit entirely by exiting with a non-zero status.</p> <p>For example, the following script checks to make sure that the user didn’t delete the <code>ISSUE-[#]</code> string that was automatically generated by the <code>prepare-commit-msg</code> hook in the previous section.</p> </div> <div class="component component--codeblock"> <pre><code>#!/usr/bin/env python<br/><br/>import sys, os, re<br/>from subprocess import check_output<br/><br/># Collect the parameters<br/>commit_msg_filepath = sys.argv[1]<br/><br/># Figure out which branch we're on<br/>branch = check_output(['git', 'symbolic-ref', '--short', 'HEAD']).strip()<br/>print "commit-msg: On branch '%s'" % branch<br/><br/># Check the commit message if we're on an issue branch<br/>if branch.startswith('issue-'):<br/> print "commit-msg: Oh hey, it's an issue branch."<br/> result = re.match('issue-(.*)', branch)<br/> issue_number = result.group(1)<br/> required_message = "ISSUE-%s" % issue_number<br/><br/> with open(commit_msg_filepath, 'r') as f:<br/> content = f.read()<br/> if not content.startswith(required_message):<br/> print "commit-msg: ERROR! The commit message must start with '%s'" % required_message<br/> sys.exit(1)</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>While this script is called every time the user creates a commit, you should avoid doing much outside of checking the commit message. If you need to notify other services that a snapshot was committed, you should use the <code>post-commit</code> hook instead.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Post-Commit </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The <code>post-commit</code> hook is called immediately after the <code>commit-msg</code> hook. It can’t change the outcome of the <code>git commit</code> operation, so it’s used primarily for notification purposes.</p> <p>The script takes no parameters and its exit status does not affect the commit in any way. For most <code>post-commit</code> scripts, you’ll want access to the commit that was just created. You can use <code>git rev-parse HEAD</code> to get the new commit’s SHA1 hash, or you can use <code>git log -1 HEAD</code> to get all of its information.</p> <p>For example, if you want to email your boss every time you commit a snapshot (probably not the best idea for most workflows), you could add the following <code>post-commit</code> hook.</p> </div> <div class="component component--codeblock"> <pre><code>#!/usr/bin/env python<br/><br/>import smtplib<br/>from email.mime.text import MIMEText<br/>from subprocess import check_output<br/><br/># Get the git log --stat entry of the new commit<br/>log = check_output(['git', 'log', '-1', '--stat', 'HEAD'])<br/><br/># Create a plaintext email message<br/>msg = MIMEText("Look, I'm actually doing some work:\n\n%s" % log)<br/><br/>msg['Subject'] = 'Git post-commit hook notification'<br/>msg['From'] = 'mary@example.com'<br/>msg['To'] = 'boss@example.com'<br/><br/># Send the message<br/>SMTP_SERVER = 'smtp.example.com'<br/>SMTP_PORT = 587<br/><br/>session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)<br/>session.ehlo()<br/>session.starttls()<br/>session.ehlo()<br/>session.login(msg['From'], 'secretPassword')<br/><br/>session.sendmail(msg['From'], msg['To'], msg.as_string())<br/>session.quit()</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>It’s possible to use <code>post-commit</code> to trigger a local continuous integration system, but most of the time you’ll want to be doing this in the <code>post-receive</code> hook. This runs on the server instead of the user’s local machine, and it also runs every time <em>any</em> developer pushes their code. This makes it a much more appropriate place to perform your continuous integration.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Post-Checkout </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The <code>post-checkout</code> hook works a lot like the <code>post-commit</code> hook, but it’s called whenever you successfully check out a reference with <code>git checkout</code>. This is nice for clearing out your working directory of generated files that would otherwise cause confusion.</p> <p>This hook accepts three parameters, and its exit status has no affect on the <code>git checkout</code> command.</p> <p>1. The ref of the previous HEAD</p> <p>2. The ref of the new HEAD</p> <p>3. A flag telling you if it was a branch checkout or a file checkout. The flag will be <code>1</code> and <code>0</code>, respectively.</p> <p>A common problem with Python developers occurs when generated <code>.pyc</code> files stick around after switching branches. The interpreter sometimes uses these <code>.pyc</code> instead of the <code>.py</code> source file. To avoid any confusion, you can delete all <code>.pyc</code> files every time you check out a new branch using the following <code>post-checkout</code> script:</p> </div> <div class="component component--codeblock"> <pre><code>#!/usr/bin/env python<br/><br/>import sys, os, re<br/>from subprocess import check_output<br/><br/># Collect the parameters<br/>previous_head = sys.argv[1]<br/>new_head = sys.argv[2]<br/>is_branch_checkout = sys.argv[3]<br/><br/>if is_branch_checkout == "0":<br/> print "post-checkout: This is a file checkout. Nothing to do."<br/> sys.exit(0)<br/><br/>print "post-checkout: Deleting all '.pyc' files in working directory"<br/>for root, dirs, files in os.walk('.'):<br/> for filename in files:<br/> ext = os.path.splitext(filename)[1]<br/> if ext == '.pyc':<br/> os.unlink(os.path.join(root, filename))</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>The current working directory for hook scripts is always set to the root of the repository, so the <code>os.walk('.')</code> call iterates through every file in the repository. Then, we check its extension and delete it if it’s a <code>.pyc</code> file.</p> <p>You can also use the <code>post-checkout</code> hook to alter your working directory based on which branch you have checked out. For example, you might use a <code>plugins</code> branch to store all of your plugins outside of the core codebase. If these plugins require a lot of binaries that other branches do not, you can selectively build them only when you’re on the <code>plugins</code> branch.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Pre-Rebase </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The <code>pre-rebase</code> hook is called before <code>git rebase</code> changes anything, making it a good place to make sure something terrible isn’t about to happen.</p> <p>This hook takes 2 parameters: the upstream branch that the series was forked from, and the branch being rebased. The second parameter is empty when rebasing the current branch. To abort the rebase, exit with a non-zero status.</p> <p>For example, if you want to completely disallow rebasing in your repository, you could use the following <code>pre-rebase</code> script:</p> </div> <div class="component component--codeblock"> <pre><code>#!/bin/sh<br/><br/># Disallow all rebasing<br/>echo "pre-rebase: Rebasing is dangerous. Don't do it."<br/>exit 1</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>Now, every time you run <code>git rebase</code>, you’ll see this message:</p> </div> <div class="component component--codeblock"> <pre><code>pre-rebase: Rebasing is dangerous. Don't do it.<br/>The pre-rebase hook refused to rebase.</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>For a more in-depth example, take a look at the included <code>pre-rebase.sample</code> script. This script is a little more intelligent about when to disallow rebasing. It checks to see if the topic branch that you’re trying to rebase has already been merged into the <code>next</code> branch (which is assumed to be the mainline branch). If it has, you’re probably going to get into trouble by rebasing it, so the script aborts the rebase.</p> </div> </div> <div class="column s0 between" > <div class="component component--heading" id="server-side-hooks"> <h2 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Server-side hooks </h2> </div> <div class="component component--horizontal-rule align-left"> <hr class="type2 " /> </div> <div class="component component--textblock "> <p>Server-side hooks work just like local ones, except they reside in server-side repositories (e.g., a central repository, or a developer’s public repository). When attached to the official repository, some of these can serve as a way to enforce policy by rejecting certain commits.</p> <p>There are 3 server-side hooks that we’ll be discussing in the rest of this article:</p> </div> <div class="component component--textblock component--text-block-white"> <ul> <li><code>pre-receive</code></li> <li><code>update</code></li> <li style="margin-bottom: 24px"><code>post-receive</code></li> </ul> <p>All of these hooks let you react to different stages of the <code>git push</code> process.</p> <p>The output from server-side hooks are piped to the client’s console, so it’s very easy to send messages back to the developer. But, you should also keep in mind that these scripts don’t return control of the terminal until they finish executing, so you should be careful about performing long-running operations.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Pre-Receive </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The <code>pre-receive</code> hook is executed every time somebody uses <code>git push</code> to push commits to the repository. It should always reside in the <em>remote</em> repository that is the destination of the push, not in the originating repository.</p> <p>The hook runs before any references are updated, so it’s a good place to enforce any kind of development policy that you want. If you don’t like who is doing the pushing, how the commit message is formatted, or the changes contained in the commit, you can simply reject it. While you can’t stop developers from making malformed commits, you can prevent these commits from entering the official codebase by rejecting them with <code>pre-receive</code>.</p> <p>The script takes no parameters, but each ref that is being pushed is passed to the script on a separate line on standard input in the following format:</p> </div> <div class="component component--codeblock"> <pre><code><old-value> <new-value> <ref-name></code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>You can see how this hook works using a very basic <code>pre-receive</code> script that simply reads in the pushed refs and prints them out.</p> </div> <div class="component component--codeblock"> <pre><code>#!/usr/bin/env python<br/><br/>import sys<br/>import fileinput<br/><br/># Read in each ref that the user is trying to update<br/>for line in fileinput.input():<br/> print "pre-receive: Trying to push ref: %s" % line<br/><br/># Abort the push<br/># sys.exit(1)</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>Again, this is a little different than the other hooks because information is passed to the script via standard input instead of as command-line arguments. After placing the above script in the <code>.git/hooks</code> directory of a remote repository and pushing the <code>main</code> branch, you’ll see something like the following in your console:</p> </div> <div class="component component--codeblock"> <pre><code>b6b36c697eb2d24302f89aa22d9170dfe609855b 85baa88c22b52ddd24d71f05db31f4e46d579095 refs/heads/main</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>You can use these SHA1 hashes, along with some lower-level Git commands, to inspect the changes that are going to be introduced. Some common use cases include:</p> <ul> <li>Rejecting changes that involve an upstream rebase</li> <li>Preventing non-fast-forward merges</li> <li style="margin-bottom: 24px">Checking that the user has the correct permissions to make the intended changes (mostly used for centralized Git workflows)</li> </ul> <p>If multiple refs are pushed, returning a non-zero status from <code>pre-receive</code> aborts <em>all</em> of them. If you want to accept or reject branches on a case-by-case basis, you need to use the <code>update</code> hook instead.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Update </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The <code>update</code> hook is called after <code>pre-receive</code>, and it works much the same way. It’s still called before anything is actually updated, but it’s called separately for each ref that was pushed. That means if the user tries to push 4 branches, <code>update</code> is executed 4 times. Unlike <code>pre-receive</code>, this hook doesn’t need to read from standard input. Instead, it accepts the following 3 arguments:</p> <p>1. The name of the ref being updated</p> <p>2. The old object name stored in the ref</p> <p>3. The new object name stored in the ref</p> <p>This is the same information passed to <code>pre-receive</code>, but since <code>update</code> is invoked separately for each ref, you can reject some refs while allowing others.</p> </div> <div class="component component--codeblock"> <pre><code>#!/usr/bin/env python<br/><br/>import sys<br/><br/>branch = sys.argv[1]<br/>old_commit = sys.argv[2]<br/>new_commit = sys.argv[3]<br/><br/>print "Moving '%s' from %s to %s" % (branch, old_commit, new_commit)<br/><br/># Abort pushing only this branch<br/># sys.exit(1)</code></pre> </div> <script type="text/x-component"> { "type":"imkt.components.CodeBlock", "params": { } } </script> <div class="component component--textblock component--text-block-white"> <p>The above <code>update</code> hook simply outputs the branch and the old/new commit hashes. When pushing more than one branch to the remote repository, you’ll see the <code>print</code> statement execute for each branch.</p> </div> <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Post-Receive </h3> </div> <div class="component component--textblock component--text-block-white"> <p>The <code>post-receive</code> hook gets called after a successful push operation, making it a good place to perform notifications. For many workflows, this is a better place to trigger notifications than <code>post-commit</code> because the changes are available on a public server instead of residing only on the user’s local machine. Emailing other developers and triggering a continuous integration system are common use cases for <code>post-receive</code>.</p> <p>The script takes no parameters, but is sent the same information as <code>pre-receive</code> via standard input.</p> </div> </div> <div class="column s0 between" > <div class="component component--heading"> <h2 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Summary </h2> </div> <div class="component component--horizontal-rule align-left"> <hr class="type2 " /> </div> <div class="component component--textblock component--text-block-white"> <p>In this article, we learned how Git hooks can be used to alter internal behavior and receive notifications when certain events occur in a repository. Hooks are ordinary scripts that reside in the <code>.git/hooks</code> repository, which makes them very easy to install and customize.</p> <p>We also looked at some of the most common local and server-side hooks. These let us plug in to the entire development life cycle. We now know how to perform customizable actions at every stage in the commit creation process, as well as the <code>git push</code> process. With a little bit of scripting knowledge, this lets you do virtually anything you can imagine with a Git repository.</p> </div> </div> <div class="column s0 between" > <div class="component component--horizontal-rule align-center"> <hr class="default " /> </div> </div> <div class="column column-xs-8 column-xl-9 text-left s0 between" > <div class="component component--heading"> <h6 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- eyebrows heading" > Share this article </h6> </div> <div class="imkt-social-buttons-group"> <div class="imkt-social-buttons standard"> <ul class="align left"> <li class="imkt-social-button social-code facebook"> <a target="_blank" rel="noopener noreferrer" href="https://www.facebook.com/dialog/feed?app_id=743864389089816&caption=Git%20Hooks&link=https://www.atlassian.com/git/tutorials/git-hooks&description=Git%20Hooks%20are%20scripts%20that%20run%20automatically%20every%20time%20a%20particular%20event%20occurs%20in%20a%20Git%20repository.%20Learn%20what%20they%20do%20and%20how%20to%20use%20them%20effectively.&picture=https://wac-cdn.atlassian.com/dam/jcr:325fff80-6aa7-4d46-a3f9-4db402f17a8d/devops-loop-illustrations.png&name=Git%20Hooks" title="Share on Facebook" data-uuid="dfd880d4-11e3-4e16-b9ed-5351ce0f29de-shareonfacebook" onclick="window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=400,width=600'); return false;"></a> </li> <li class="imkt-social-button social-code twitter"> <a target="_blank" rel="noopener noreferrer" href="//twitter.com/share?text=Git%20Hooks%20are%20scripts%20that%20run%20automatically%20every%20time%20a%20particular%20event%20occurs%20in%20a%20Git%20repository.%20Learn%20what%20they%20do%20and%20how%20to%20use%20them%20effectively.&url=https://www.atlassian.com/git/tutorials/git-hooks&via=Atlassian" data-uuid="dfd880d4-11e3-4e16-b9ed-5351ce0f29de-shareontwitter" title="Share on Twitter" onclick="window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=400,width=600'); return false;"></a> </li> <li class="imkt-social-button social-code linked-in"> <a target="_blank" rel="noopener noreferrer" href="http://www.linkedin.com/shareArticle?mini=true&url=https://www.atlassian.com/git/tutorials/git-hooks&title=Git%20Hooks&summary=Git%20Hooks%20are%20scripts%20that%20run%20automatically%20every%20time%20a%20particular%20event%20occurs%20in%20a%20Git%20repository.%20Learn%20what%20they%20do%20and%20how%20to%20use%20them%20effectively.&source=Atlassian" data-uuid="dfd880d4-11e3-4e16-b9ed-5351ce0f29de-shareonlinkedin" title="Share on LinkedIn" onclick="window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=400,width=600'); return false;"></a> </li> </ul> </div> </div> </div> <div class="column column-xs-4 column-xl-3 s0 between" > <div class="component component--heading" style="margin-bottom:-10px;padding-top:3px;"> <h5 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Next Topic </h5> </div> <div class="component component--link-button "> <a href="/git/tutorials/refs-and-the-reflog" data-event="clicked" data-uuid="132c4719-33" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Refs and the reflog" data-label-english="Refs and the reflog" class="component__link link-arrow " > Refs and the reflog<svg class="link-arrow-image" width="11px" height="8px" viewBox="0 0 11 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g class="group-path" transform="translate(-138.000000, -586.000000)" fill="#0052CC"><path d="M145.2803,586.507862 L144.2193,587.568863 L145.9393,589.287862 L138.7503,589.287862 C138.3363,589.287862 138.0003,589.623862 138.0003,590.037862 C138.0003,590.451862 138.3363,590.787862 138.7503,590.787862 L145.9393,590.787862 L144.2193,592.507862 L145.2803,593.568863 L148.8103,590.037862 L145.2803,586.507862 Z"></path></g></g></svg> </a> </div> </div> </div> </div> </div> </div> </div> <div class="container-fluid md-cozy theme-two"> <div class="row flex-container reduced-row"> <div class="column s0 between" > <div class="component component--heading-textblock"> <h2 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Recommended reading </h2> <p>Bookmark these resources to learn about types of DevOps teams, or for ongoing updates about DevOps at Atlassian.</p> </div> </div> <div class="column column-md-4 s0 between" > <div class="component component--image-heading-textblock"> <div class="component__image"> <img id="07b51430" alt="People collaborating using a wall full of tools" class="component__image" style="width:100%;" src="https://wac-cdn.atlassian.com/dam/jcr:2642fbab-a771-4961-9648-806c2fff25e5/bitbucket-blog-resized.png?cdnVersion=2563" loading="lazy" /> </div> <div class="component__heading-textblock"> <h4 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Bitbucket blog </h4> </div> </div> <div class="component component--link-button "> <a href="https://bitbucket.org/blog/" data-event="clicked" data-uuid="f7be5474-56" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Learn more" data-label-english="Learn more" class="component__link link-arrow " > Learn more<svg class="link-arrow-image" width="11px" height="8px" viewBox="0 0 11 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g class="group-path" transform="translate(-138.000000, -586.000000)" fill="#0052CC"><path d="M145.2803,586.507862 L144.2193,587.568863 L145.9393,589.287862 L138.7503,589.287862 C138.3363,589.287862 138.0003,589.623862 138.0003,590.037862 C138.0003,590.451862 138.3363,590.787862 138.7503,590.787862 L145.9393,590.787862 L144.2193,592.507862 L145.2803,593.568863 L148.8103,590.037862 L145.2803,586.507862 Z"></path></g></g></svg> </a> </div> </div> <div class="column column-md-4 s0 between" > <div class="component component--image-heading-textblock"> <div class="component__image"> <img id="f38f933c" alt="Devops illustration" class="component__image" style="width:100%;" src="https://wac-cdn.atlassian.com/dam/jcr:d1f1a28b-11fc-4e22-b6c8-d47832b39d53/devops-learning-path-resized.png?cdnVersion=2563" loading="lazy" /> </div> <div class="component__heading-textblock"> <h4 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > DevOps learning path </h4> </div> </div> <div class="component component--link-button "> <a href="https://university.atlassian.com/student/path/837218-devops?sid=40f7e9cd-efb5-4168-8587-49c3d15610a0&sid_i=0" data-event="clicked" data-uuid="22950149-e8" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Learn more" data-label-english="Learn more" class="component__link link-arrow " > Learn more<svg class="link-arrow-image" width="11px" height="8px" viewBox="0 0 11 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g class="group-path" transform="translate(-138.000000, -586.000000)" fill="#0052CC"><path d="M145.2803,586.507862 L144.2193,587.568863 L145.9393,589.287862 L138.7503,589.287862 C138.3363,589.287862 138.0003,589.623862 138.0003,590.037862 C138.0003,590.451862 138.3363,590.787862 138.7503,590.787862 L145.9393,590.787862 L144.2193,592.507862 L145.2803,593.568863 L148.8103,590.037862 L145.2803,586.507862 Z"></path></g></g></svg> </a> </div> </div> <div class="column column-md-4 s0 between" > <div class="component component--image-heading-textblock"> <div class="component__image"> <img id="ce0996c3" alt="Demo Den Feature demos with Atlassian experts" class="component__image" style="width:100%;" src="https://wac-cdn.atlassian.com/dam/jcr:73c6bd92-448f-4ae7-a6c1-5f4695f78692/demo-den-resized.png?cdnVersion=2563" loading="lazy" /> </div> <div class="component__heading-textblock"> <h4 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > How Bitbucket Cloud works with Atlassian Open DevOps </h4> </div> </div> <div class="component component--video-link"> <a class="play-trigger" data-event="clicked" data-uuid="4c6d4200-47" data-event-component="linkButton" data-event-container="videoLink" data-schema-version="1" data-product-key="bitbucket" data-label-english="Watch now" href="https://www.youtube.com/watch?v=kr2zkyxnhAk"> <span class="component--video-link__play--tiny"></span> <span class="component--video-link__text">Watch now</span> </a> <script type="text/x-component"> { "type":"imkt.components.VideoEmbedInline", "params": { "behavior":"modal", "videoId":"kr2zkyxnhAk", "source":"youtube", "uniqueId":"4c6d4200" } } </script></div> </div> <div class="column column-md-6 s0 between" > <div class="component component--heading"> <h3 class="fnt-wt font-wt- fnt-mg font-mgn- fnt-ln font-lnh- heading" > Sign up for our DevOps newsletter </h3> </div> <div class="component component--exact-target-form theme-one"> <form class="exact-target-form" data-mailing-list-id="1412722"> <div class="exact-target-form__label"> <label for="et-344ce5b4-5d56-412f-ab27-427ac361f25c">Email address</label> </div> <div class="exact-target-form__email-input"> <input type="email" name="et-344ce5b4-5d56-412f-ab27-427ac361f25c" required id="et-344ce5b4-5d56-412f-ab27-427ac361f25c" /> </div> <div class="exact-target-form__hp-field"> <input type="text" name="list_name" aria-label="Keep this field blank" /> </div> <div class="exact-target-form__submit-input"> <input type="submit" data-event="clicked" data-uuid="344ce5b4-5d" data-event-component="linkButton" data-event-container="exactTargetForm" data-schema-version="1" data-product-key="bitbucket" value="Sign up" class="button button--three button--regular button--primary" /> </div> </form> <div class="exact-target-form__message hide-all"> <p>Thank you for signing up</p> </div> <script type="text/x-component-translate"> /* <sl:translate_json> */ { "sl_translate": "requiredError, invalidEmailError, submitError, consentLabel", "type":"imkt.components.ExactTargetFormV2", "params": { "formId":"344ce5b4-5d56-412f-ab27-427ac361f25c", "consentYes":"", "subscriptionKey":"atlassian.devOpsCentral", "eapTermsOfService":"", "useSocs":false, "exactTargetId":"1412722", "name":"et-344ce5b4-5d56-412f-ab27-427ac361f25c", "requiredError":"This field is required", "invalidEmailError":"This field requires a valid email address", "submitError":"There was a server error submitting", "redirectUrl":"", "useGdpr":true, "needsConsent":false, "consentLabel":"", "privacyPolicy":"", "gdprId":"gdpr-344ce5b4-5d56-412f-ab27-427ac361f25c", "site":"atlassian", "useSubmissionBlock":"false", "postSubmissionBlockId":"" } } /* </sl:translate_json> */ </script></div> </div> </div> </div> </main> <footer id="footer" class="footer footer--wac"> <div class="container-fluid"> <div class="container-fluid"> <div class="row reduced-row"> <div class="component s0 between component--block" id="footer-block-above" style="margin:0;" > <style> footer#footer { background: none; } #footer > .container-fluid > .container-fluid > .row { width: 1200px; margin: auto; max-width: 100%; min-width: auto; } div#bottom-links-footer { padding: 0 40px; } footer#footer.footer.footer--wac .footer-standard-links a { color: #101214; margin-bottom: 24px; } .see-all-footer { padding-top: 30px; } .component--block.left-footer a { font-weight: 600; } .footer .language-selector:before { content: ""; width: 19px; height: 19px; background-size: 100% 100%; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAT0SURBVHgBzVg/VxtHEJ/ZI7YQPOcCKI/y/AmsdOkiOndBpauITwB8AlCVlw46dxZdOnCXznKXLnKXLucmDyME6wQLGUu7nt07nW7/nJCwC+Y9/bnd2Zm5mdnZ3yzCHShcW6uBgCog/AQSqwAyVMPpNAfAGFDGIOE1BNjm3W4H5iSclTGMohD+u9qmJQ0yJIK5SBkKTfgmaPPT03imFbMwhStre/SzAxOv3JHIQJAtfnHevJVz2mS4vh7BzeiYhFXhqxIZ+CDYmOY9VjQRrq7+AjfDvwqM4jCTfmj7JygVSHa4+v0mzGOYNkpiC9zQKYOagLjrrtL81hB2QCw81mt0GE01IMWx1uWhwDWK3kLC7x4lhyCW6/zy3z9Ki0vHYBiNMb/obpQWyyo1atmwhB/hITvk3bOT0sNHL2mnfkejVgRws1RejAfX12/yo4bHdE5J8QJc2uW97g7nMQ9XKw1nV4pgI/kdHjie+TRSGwc4P1XGN5QsR7rEA627yDBK9Fdghw/lFu2ig4kQuW1KxZZSmijnHFCYiqVs6FKTkpaFuGXKIJ16k00oC2VaEuxk3OUXvecZT6VSpfDsGxxioT4YXGWbgULyd6lcrtHfKOP5ePNxcN1vT3j6HQr7e/r7NCdpXaXCmE97LHGjKpx5wpbhKW0EmN6S8HLsLXvcGtm2WRLZ8tDmG3s3CeWnUc3MG8oTETQ9CmvGM2Mt8JEYqvF8SQn1MebwjfZtPjpddiaGSdizLDiyPaHDaCY9572zE/CQzjWSYYrETT8fWF5DXT6YR6HKm5YtBEayZiqiA3oaMTyx+H/28umdnPeajJR3mUehP29s4wurekrDYcdRmNudY0p2Mpjog5AL09BlFoWIT4xnBlOhTBqm2Bj8v1/zMtubhXKZ0Vc0k0KJJt8QZzgvpRluKSIvG2E245mcgFS/JNw/4gzuJ4X31TC4r4bxhRTuRtmQwB84d5uHcKXyj8k3fEwbL54iHDQSkTKHVhSs7m05fElz82oygjGVC2kaway6lvFS15On4MHtcFvatY+99/IJC6NJ+ZY5FRwLKrTEt+ZzwdY3ZT2xFMYFfE4tZU7dklD1VWia6FiL/S9gyoqMZ0+NTMCpBbcEthk/P29bqDM74U3mBfvsK3iBnEIbRi8vu8X7ZmhhfoLplOPprrSQQA4XjSk9P02IcnVVnGcaSuX1QZvHMXeNt3CgaoxhXC6cE14p/WBBIc8LOHBp2hwegWv8noMDR0E7M8yLi4TcoePKDKkLZWq+cHobllRhxrNS2Vb9gLlyggMzzK+wNmFulYTrOc6n+dZq0O/Ht+F5RZ72rsUvz44mhute8rlplGoBz+vjJ7PyU2MBdpdNja/pOScke/nWK2lqnPauOZlXnnKaY561gCkZDa/qdkrlpXfgdkvkuaWo9O2jN9S8kmeXGpD3iBBV8tqRNnAkLLideEuFvMQWfqWBfbAJ2TN++e5PYwg85B4lGXusjpV0nZ34++4VFfEHUCeUrGqe/7ZI9a29XssZhgKiPKCrAnwBX3b1NE6L0DuHctdn1FTDtLSQQsNUdz7vRd1tpC5bgrq/t0gomLZc5RzlzmFyWYIRfPHFnfbgb7T7nuW7dx/NftWpvBdQNdeF8w5Xnao4i+UDdTEz0wq4A4Uh9aIKHklCBahrmvrkL4c5bZ4Ozb1WB3dyHs9HnwFJdEGUx9BaTwAAAABJRU5ErkJggg==); } .language-selector { display: flex; gap: 5px; margin-right: 20px; } .footer select#footer-language-selector { background: none; } .column.footer-standard-links > .intra-div { column-gap: 24px; row-gap: 48px; display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; } @media (max-width: 1023px) { .column.footer-standard-links > .intra-div { grid-template-columns: 1fr 1fr; } } @media (max-width: 768px) { .column.footer-standard-links > .intra-div { grid-template-columns: 1fr; } } </style> </div> <div class="column footer-standard-links " style="border-radius:0 0 24px 24px;float:none;" > <div class="intra-div alignItemsStretch justifySpaceBetween wrap no s40 between column__background n10 has-border border-color- padding-24 padding-style-allSides allSides border-radius-15 border-width-0"> <div class="component s0 between component--block left-footer" > <div class="component component--image"> <img id="d8cf6e7a" alt="" class="component__image xs-outerspace-bottom" style="width:26px;height:26px;" src="https://wac-cdn.atlassian.com/dam/jcr:9c4bf443-5045-4ff9-a48d-36ae466f3ced/logos-atlassian-mini-icon-onecolor-blue.svg?cdnVersion=2563" loading="lazy" /> </div> <div class="component component--link-button "> <a href="/company" data-event="clicked" data-uuid="fbf3b54c-4e" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Company" data-label-english="Company" class="component__link default " > Company </a> </div> <div class="component component--link-button "> <a href="/company/careers" data-event="clicked" data-uuid="658e91b4-45" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Careers" data-label-english="Careers" class="component__link default " > Careers </a> </div> <div class="component component--link-button "> <a href="/company/events" data-event="clicked" data-uuid="f547dec4-ee" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Events" data-label-english="Events" class="component__link default " > Events </a> </div> <div class="component component--link-button "> <a href="https://atlassian.com/blog" data-event="clicked" data-uuid="104c1e17-07" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Blogs" data-label-english="Blogs" class="component__link default " > Blogs </a> </div> <div class="component component--link-button "> <a href="https://investors.atlassian.com/" data-event="clicked" data-uuid="8dff4c3d-81" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Investor Relations" data-label-english="Investor Relations" class="component__link default " > Investor Relations </a> </div> <div class="component component--link-button "> <a href="https://www.atlassianfoundation.org/" data-event="clicked" data-uuid="99564f33-ce" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Atlassian Foundation" data-label-english="Atlassian Foundation" class="component__link default " > Atlassian Foundation </a> </div> <div class="component component--link-button "> <a href="/company/contact" data-event="clicked" data-uuid="f40912fd-d4" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Contact us" data-label-english="Contact us" class="component__link default " > Contact us </a> </div> </div> <div class="component flexCol alignItemsBaseline justifyStart noWrap anchorLastItem s0 between component--block" > <div class="component component--heading"> <div class="color-head text-n900"> <h5 class="fnt-wt font-wt-600 fnt-mg font-mgn- fnt-ln font-lnh- heading" > products </h5> </div> </div> <div class="component component--link-button "> <a href="/software/rovo" data-event="clicked" data-uuid="887f4120-85" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Rovo" data-label-english="Rovo" class="component__link default " > Rovo </a> </div> <div class="component component--link-button "> <a href="/software/jira" data-event="clicked" data-uuid="7c6497e9-48" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Jira" data-label-english="Jira" class="component__link default " > Jira </a> </div> <div class="component component--link-button "> <a href="/software/jira/align" data-event="clicked" data-uuid="80aff0eb-ad" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Jira Align" data-label-english="Jira Align" class="component__link default " > Jira Align </a> </div> <div class="component component--link-button "> <a href="/software/jira/service-management" data-event="clicked" data-uuid="0a3a2afd-da" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Jira Service Management" data-label-english="Jira Service Management" class="component__link default " > Jira Service Management </a> </div> <div class="component component--link-button "> <a href="/software/confluence" data-event="clicked" data-uuid="8837ace6-b7" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Confluence" data-label-english="Confluence" class="component__link default " > Confluence </a> </div> <div class="component component--link-button "> <a href="/software/trello" data-event="clicked" data-uuid="6619f65d-b2" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Trello" data-label-english="Trello" class="component__link default " > Trello </a> </div> <div class="component component--link-button "> <a href="https://bitbucket.org/product" data-event="clicked" data-uuid="89700592-1c" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Bitbucket" data-label-english="Bitbucket" class="component__link default " > Bitbucket </a> </div> <div class="component component--link-button see-all-footer "> <a href="/software" data-event="clicked" data-uuid="5e63d93e-26" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="See all products" data-label-english="See all products" class="component__link link-arrow " > See all products<svg class="link-arrow-image" width="11px" height="8px" viewBox="0 0 11 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g class="group-path" transform="translate(-138.000000, -586.000000)" fill="#0052CC"><path d="M145.2803,586.507862 L144.2193,587.568863 L145.9393,589.287862 L138.7503,589.287862 C138.3363,589.287862 138.0003,589.623862 138.0003,590.037862 C138.0003,590.451862 138.3363,590.787862 138.7503,590.787862 L145.9393,590.787862 L144.2193,592.507862 L145.2803,593.568863 L148.8103,590.037862 L145.2803,586.507862 Z"></path></g></g></svg> </a> </div> </div> <div class="component flexCol alignItemsBaseline justifyStart noWrap anchorLastItem s0 between component--block" > <div class="component component--heading"> <div class="color-head text-n900"> <h5 class="fnt-wt font-wt-600 fnt-mg font-mgn- fnt-ln font-lnh- heading" > Resources </h5> </div> </div> <div class="component component--link-button "> <a href="https://support.atlassian.com/" data-event="clicked" data-uuid="e22460f0-ec" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Technical support" data-label-english="Technical support" class="component__link default " > Technical support </a> </div> <div class="component component--link-button "> <a href="/licensing/purchase-licensing" data-event="clicked" data-uuid="fc29565e-9f" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Purchasing & licensing" data-label-english="Purchasing & licensing" class="component__link default " > Purchasing & licensing </a> </div> <div class="component component--link-button "> <a href="https://community.atlassian.com/" data-event="clicked" data-uuid="e94fb789-37" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Atlassian Community" data-label-english="Atlassian Community" class="component__link default " > Atlassian Community </a> </div> <div class="component component--link-button "> <a href="https://confluence.atlassian.com/kb" data-event="clicked" data-uuid="b834bedf-ea" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Knowledge base" data-label-english="Knowledge base" class="component__link default " > Knowledge base </a> </div> <div class="component component--link-button "> <a href="https://marketplace.atlassian.com/" data-event="clicked" data-uuid="45742a09-c9" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Marketplace" data-label-english="Marketplace" class="component__link default " > Marketplace </a> </div> <div class="component component--link-button "> <a href="https://my.atlassian.com/products/index" data-event="clicked" data-uuid="a97e819e-0f" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="My account" data-label-english="My account" class="component__link default " > My account </a> </div> <div class="component component--link-button see-all-footer "> <a href="https://support.atlassian.com/contact/" data-event="clicked" data-uuid="c6ad22a8-4a" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Create support ticket" data-label-english="Create support ticket" class="component__link link-arrow " > Create support ticket<svg class="link-arrow-image" width="11px" height="8px" viewBox="0 0 11 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g class="group-path" transform="translate(-138.000000, -586.000000)" fill="#0052CC"><path d="M145.2803,586.507862 L144.2193,587.568863 L145.9393,589.287862 L138.7503,589.287862 C138.3363,589.287862 138.0003,589.623862 138.0003,590.037862 C138.0003,590.451862 138.3363,590.787862 138.7503,590.787862 L145.9393,590.787862 L144.2193,592.507862 L145.2803,593.568863 L148.8103,590.037862 L145.2803,586.507862 Z"></path></g></g></svg> </a> </div> </div> <div class="component flexCol alignItemsBaseline justifyStart noWrap anchorLastItem s0 between component--block" > <div class="component component--heading"> <div class="color-head text-n900"> <h5 class="fnt-wt font-wt-600 fnt-mg font-mgn- fnt-ln font-lnh- heading" > Learn </h5> </div> </div> <div class="component component--link-button "> <a href="/partners" data-event="clicked" data-uuid="c16e749d-b8" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Partners" data-label-english="Partners" class="component__link default " > Partners </a> </div> <div class="component component--link-button "> <a href="/university" data-event="clicked" data-uuid="21032dda-9c" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Training & certification" data-label-english="Training & certification" class="component__link default " > Training & certification </a> </div> <div class="component component--link-button "> <a href="https://confluence.atlassian.com/display/ALLDOC/Atlassian+Documentation" data-event="clicked" data-uuid="071e1282-f9" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Documentation" data-label-english="Documentation" class="component__link default " > Documentation </a> </div> <div class="component component--link-button "> <a href="/developers" data-event="clicked" data-uuid="9372cc4e-70" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Developer resources" data-label-english="Developer resources" class="component__link default " > Developer resources </a> </div> <div class="component component--link-button "> <a href="/enterprise/success" data-event="clicked" data-uuid="667d04b1-f4" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Enterprise services" data-label-english="Enterprise services" class="component__link default " > Enterprise services </a> </div> <div class="component component--link-button see-all-footer "> <a href="/resources" data-event="clicked" data-uuid="6c951c94-0f" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="See all resources" data-label-english="See all resources" class="component__link link-arrow " > See all resources<svg class="link-arrow-image" width="11px" height="8px" viewBox="0 0 11 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g class="group-path" transform="translate(-138.000000, -586.000000)" fill="#0052CC"><path d="M145.2803,586.507862 L144.2193,587.568863 L145.9393,589.287862 L138.7503,589.287862 C138.3363,589.287862 138.0003,589.623862 138.0003,590.037862 C138.0003,590.451862 138.3363,590.787862 138.7503,590.787862 L145.9393,590.787862 L144.2193,592.507862 L145.2803,593.568863 L148.8103,590.037862 L145.2803,586.507862 Z"></path></g></g></svg> </a> </div> </div> </div> </div> <div class="component component--block" id="bottom-links-footer" > <div class="intra-div flexRow alignContentStretch alignItemsStretch justifySpaceBetween wrap no s16 between flexColSm has-border border-color- padding-40 padding-style-leftRight allSides border-radius-default border-width-0"> <div class="component flexRow alignItemsCenter justifyEnd noWrap no s24 between flexColSm component--block footer-callout-column" style="margin-top:0;" > <div class="component component--heading" style="margin-right:auto;"> <div class="color-head text-n200"> <p class="font-xs-14 fnt-wt font-wt- fnt-mg font-mgn-0 fnt-ln font-lnh- heading" > Copyright © 2024 Atlassian </p> </div> </div> </div> <div class="component flexRow alignItemsStretch justifyStart noWrap no s24 between flexColXs component--block footer-callout-column" > <div class="component component--link-button "> <a href="/legal/privacy-policy#what-this-policy-covers" data-event="clicked" data-uuid="2c84a357-37" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Privacy Policy" data-label-english="Privacy Policy" class="component__link default " > Privacy Policy </a> </div> <div class="component component--link-button "> <a href="/trust" data-event="clicked" data-uuid="3927006b-a3" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Terms" data-label-english="Terms" class="component__link default " > Terms </a> </div> <div class="component component--link-button "> <a href="/trust" data-event="clicked" data-uuid="27e098b6-72" data-event-component="linkButton" data-event-container="linkButton" data-schema-version="1" data-product-key="bitbucket" data-label="Impressum" data-label-english="Impressum" class="component__link default " > Impressum </a> </div> <div class="language-selector"> <form action="#" method="GET"> <label for="footer-language-selector" aria-label="Choose language"></label> <select id="footer-language-selector" option="language-selector" name="url" style="width: 3.6rem"> <option disabled>Choose language</option> <option aria-label="Deutsch" aria-label="Deutsch" class="notranslate SL_opaque" data-lang="de" data-width="4rem" value="https://www.atlassian.com/de/git/tutorials/git-hooks">Deutsch</option> <option selected aria-label="English" aria-label="English" class="notranslate SL_opaque" data-lang="en" data-width="3.6rem" value="https://www.atlassian.com/git/tutorials/git-hooks">English</option> <option aria-label="Español" aria-label="Español" class="notranslate SL_opaque" data-lang="es" data-width="4rem" value="https://www.atlassian.com/es/git/tutorials/git-hooks">Español</option> <option aria-label="Français" aria-label="Français" class="notranslate SL_opaque" data-lang="fr" data-width="4.1rem" value="https://www.atlassian.com/fr/git/tutorials/git-hooks">Français</option> <option aria-label="Italiano" aria-label="Italiano" class="notranslate SL_opaque" data-lang="it" data-width="3.8rem" value="https://www.atlassian.com/it/git/tutorials/git-hooks">Italiano</option> <option aria-label="한국어" aria-label="한국어" class="notranslate SL_opaque" data-lang="ko" data-width="2.9rem" value="https://www.atlassian.com/ko/git/tutorials/git-hooks">한국어</option> <option aria-label="Nederlands" aria-label="Nederlands" class="notranslate SL_opaque" data-lang="nl" data-width="5.4rem" value="https://www.atlassian.com/nl/git/tutorials/git-hooks">Nederlands</option> <option aria-label="日本語" aria-label="日本語" class="notranslate SL_opaque" data-lang="ja" data-width="3.15rem" value="https://www.atlassian.com/ja/git/tutorials/git-hooks">日本語</option> <option aria-label="Polski" aria-label="Polski" class="notranslate SL_opaque" data-lang="pl" data-width="3.1rem" value="https://www.atlassian.com/pl/git/tutorials/git-hooks">Polski</option> <option aria-label="Português" aria-label="Português" class="notranslate SL_opaque" data-lang="br" data-width="4.85rem" value="https://www.atlassian.com/br/git/tutorials/git-hooks">Português</option> <option aria-label="русский" aria-label="русский" class="notranslate SL_opaque" data-lang="ru" data-width="4.1rem" value="https://www.atlassian.com/ru/git/tutorials/git-hooks">русский</option> <option aria-label="中文" aria-label="中文" class="notranslate SL_opaque" data-lang="zh" data-width="2.35rem" value="https://www.atlassian.com/zh/git/tutorials/git-hooks">中文</option> </select> <script type="text/x-component"> { "type":"imkt.components.LanguageSelector", "params": { } } </script></form> </div> </div> </div> </div> </div> </div> </div> </footer> <script type="text/x-component"> { "type":"imkt.components.PageLeaveTracking", "params": { } } </script> <script type="text/javascript" src="https://wac-cdn.atlassian.com/static/master/8798/assets/build/js/main.js?cdnVersion=2563"></script> <script type="text/javascript"> (function(){ var imkt = window.imkt = window.imkt || {}; imkt.isEditMode = false; imkt.isProduction = true; imkt.constants = imkt.constants || {}; imkt.constants.rootPath = "/"; imkt.constants.assetPath = "https://wac-cdn.atlassian.com/static/master/8798" + "/assets/"; imkt.constants.libPath = imkt.constants.assetPath + "bower_components/"; imkt.constants.cdnVersionQuery = "?cdnVersion=2563"; imkt.constants.isDevUser = false; imkt.constants.isFreeEnabled = true; imkt.constants.getUserAccounts = false; imkt.constants.headerLoginMenu = true; imkt.constants.public = true; imkt.constants.mobileBreakpoint = 640; })(); </script> <script type="text/x-component"> { "type":"imkt.pages.WACPage", "params": { } } </script> <script> function initializeATLAnalytics() { var pageViewProperties = { contentSite: 'Git Microsite', contentType: 'Microsite', contentProduct: 'Bitbucket' }; /* get url path, convert to dash format and add it to page view properties. */ var originProduct = window.location.pathname; pageViewProperties.originProduct = "wac" + (originProduct === '/' ? "" : originProduct.replace(new RegExp('/', 'g'),"-")); if (typeof ace !== 'undefined') { ace.analytics.Initializer.initWithPageAnalytics('kiv6wyh2nw', pageViewProperties, null, null, window.atlGlobalLoadStart); } window.initializeATLAnalyticsTriggered = true; const initAtlAnalyticsOnloadEvent = new CustomEvent('onLoadExternalJSATLAnalytics', { bubbles: true, cancelable: true, detail: 'Emit onLoad event for ATL Analytics function.' }); document.dispatchEvent(initAtlAnalyticsOnloadEvent); } </script> <script type = "text/javascript"> /** * function to load external js through javascript. * * @param url - javascript url * @param location - location of the dom (e.g. document.head) */ var loadExternalJS = function(url, location, callback){ var scriptTag = document.createElement('script'); scriptTag.src = url; scriptTag.type = 'text/javascript'; /* Then bind the event to the callback function. There are several events for cross browser compatibility. */ scriptTag.onreadystatechange = callback; scriptTag.onload = callback; window.atlGlobalLoadStart = new Date(); /* Fire the loading */ location.appendChild(scriptTag); }; </script> <script type="text/javascript" class="optanon-category-2"> loadExternalJS("https://atl-global.atlassian.com/js/atl-global.min.js", document.body, initializeATLAnalytics); </script> </body> <!-- LastRendered: Feb 15, 2025 3:39:23 AM --> </html>