開始使用 Git 和 AWS CodeCommit - AWS CodeCommit

AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可以繼續正常使用服務。進一步了解"

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

開始使用 Git 和 AWS CodeCommit

如果您是 Git 的新手 CodeCommit,並且,本教程可幫助您學習一些簡單的命令來幫助您開始使用。如果您已熟悉 Git,則可以略過此教學課程而直接進入 開始使用 CodeCommit

在本教學課程中,您會建立代表儲存庫的本機副本的 CodeCommit 存放庫,我們稱之為本機存放庫

創建本地存儲庫後,您對其進行了一些更改。然後,您將更改發送(推送)到 CodeCommit 存儲庫。

您還可以模擬一個團隊環境,其中兩個用戶將更改獨立提交到其本地存儲庫,並將這些更改推送到 CodeCommit 存儲庫。然後,用戶將更改從 CodeCommit 存儲庫中提取到自己的本地存儲庫,以查看其他用戶所做的更改。

您還可以創建分支和標籤,並管理 CodeCommit 存儲庫中的某些訪問權限。

完成此教學課程後,您對核心 Git 和 CodeCommit 概念應該就具備足夠的實務,即可將這些實務運用到您自己的專案中。

完成先決條件和設定,包括:

  • 將許可指派給 IAM 使用者。

  • 設定 CodeCommit 為使用 HTTPS、SSH 或連線到存放庫git-remote-codecommit。如需這些選擇的詳細資訊,請參閱設定 AWS CodeCommit

  • 如果您想要使用命令列或終端機執行所有操作 (包括建立儲存庫),請設定 AWS CLI。

步驟 1:建立 CodeCommit 儲存庫

在此步驟中,您可以使用 CodeCommit 主控台來建立存放庫。

如果您已經有要使用的 CodeCommit 儲存庫,則可以略過此步驟。

注意

根據您的使用情況,您可能需要支付建立或存取存放庫的費用。如需詳細資訊,請參閱 CodeCommit 產品資訊頁面上的定價

若要建立存 CodeCommit 放庫
  1. 開啟主 CodeCommit 控台,網址為 https://console.aws.amazon.com/codesuite/codecommit/home

  2. 使用區域選擇器來選擇您AWS 區域要建立儲存庫的位置。如需詳細資訊,請參閱區域和 Git 連線端點

  3. 請在 Repositories (儲存庫) 頁面上,選擇 Create repository (建立儲存庫)。

  4. Create repository (建立儲存庫) 頁面的 Repository name (儲存庫名稱) 中,輸入儲存庫的名稱 (例如 MyDemoRepo)。

    注意

    儲存庫名稱需區分大小寫且不能超過 100 個字元。如需詳細資訊,請參閱限制

  5. (選用) 在 Description (描述) 中,輸入描述 (例如,My demonstration repository)。這可協助您和其他使用者識別儲存庫的用途。

  6. (選用) 選擇 Add tag (新增標籤),以新增一或多個儲存庫標籤 (自訂屬性標籤,可協助您整理和管理您的 AWS 資源) 到您的儲存庫。如需詳細資訊,請參閱在 中標記儲存庫 AWS CodeCommit

  7. (選擇性) 展開其他組態以指定是使用預設金鑰AWS 受管金鑰還是您自己的客戶管理金鑰來加密和解密此儲存庫中的資料。如果您選擇使用自己的客戶管理金鑰,則必須確定該金鑰可在您建立儲存庫的AWS 區域位置使用,且金鑰處於作用中狀態。如需詳細資訊,請參閱AWS Key Management Service和AWS CodeCommit存儲庫的加密

  8. (選擇性) 如果此儲存庫將包含 Java 或 Python 程式碼,且您想要讓 CodeGuru 審核者分析該程式碼,請選取啟用 Java 和 Python 的 Amazon CodeGuru 審核者。 CodeGuru Reviewer 使用多個機器學習模型來尋找程式碼瑕疵,並在提取要求中自動建議改進和修正。如需詳細資訊,請參閱 Amazon CodeGuru 審核者使用者指南。

  9. 選擇建立

