

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

# 什麼是 AWS CodeCommit？
<a name="welcome"></a>

AWS CodeCommit 是一種由 Amazon Web Services 託管的版本控制服務，可用來在雲端中私下存放和管理資產 （例如文件、原始程式碼和二進位檔案）。如需 CodeCommit 定價的資訊，請參閱 [定價。](https://aws.amazon.com/codecommit/pricing/)

**注意**  
CodeCommit 在許多合規計劃的範圍內。如需 AWS 和合規工作的詳細資訊，請參閱[AWS 合規計劃範圍內的服務](https://aws.amazon.com/compliance/services-in-scope/)。  
此為 HIPAA 合格服務。如需 1996 年 AWS美國健康保險流通與責任法案 (HIPAA) 以及使用 AWS 服務來處理、存放和傳輸受保護醫療資訊 (PHI) 的詳細資訊，請參閱 [HIPAA 概觀](https://aws.amazon.com/compliance/hipaa-compliance/)。  
如需有關此服務和 ISO 27001 (指定安全管理最佳實務的安全管理標準) 的資訊，請參閱 [ISO 27001 概觀](https://aws.amazon.com/compliance/iso-27001-faqs/)。  
如需有關此服務和支付卡產業資料安全標準 (PCI DSS) 的詳細資訊，請參閱 [PCI DSS 概觀](https://aws.amazon.com/compliance/pci-dss-level-1-faqs/)。  
如需此服務的詳細資訊，以及具體說明可保護敏感資訊密碼模組之安全請求的聯邦資訊處理標準 (FIPS) 第 140-2 號公報美國政府標準，請參閱[聯邦資訊處理標準 (FIPS) 140-2 概觀](https://aws.amazon.com/compliance/fips/)和[Git 連線端點](regions.md#regions-git)。

**Topics**
+ [CodeCommit 簡介](#welcome-introducing)
+ [CodeCommit、Git 並選擇符合您需求的 AWS 服務](#welcome-alternate-services)
+ [CodeCommit 如何運作？](#welcome-how-it-works)
+ [CodeCommit 與 Amazon S3 中的檔案版本控制有何不同？](#welcome-arc-vs-s3)
+ [如何開始使用 CodeCommit？](#welcome-get-started)
+ [我可以在哪裡進一步了解 Git？](#welcome-get-started-with-git)

## CodeCommit 簡介
<a name="welcome-introducing"></a>

CodeCommit 是一種安全、可擴展的受管來源控制服務，可託管私有 Git 儲存庫。CodeCommit 讓您無需管理自己的來源控制系統或擔心擴展其基礎設施。您可以使用 CodeCommit 來存放從程式碼到二進位檔的任何內容。它支援 Git 的標準功能，可以完美搭配以 Git 為基礎的現有工具一起運作。

使用 CodeCommit，您可以：
+ **受益於 託管的全受管服務 AWS**。CodeCommit 提供高可用性和耐用性，並消除管理自有硬體和軟體的管理開銷。無需佈建和擴充硬體，也無需安裝、設定和更新伺服器軟體。
+ **安全地存放您的程式碼**。CodeCommit 儲存庫會在靜態和傳輸中加密。
+ **協作處理程式碼。**CodeCommit 儲存庫支援提取請求，使用者可以在將程式碼變更合併到分支之前對彼此的程式碼變更進行檢閱和評論；自動將提取請求和評論相關電子郵件傳送給使用者的通知等等。
+ **輕鬆擴展您的版本控制專案**。CodeCommit 儲存庫可以向上擴展以符合您的開發需求。此服務可處理具有大量檔案或分支、大型檔案及冗長修訂歷史記錄的儲存庫。
+ **隨時儲存任何**內容。CodeCommit 對儲存庫的大小或您可以存放的檔案類型沒有限制。
+ **與其他 AWS 和第三方服務整合**。CodeCommit 讓您的儲存庫靠近您 AWS Cloud 中的其他生產資源，這有助於提高開發生命週期的速度和頻率。它與 IAM 整合，可與其他 AWS 服務搭配使用，並與其他儲存庫平行使用。如需詳細資訊，請參閱[與 的產品和服務整合 AWS CodeCommit](integrations.md)。
+ **輕鬆從其他遠端儲存庫遷移檔案**。您可以從任何 Git 型儲存庫遷移至 CodeCommit。
+ **使用您已知道的 Git 工具**。CodeCommit 支援 Git 命令及其自己的 AWS CLI 命令和 APIs。

## CodeCommit、Git 並選擇符合您需求的 AWS 服務
<a name="welcome-alternate-services"></a>

CodeCommit 是 Git 型服務，非常適合大多數版本控制需求。沒有檔案大小、檔案類型和儲存庫大小方面的任意限制。不過，Git 存在固有的侷限性，可能對某些操作種類的效能造成負面影響，特別是在經過一段時間之後。您可以避免將 CodeCommit 儲存庫效能的潛在降級，避免將其用於其他 AWS 服務更適合任務的使用案例。您也可以針對複雜儲存庫來最佳化 Git 的效能。以下是一些使用案例，其中 Git 和 CodeCommit 可能不是最適合您的解決方案，或者您可能需要採取其他步驟來最佳化 Git。


****  

| 使用案例 | Description | 可考慮的其他服務 | 
| --- | --- | --- | 
| 經常變更的大型檔案 | Git 使用 Delta 編碼來存放檔案版本之間的差異。例如，如果您變更文件中的幾個字詞，Git 只會存放這些變更過的字詞。如果您有超過 5 MB 的檔案或物件且具有許多變更，Git 可能需要重建大型的 Delta 差異鏈。隨著這些檔案隨著時間的推移而增長，這可能會在本機電腦和 CodeCommit 中耗用越來越多的運算資源。 | 若要版本大型檔案，請考慮使用 Amazon Simple Storage Service (Amazon S3)。如需詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》中的[使用版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)。 | 
| 資料庫 | Git 儲存庫會隨著時間增長。由於版本控制會追蹤所有變更，任何變更都會增加儲存庫的大小的。換言之，當您遞交資料，即使您刪除遞交中的資料，資料仍會新增到儲存庫。隨著時間需要處理和傳輸的資料越來越多，Git 就會變慢。這對資料庫的使用案例尤其不利。Git 並非專為資料庫而設計。 | 若要建立和使用無論大小皆具有一致效能的資料庫，請考慮使用 Amazon DynamoDB。如需詳細資訊，請參閱 [Amazon DynamoDB 入門指南](https://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/)。 | 
| 稽核線索 | 一般而言，稽核線索會保留很長一段時間，並由系統程序以非常頻繁的頻率連續產生。Git 的設計目的是為了安全地存放開發人員群組在開發週期產生的原始程式碼。不斷存放以編寫程式方式產生之系統變更的快速變化儲存庫，在一段時間後效能會下降。 | 若要存放稽核線索，請考慮使用 Amazon Simple Storage Service (Amazon S3)。若要稽核 AWS 活動，根據您的使用案例，請考慮使用 [AWS CloudTrail](https://aws.amazon.com/cloudtrail/)、 [AWS Config](https://aws.amazon.com/config/)或 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)。 | 
| 備份 | Git 的設計目的是為了對開發人員編寫的原始程式碼進行版本控制。您可以將[遞交推送到兩個遠端儲存庫](how-to-mirror-repo-pushes.md)，包括 CodeCommit 儲存庫，做為備份策略。不過，Git 不是專為處理電腦檔案系統、資料庫傾印或類似備份內容的備份而設計的。這樣做可能會降低系統速度，並提高複製和推送儲存庫所需的時間。 | 如需有關備份至 AWS 雲端的資訊，請參閱[備份與還原](https://aws.amazon.com/backup-restore/)。 | 
| 大量的分支或參考 | 當 Git 用戶端推送或提取儲存庫資料時，即使您只需要一個分支，遠端伺服器仍必須傳送所有分支和參考 (例如標籤)。如果您擁有數千個分支和參考，這可能需要一些時間來處理和傳送 (封包協議) 並造成明顯緩慢的儲存庫回應。您擁有越多分支和標籤，這個處理程序就需要越長的時間。建議使用 CodeCommit，但刪除不再需要的分支和標籤。 | 若要分析 CodeCommit 儲存庫中的參考數目，以判斷哪些可能不需要，您可以使用下列其中一個命令：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codecommit/latest/userguide/welcome.html) | 

## CodeCommit 如何運作？
<a name="welcome-how-it-works"></a>

 CodeCommit 熟悉 Git 型儲存庫的使用者，但即使是不熟悉的使用者也應該發現 CodeCommit 的轉換相對簡單。CodeCommit 提供主控台，讓您輕鬆建立儲存庫，以及現有儲存庫和分支的清單。在幾個簡單的步驟中，使用者可以找到有關儲存庫的資訊，並將其複製到他們的電腦，建立本機儲存庫，讓他們可以在其中進行變更，然後將它們推送到 CodeCommit 儲存庫。使用者可以在本機機器上從命令列工作，或使用以 GUI 為基礎的編輯器。

下圖顯示如何使用開發機器、 AWS CLI 或 CodeCommit 主控台，以及 CodeCommit 服務來建立和管理儲存庫：

![\[典型 CodeCommit 工作流程\]](http://docs.aws.amazon.com/zh_tw/codecommit/latest/userguide/images/arc-workflow.png)




1. 使用 AWS CLI 或 CodeCommit 主控台來建立 CodeCommit 儲存庫。

1. 從您的開發機器，使用 Git 執行 **git clone**，指定 CodeCommit 儲存庫的名稱。這會建立連線至 CodeCommit 儲存庫的本機儲存庫。

1. 使用開發機器上的本機儲存庫來修改 （新增、編輯和刪除） 檔案，然後執行 **git add**以在本機暫存修改的檔案。執行 **git commit**以在本機遞交檔案，然後執行 **git push**將檔案傳送至 CodeCommit 儲存庫。

1. 下載其他使用者所做的變更。執行 **git pull**以同步 CodeCommit 儲存庫中的檔案與本機儲存庫。這可確保您使用的是最新版本的檔案。

您可以使用 AWS CLI 或 CodeCommit 主控台來追蹤和管理儲存庫。

## CodeCommit 與 Amazon S3 中的檔案版本控制有何不同？
<a name="welcome-arc-vs-s3"></a>

CodeCommit 已針對團隊軟體開發進行最佳化。它會管理多個檔案之間的批次變更，這可能會與其他開發人員所做的變更並行發生。Amazon S3 版本控制支援復原過去版本的檔案，但不著重於軟體開發團隊所需的協作檔案追蹤功能。

## 如何開始使用 CodeCommit？
<a name="welcome-get-started"></a>

若要開始使用 CodeCommit：

1. 遵循[設定 ](setting-up.md)中的步驟來準備您的開發機器。

1. 遵循[開始使用](getting-started-topnode.md)中一或多個教學課程的步驟。

1. 在 CodeCommit 中[建立](how-to-create-repository.md)版本控制專案，或將版本控制專案[遷移](how-to-migrate-repository.md)至 CodeCommit。

## 我可以在哪裡進一步了解 Git？
<a name="welcome-get-started-with-git"></a>

如果您沒聽過 Git，請[了解如何使用 Git](how-to-basic-git.md)。以下是一些有用的資源：
+ [Pro Git](http://git-scm.com/book)，這是線上版本的 *Pro Git* 書籍。作者為 Scott Chacon。由 Apress 出版。
+ [Git Immersion](http://gitimmersion.com/)，這是自己動手做引導教學，帶您認識使用 Git 的基本知識。由 Neo Innovation, Inc. 出版。
+ [Git 參考](https://git-scm.com/docs)，這是線上快速參考，也可當做更深入的 Git 教學課程。由 GitHub 團隊發行。
+ [Git 速查表](https://github.com/github/training-kit/blob/master/downloads/github-git-cheat-sheet.md)，含 Git 命令基本語法。由 GitHub 團隊發行。
+ [Git 隨身指南](https://www.amazon.com/Git-Pocket-Guide-Richard-Silverman/dp/1449325866)。作者為 Richard E. Silverman。由 O'Reilly Media, Inc. 出版。