注意

本教學課程中的其餘步驟用MyDemoRepo於 CodeCommit 存放庫的名稱。如果您選擇不同名稱,請在此教學課程中都使用此名稱。

如需有關建立儲存庫的詳細資訊,包括如何從終端機或命令列建立儲存庫,請參閱建立 儲存庫

步驟 2:建立本機存放庫

在此步驟中,您要在本機電腦上設定本機儲存庫,以連接至您的儲存庫。若要這樣做,請在本機電腦上選取可代表本機儲存庫的目錄。您可以使用 Git 克隆和初始化該目錄內空 CodeCommit 存儲庫的副本。然後,您可以指定用於註釋提交的 Git 用戶名和電子郵件地址。

  1. 開啟主 CodeCommit 控台,網址為 https://console.aws.amazon.com/codesuite/codecommit/home

  2. 在區域選取器中,選擇建立儲存庫的AWS 區域位置。儲存庫特定於AWS 區域. 如需詳細資訊,請參閱區域和 Git 連線端點

  3. 尋找您要從清單連接的儲存庫並加以選擇。選擇 Clone URL (複製 URL),然後選擇複製和連線至儲存庫時要使用的通訊協定。這會將複製 URL 複製。

    • 如果您要搭配 IAM 使用者使用 Git 登入資料,或是AWS CLI.

    • 如果您是在本機電腦上使用 git-remote-codecommit 命令,請複製 HTTPS (GRC) URL。

    • 如果您將 SSH 公開/私密 key pair 與 IAM 使用者搭配使用,請複製 SSH URL。

    注意

    如果您看到「歡迎」頁面而非儲存庫清單,表示您登入的AWS 區域地方沒有與您的AWS帳戶相關聯的儲存庫。要建立儲存庫,請參閱 建立 AWS CodeCommit 儲存庫 或依照 開始使用 Git 和 CodeCommit 教學課程中的步驟。

  4. (選擇性) 我們建議您將本機 Git 用戶端設定main為使用做為儲存庫預設分支的名稱。這是本指南中所有範例中用於預設分支的名稱。如果您在控制台中進行第一次提交,它也與默認分支名稱 CodeCommit 相同。執行下列命令,為您的系統全域設定預設分支名稱:

    git config --global init.defaultBranch main

    如果您希望為所有儲存庫使用不同的預設分支名稱,請以您偏好main的名稱取代。本教學課程假設您的預設分支名為 main

    如果您想為不同的存儲庫使用不同的默認分支名稱,則可以在本地設置此屬性(--local)而不是全局(--global)。

  5. 在終端機或命令提示字元中,使用git clone指令複製儲存庫,並提供您在步驟 3 中複製的複製 URL。您的複製 URL 取決於您使用的通訊協定和組態。例如,如果您使用 HTTPS 搭配 Git 認證來複製位於美國東部 (俄亥俄) 區域的儲存庫:MyDemoRepo

    git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

    如果您是使用 HTTPS 搭配 git-remote-codecommit

    git clone codecommit://MyDemoRepo my-demo-repo

    如果您是使用 SSH:

    git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
    注意

    如果您在嘗試複製儲存庫時出現錯誤,您可能尚未完成本機電腦所需的設定作業。如需詳細資訊,請參閱設定 AWS CodeCommit

步驟 3:創建您的第一個提交

在此步驟中,您將在本地存儲庫中創建第一次提交。為此,您可以在本地存儲庫中創建兩個示例文件。您可以使用 Git 將更改暫存到,然後將更改提交到本地存儲庫。

  1. 使用文字編輯器,在您目錄中建立以下兩個範例文字檔案。將檔案命名為 cat.txtdog.txt

    cat.txt ------- The domestic cat (Felis catus or Felis silvestris catus) is a small, usually furry, domesticated, and carnivorous mammal.

    dog.txt ------- The domestic dog (Canis lupus familiaris) is a canid that is known as man's best friend.
  2. 運行git config以將佔your-user-name位符表示的用戶名和電子郵件地址添加your-email-address到您的本地存儲庫中。這可讓您更輕鬆地識別您所做的遞交:

    git config --local user.name "your-user-name" git config --local user.email your-email-address
  3. 如果您在建立本機存放庫時並未全域設定預設分支名稱,請執行下列指令,將預設分支名稱設定為main

    git config --local init.defaultBranch main
  4. 執行 git add 來暫存變更:

    git add cat.txt dog.txt
  5. 執行 git commit 來遞交變更:

    git commit -m "Added cat.txt and dog.txt"
    提示

    若要查看您剛完成之遞交的詳細資訊,請執行 git log

步驟 4:推送您的第一次提交

在此步驟中,您將提交從本地存儲庫推送到 CodeCommit 存儲庫中。

運行git push以通過 Git 用於 CodeCommit 存儲庫的默認遠程名稱(origin)從本地 repo(main)中的默認分支推送提交:

git push -u origin main
提示

將檔案推送到 CodeCommit 儲存庫之後,您可以使用主 CodeCommit 控台來檢視內容。如需詳細資訊,請參閱瀏覽存儲庫中的文件

第 5 步:共享 CodeCommit 存儲庫並推送並提取另一個提交

在此步驟中,您會與其他團隊成員共用有關 CodeCommit 存放庫的資訊。專案團隊成員會使用此資訊取得本機副本、對其進行一些變更,然後將修改的本機副本推送至您的 CodeCommit 存放庫。然後,您將更改從 CodeCommit 存儲庫中提取到本地回購。

在此教學課程中,您模擬該同事使用者,在您於步驟 2 建立的目錄以外,讓 Git 再建立另一個目錄。(通常,此目錄位於不同的機器上)。這個新目錄是 CodeCommit 存放庫的副本。您對現有目錄或這個新目錄所做的任何變更彼此無關。識別這些目錄更改的唯一方法是從 CodeCommit 存儲庫中提取。

即使這些目錄在相同的本機機器上,我們仍分別將現有目錄稱為本機儲存庫,而將新目錄稱為共用儲存庫

從新目錄中,您會取得 CodeCommit 儲存庫的單獨副本。然後添加一個新的示例文件,將更改提交到共享存儲庫,然後將提交從共享存儲庫推送到您的 CodeCommit 存儲庫。

最後,您將更改從存儲庫拉到本地存儲庫,然後瀏覽它以查看其他用戶提交的更改。

  1. 切換到 /tmp 目錄或 c:\temp 目錄。

  2. 執行 git clone,將儲存庫的副本提取到共用儲存庫:

    針對 HTTPS:

    git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo shared-demo-repo

    針對搭配 git-remote-codecommit 的 HTTPS:

    git clone codecommit://MyDemoRepo shared-demo-repo

    針對 SSH:

    git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo shared-demo-repo
    注意

    當您在 Windows 作業系統上使用 SSH 複製儲存庫時,您可能需要將 SSH 金鑰 ID 新增到連線字串,如下所示:

    git clone ssh://Your-SSH-Key-ID@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

    如需詳細資訊,請參閱適用於 Windows 上的 SSH 連線

    在此命令中,MyDemoRepo是存 CodeCommit 放庫的名稱。 shared-demo-repo是 Git 在目錄或目錄中建立的/tmp目錄名稱。c:\temp在 Git 建立目錄之後,Git 將儲存庫的副本提取到 shared-demo-repo 目錄。

  3. 切換到 shared-demo-repo 目錄:

    (For Linux, macOS, or Unix) cd /tmp/shared-demo-repo (For Windows) cd c:\temp\shared-demo-repo
  4. 執行git config以新增由預留位置和表示的其他使用者名稱other-user-nameother-email-address電子郵件地址。這可讓您更輕鬆地識別其他使用者所做的遞交:

    git config --local user.name "other-user-name" git config --local user.email other-email-address
  5. 使用文字編輯器,在 shared-demo-repo 目錄中建立以下範例文字檔案。將檔案命名為 horse.txt

    horse.txt ------- The horse (Equus ferus caballus) is one of two extant subspecies of Equus ferus.
  6. 執行 git add,將變更暫存到共用儲存庫:

    git add horse.txt
  7. 執行 git commit,將變更遞交到共用儲存庫:

    git commit -m "Added horse.txt"
  8. 運行git push以通過 Git 用於存儲庫的默認遠程名稱()從本地 CodeCommit repo(originmain)中的默認分支推送初始提交:

    git push -u origin main
  9. 切換到您的本地回購並運行git pull以拉入您的本地回購,將共享回購提交到 CodeCommit 存儲庫。然後執行 git log,以查看從共用儲存庫起始的遞交。

步驟 6:創建並共享分支

在此步驟中,您可以在本地存儲庫中創建一個分支,進行一些更改,然後將分支推送到您的 CodeCommit 存儲庫。然後,您將分支從 CodeCommit 存儲庫中拉到共享回購。

分支可讓您單獨開發不同版本的儲存庫內容 (例如,試用新的軟體功能,而不會影響團隊成員的工作)。當該功能穩定之後,便將分支合併到軟體中更穩定的分支。

您會使用 Git 建立分支,然後將分支指向您所做的第一個遞交。您可以使用 Git 將分支推送到 CodeCommit 存儲庫。然後切換到您的共享倉庫,並使用 Git 將新分支拉入共享的本地存儲庫並探索該分支。

  1. 從您的本地回購中運行git checkout,指定分支的名稱(例如,MyNewBranch)和您在本地回購中進行的第一次提交的 ID。

    如果您不知道遞交 ID,請執行 git log 以取得 ID。請確定遞交具有您的使用者名稱和電子郵件地址,而不是其他使用者的使用者名稱和電子郵件地址。這是為了模擬這main是一個穩定版本的 CodeCommit 存儲庫,並且該MyNewBranch分支適用於一些新的,相對不穩定的功能:

    git checkout -b MyNewBranch commit-ID
  2. 運行git push以將新分支從本地回購發送到 CodeCommit 存儲庫:

    git push origin MyNewBranch
  3. 現在,將分支提取到共用儲存庫並檢查結果:

    1. 切換到共用儲存庫目錄 (shared-demo-repo)。

    2. 提取新的分支 (git fetch origin)。

    3. 確認已提取分支 (git branch --all 會顯示儲存庫所有分支的清單)。

    4. 切換到新的分支 (git checkout MyNewBranch)。

    5. 確認您已執行 git statusgit branch 以切換到 MyNewBranch 分支。輸出顯示您所在的分支。在此案例中應該是 MyNewBranch

    6. 檢視分支中的遞交清單 (git log)。

    以下是需要呼叫的 Git 命令清單:

    git fetch origin git branch --all git checkout MyNewBranch git branch or git status git log
  4. 切換回 main 分支並檢視其遞交清單。Git 命令應如下所示:

    git checkout main git log
  5. 切換到本地存儲庫中的main分支。您可以執行 git statusgit branch。輸出顯示您所在的分支。在此案例中應該是 main。Git 命令應如下所示:

    git checkout main git branch or git status

步驟 7:建立並分享標籤

在此步驟中,您可以在本地回購中創建兩個標籤,將標籤與提交相關聯,然後將標籤推送到存 CodeCommit 儲庫中。然後,您將更改從 CodeCommit 存儲庫中提取到共享回購。

標籤用於讓遞交 (或分支,甚至是另一個標籤) 有一個人類可讀的名稱。例如,如果想要將遞交加上標籤 v2.1,就可以這樣做。遞交、分支或標籤可以擁有任何數量相關聯的標籤數目,但個別標籤只能與一個遞交、分支或標籤相關聯。在此教學課程中,您會將一個遞交加上 release 標籤,而將另一個遞交加上 beta 標籤。

您會使用 Git 建立標籤,並將 release 標籤指向您所做的第一個遞交,而將 beta 標籤指向另一個使用者所做的遞交。然後,您可以使用 Git 將標籤推送到 CodeCommit 儲存庫。然後你切換到你的共享倉庫,並使用 Git 將標籤拉到你的共享本地倉庫中,並探索這些標籤。

  1. 從您的本地回購中運行git tag,指定 new tag (release) 的名稱和您在本地回購中進行的第一次提交的 ID。

    如果您不知道遞交 ID,請執行 git log 以取得 ID。請確定遞交具有您的使用者名稱和電子郵件地址,而不是其他使用者的使用者名稱和電子郵件地址。這是為了模擬您的提交是 CodeCommit 存儲庫的穩定版本:

    git tag release commit-ID

    執行 git tag,將另一個使用者所做的遞交加上 beta 標籤。這是為了模擬遞交是一些較不穩定的新功能:

    git tag beta commit-ID
  2. 執行git push --tags以將標籤傳送至 CodeCommit 儲存庫。

  3. 現在,將標籤提取到共用儲存庫並檢查結果:

    1. 切換到共用儲存庫目錄 (shared-demo-repo)。

    2. 提取新的標籤 (git fetch origin)。

    3. 確認已提取標籤 (git tag 會顯示儲存庫的標籤清單)。

    4. 檢視每個標籤 (git log releasegit log beta) 的相關資訊。

    以下是需要呼叫的 Git 命令清單:

    git fetch origin git tag git log release git log beta
  4. 也可以在本地回購中嘗試這個:

    git log release git log beta

步驟 8:設定存取權限

在此步驟中,您授予使用者同步處理共用存放庫與 CodeCommit 存放庫的權限。此為選用步驟。建議對於有興趣了解如何在使用者使用 Git 認證或 SSH 金鑰配對與 IAM 使用者存取 CodeCommit 儲存庫時控制 CodeCommit 存放庫存取權的使用者。

注意

如果您使用聯合存取、臨時登入資料或網路身分供應商 (例如 IAM Identity Center),請為您的身分提供者設定使用者、存取權和許可,然後使用git-remote-codecommit。如需詳細資訊,請參閱 AWS CodeCommit 使用 HTTPS 將 Word 連線設定至 的步驟 git-remote-codecommit使用輪換憑證連線至 AWS CodeCommit 儲存庫

若要這麼做,您可以使用 IAM 主控台建立使用者,使用者預設沒有將共用存放庫與 CodeCommit 存放庫同步處理的權限。您可以執行 git pull 來驗證是否如此。如果新使用者沒有同步的許可,則命令不會有作用。然後返回 IAM 主控台並套用允許使用者使用的政策git pull。同樣地,您可以執行 git pull 來驗證是否如此。

此步驟的撰寫方式是假設您有權在 Amazon Web Services 帳戶中建立 IAM 使用者的權限。如果您沒有這些許可,則無法執行此步驟中的程序。直接跳到步驟 9:清除,以清除您用於此教學課程的資源。

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

    務必使用您在 設定 中使用的相同使用者名稱和密碼。

  2. 在導覽窗格中,選擇 Users (使用者),然後選擇 Create New Users (建立新使用者)

  3. 在第一個 Enter User Names (輸入使用者名稱) 方塊中,輸入範例使用者名稱 (例如,JaneDoe-CodeCommit)。選取 Generate an access key for each user (為每位使用者產生存取金鑰) 方塊,然後選擇 Create (建立)

  4. 選擇 Show User Security Credentials (顯示使用者安全登入資料)。記下存取金鑰 ID 和私密存取金鑰,或選擇 Download Credentials (下載登入資料)

  5. 按照中適用於使用 Git 認證的 HTTPS 使用者的說明產生並提供 IAM 使用者的登入資料。

    如果您想要使用 SSH,請按照 安全殼層和 Linux、macOS 或 Unix:設定 Git 和私密金鑰CodeCommit步驟 3:設定 Git 和 CodeCommit 的公有和私有金鑰中的指示,以公有和私有金鑰設定使用者。

  6. 執行 git pull。應該會出現以下錯誤:

    針對 HTTPS:

    fatal: unable to access 'https://git-codecommit.us-east-2.amazonaws.com/v1/repos/repository-name/': The requested URL returned error: 403.

    針對 SSH:

    fatal: unable to access 'ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/repository-name/': The requested URL returned error: 403.

    出現錯誤是因為新用戶沒有將共享存儲庫與 CodeCommit 存儲庫同步的權限。

  7. 返回 IAM 主控台。在導覽窗格中,選擇 Policies (政策),然後選擇 Create Policy (建立政策)。(出現 Get Started (開始使用) 按鈕時先選擇它,然後選擇 Create Policy (建立政策)。)

  8. 建立您自己的政策旁邊,選擇選取

  9. Policy Name (政策名稱) 方塊中,輸入名稱 (例如,CodeCommitAccess-GettingStarted)。

  10. 在「政策文件」方塊中輸入以下內容,讓 IAM 使用者從與 IAM 使用者關聯的任何儲存庫中提取:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" } ] }

    提示

    如果您希望 IAM 使用者能夠將提交推送到與 IAM 使用者相關聯的任何儲存庫,請改為輸入:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource": "*" } ] }

    如需可授與使用者的其他 CodeCommit 動作和資源權限的相關資訊,請參閱AWS CodeCommit的身分驗證與存取控制

  11. 在導覽窗格中,選擇使用者

  12. 選擇您要連接政策的範例使用者名稱 (例如,JaneDoe-CodeCommit)。

  13. 選擇 Permissions (許可) 索引標籤標籤。

  14. Managed Policies (受管政策) 中,選擇 Attach Policy (連接政策)

  15. 選取您剛建立的 CodeCommitAccess-GettingStarted 政策,然後選擇 Attach Policy (連接政策)

  16. 執行 git pull。這一次,命令應該有作用,也應該會出現 Already up-to-date 訊息。

  17. 如果您是使用 HTTPS,請切換到您的原始 Git 登入資料,或者如果您是使用 git-remote-codecommit,則請使用您平常使用的描述檔。如需詳細資訊,請參閱使用 Git 認證的 HTTPS 使用者進行設定AWS CodeCommit 使用 HTTPS 將 Word 連線設定至 的步驟 git-remote-codecommit中的指示。

    如果是使用 SSH,請切換到您的原始金鑰。如需詳細資訊,請參閱 安全殼層和 Linux、macOS 或 Unix:設定 Git 和私密金鑰CodeCommit步驟 3:設定 Git 和 CodeCommit 的公有和私有金鑰

您已來到此教學的最後部分。

步驟 9:清除

在此步驟中,您會刪除您在本教學課程中使用的存 CodeCommit 放庫,這樣就不會繼續支付儲存空間的費用。

您還可以刪除本地計算機上的本地存儲庫和共享回購,因為刪除 CodeCommit 存儲庫後不需要它們。

重要

刪除此存儲庫後,您將無法將其克隆到任何本地回購或共享存儲庫。您也將無法從任何本地回購或共享回購中提取數據或將數據推送到它。這個操作無法復原。

若要刪除存 CodeCommit 放庫 (主控台)

  1. 請在以下位置開啟 CodeCommit 主控台。 https://console.aws.amazon.com/codesuite/codecommit/home

  2. Dashboard (儀表板) 頁面的儲存庫清單中,選擇 MyDemoRepo

  3. 在導覽窗格中,選擇設定

  4. Settings (設定) 頁面的 Delete repository (刪除儲存庫) 中,選擇 Delete repository (刪除儲存庫)

  5. Type the name of the repository to confirm deletion (輸入儲存庫名稱以確認刪除) 旁的方塊中,輸入 MyDemoRepo,然後選擇 Delete (刪除)

若要刪除 CodeCommit 存放庫 (AWS CLI)

運行刪除存儲庫命令:

aws codecommit delete-repository --repository-name MyDemoRepo

刪除本地回購和共享回購

若為 Linux、macOS 或 Unix:

cd /tmp rm -rf /tmp/my-demo-repo rm -rf /tmp/shared-demo-repo

針對 Windows:

cd c:\temp rd /s /q c:\temp\my-demo-repo rd /s /q c:\temp\shared-demo-repo