View a markdown version of this page

Führe einen Pull-Request in einem zusammen AWS CodeCommit Repository - AWS CodeCommit

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Führe einen Pull-Request in einem zusammen AWS CodeCommit Repository

Nachdem der Code geprüft wurde und alle Genehmigungsregeln (falls vorhanden) für die Pull-Anforderung erfüllt wurden, können Sie eine Pull-Anforderung auf verschiedene Arten zusammenführen:

  • In der Konsole können Sie den Quell-Branch mit einer der verfügbaren Merge-Strategien mit dem Ziel-Branch zusammenführen, wodurch auch die Pull-Anforderung geschlossen wird. Sie können Zusammenführungskonflikte auch in der Konsole lösen. Die Konsole zeigt eine Meldung an, die angibt, ob die Pull-Anforderung zusammengeführt werden kann oder Konflikte gelöst werden müssen. Wenn alle Konflikte gelöst sind und du Merge auswählst, wird die Zusammenführung mit der Merge-Strategie durchgeführt, die du gewählt hast. Fast-forward ist die Standard-Merge-Strategie, die die Standardoption für Git ist. Je nach dem Status des Codes in den Quell- und Ziel-Branches ist diese Strategie möglicherweise nicht verfügbar, dafür aber andere Optionen, wie z. B. Squashmerge oder 3-Wege-Merge.

  • Du kannst die verwenden AWS CLI , um den Pull-Request mithilfe der Fast-Forward-, Squash- oder 3-Way-Merge-Strategie zusammenzuführen und zu schließen.

  • Verwenden Sie auf Ihrem lokalen Computer den Befehl git merge, um den Quell-Branch mit dem Ziel-Branch zusammenzuführen, und übertragen Sie dann den zusammengeführten Code an den Ziel-Branch. Dieser Herangehensweise hat Nachteile, die Sie berücksichtigen müssen. Die Pull-Anforderung wird unabhängig davon zusammengeführt, ob die Anforderungen der Genehmigungsregeln für die Pull-Anforderung erfüllt wurden – diese Kontrollen werden umgangen. Durch das Zusammenführen und Pushen des Ziel-Branches wird die Pull-Anforderung auch automatisch geschlossen, wenn die Pull-Anforderung mithilfe der Merge-Strategie mit Vorlauf zusammengeführt wird. Ein Vorteil dieses Ansatzes besteht darin, dass Sie mit dem git merge Befehl Merge-Optionen oder -Strategien auswählen können, die in der Konsole nicht verfügbar sind. CodeCommit Weitere Informationen zu git merge und den Mergeoptionen finden Sie unter git-merge oder in Ihrer Git-Dokumentation.

CodeCommit schließt einen Pull Request automatisch, wenn entweder der Quell- oder der Ziel-Branch des Pull-Requests gelöscht wird.

Führe einen Pull Request zusammen (Konsole)

Du kannst die CodeCommit Konsole verwenden, um einen Pull Request in einem CodeCommit Repository zusammenzuführen. Nachdem der Status einer Pull-Anforderung in Merged (Zusammengeführt) geändert wurde, wird sie nicht mehr in der Liste offener Pull-Anforderungen angezeigt. Eine zusammengeführte Pull-Anforderung wird als geschlossen kategorisiert. Ihr Status kann nicht wieder in Open (Geöffnet) geändert werden, aber Benutzer können die Änderungen weiterhin kommentieren und auf Kommentare antworten. Nachdem eine Pull-Anforderung zusammengeführt oder geschlossen wurde, können Sie sie nicht mehr genehmigen, eine erteilte Genehmigung für sie widerrufen oder die Genehmigungsregeln außer Kraft setzen, die der Pull-Anforderung zugewiesen wurden.

  1. Öffnen Sie die CodeCommit Konsole unter https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Wählen Sie im Bereich Repositories (Repositorys) den Namen des Repositorys aus.

  3. Wählen Sie im Navigationsbereich Pull requests (Pull-Anforderungen) aus.

  4. Standardmäßig wird eine Liste aller offenen Pull-Anforderungen angezeigt. Wählen Sie die offene Pull-Anforderung aus, die Sie zusammenführen möchten.

  5. Wählen Sie in der Pull-Anforderung die Option Approvals (Genehmigungen). Verifizieren Sie anhand der Liste der Genehmiger, dass die Bedingungen aller Genehmigungsregeln (falls vorhanden) erfüllt wurden. Sie können eine Pull-Anforderung nicht zusammenführen, wenn einzelne oder mehrere Genehmigungsregeln den Status Rule not satisfied (Regel nicht erfüllt) haben. Wenn kein Benutzer die Pull-Anforderung genehmigt hat, müssen Sie abwägen, ob sie zusammengeführt werden soll oder ob Sie auf Genehmigungen warten möchten.

    Anmerkung

    Wenn eine Genehmigungsregel für eine Pull-Anforderung erstellt wurde, können Sie sie bearbeiten oder löschen, um die Blockierung der Zusammenführung aufzuheben. Wenn die Genehmigungsregel mit einer Genehmigungsregelvorlage erstellt wurde, können Sie sie nicht bearbeiten oder löschen. Sie können sich nur entscheiden, die Anforderungen außer Kraft zu setzen. Weitere Informationen finden Sie unter Genehmigungsregeln für eine Pull-Anfrage überschreiben.

    Eine Pull-Anforderung mit einer Genehmigungsregel, deren Bedingungen nicht erfüllt wurden, und mit einer leeren Genehmigerliste
  6. Wählen Sie Merge (Zusammenführen).

  7. Wählen Sie in der Pull-Anforderung zwischen den verfügbaren Mergestrategien. Merge-Strategien, die nicht angewendet werden können, werden abgedunkelt dargestellt. Wenn keine Merge-Strategien verfügbar sind, kannst du wählen, ob du Konflikte in der CodeCommit Konsole manuell lösen möchtest, oder du kannst sie lokal mit deinem Git-Client lösen. Weitere Informationen finden Sie unter Konflikte in einer Pull-Anfrage in einem AWS CodeCommit Repository lösen.

    Ein Pull-Request, der die für die Zusammenführung in der CodeCommit Konsole verfügbaren Merge-Strategien anzeigt.
    • Bei einer Fast-Forward-Zusammenführung wird die Referenz für den Ziel-Branch zum letzten Commit des Quell-Branches weitergeleitet. Dies ist, wenn möglich, das Standardverhalten von Git. Es wird kein Merge-Commit erstellt, aber der gesamte Commit-Verlauf aus dem Quell-Branch wird so beibehalten, als ob er im Ziel-Branch stattgefunden hätte. Fast-forward Zusammenführungen werden in der Commit-Visualizer-Ansicht des Verlaufs des Ziel-Branches nicht als Branch-Merge angezeigt, da kein Merge-Commit erstellt wird. Die Spitze des Quell-Branches wird per Vorlauf an die Spitze des Ziel-Branches weitergeleitet.

    • Bei einem Squash-Merge wird ein Commit mit den Änderungen im Quell-Branch erstellt und weist diesen einzelnen Squash-Commit dem Ziel-Branch zu. Standardmäßig enthält die Commit-Nachricht für diesen Squash-Commit alle Commit-Nachrichten der Änderungen im Quell-Branch. Es wird kein einzelner Commit-Verlauf der Branch-Änderungen beibehalten. Dadurch lässt sich der Repository-Verlauf vereinfachen, während gleichzeitig eine grafische Darstellung der Zusammenführung in der Commit Visualizer-Ansicht der Ziel-Branch-Verlaufs beibehalten wird.

    • Bei einer dreiseitigen Zusammenführung wird ein Merge-Commit für die Zusammenführung im Ziel-Branch erstellt, aber auch die einzelnen Commits, die im Quell-Branch vorgenommen wurden, werden als Teil des Verlaufs des Ziel-Branches beibehalten. Dies kann dazu beitragen, einen vollständigen Verlauf der Änderungen an deinem Repository zu verwalten.

  8. Wenn Sie als Strategie den Squash-Merge oder den Dreiwege-Merge wählen, überprüfen Sie die automatisch generierte Commit-Nachricht und ändern Sie sie, wenn Sie die Informationen ändern möchten. Fügen Sie den Namen und die E-Mail-Adresse für den Commit-Verlauf hinzu.

  9. (Optional) Deaktivieren Sie die Option, um den Quell-Branch im Rahmen der Zusammenführung zu löschen. Standardmäßig wird der Quell-Branch gelöscht, wenn eine Pull-Anforderung zusammengeführt wird.

  10. Wählen Sie Merge pull request (Pull-Anforderung zusammenführen) um die Zusammenführung abzuschließen.

Führe einen Pull-Request zusammen (AWS CLI)

Um AWS CLI Befehle mit zu verwenden CodeCommit, installieren Sie den AWS CLI. Weitere Informationen finden Sie unter Befehlszeilenreferenz.

Um das zu verwenden AWS CLI , um Pull Requests in einem CodeCommit Repository zusammenzuführen

  1. Um auszuwerten, ob eine Pull-Anforderung alle Genehmigungsregeln erfüllt und zusammengeführt werden kann, führen Sie den Befehl evaluate-pull-request-approval-rules aus, indem Sie Folgendes angeben:

    • ID der Pull-Anforderung (mit der Option --pull-request-id).

    • Revisions-ID der Pull-Anforderung (mit --revision-id option)). Sie können die aktuelle Revisions-ID für eine Pull-Anforderung mit dem Befehl get-pull-request abrufen.

    Um beispielsweise den Status der Genehmigungsregeln für einen Pull Request mit einer ID von 27 und einer Revisions-ID von auszuwerten9f29d167EXAMPLE:

    aws codecommit evaluate-pull-request-approval-rules --pull-request-id 27 --revision-id 9f29d167EXAMPLE

    Ist der Befehl erfolgreich, wird eine Ausgabe zurückgegeben, die der folgenden ähnelt:

    { "evaluation": { "approved": false, "approvalRulesNotSatisfied": [ "Require two approved approvers" ], "overridden": false, "approvalRulesSatisfied": [] } }
    Anmerkung

    Diese Ausgabe gibt an, dass ein Pull Request nicht zusammengeführt werden kann, weil die Anforderungen einer Genehmigungsregel nicht erfüllt wurden. Damit diese Pull-Anforderung zusammengeführt werden kann, können Sie voraussetzen, dass Genehmiger sie genehmigen und so die Bedingungen der Regel erfüllen. Abhängig von Ihren Berechtigungen und der Art der Regelerstellung können Sie die Regel möglicherweise auch bearbeiten, überschreiben oder löschen. Weitere Informationen finden Sie unter Überprüfen einer Pull-Anforderung, Genehmigungsregeln für eine Pull-Anfrage überschreiben und Genehmigungsregel für einen Pull Request bearbeiten oder löschen.

  2. Um eine Pull-Anforderung mittels der Mergestrategie mit Vorlauf zusammenzuführen und zu schließen, führen Sie den Befehl merge-pull-request-by-fast-forwardaus, wobei Sie Folgendes angeben:

    • ID der Pull-Anforderung (mit der Option --pull-request-id).

    • Die vollständige Commit-ID des obersten Commits des Quell-Branches (mit der Option --source-commit-id).

    • Der Name des Repositorys (mit der Option --repository-name).

    Zum Beispiel, um einen Pull Request mit der ID von 47 und einer Quell-Commit-ID von 99132ab0EXAMPLE in einem Repository mit dem Namen zusammenzuführen und zu schließen: MyDemoRepo

    aws codecommit merge-pull-request-by-fast-forward --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo

    Ist der Befehl erfolgreich, wird eine Ausgabe zurückgegeben, die der folgenden ähnelt:

    { "pullRequest": { "approvalRules": [ { "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 1,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "approvalRuleId": "dd8b17fe-EXAMPLE", "approvalRuleName": "I want one approver for this pull request", "creationDate": 1571356106.936, "lastModifiedDate": 571356106.936, "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major", "ruleContentSha256": "4711b576EXAMPLE" } ], "authorArn": "arn:aws:iam::123456789012:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.142, "description": "Review the latest changes and updates to the global variables", "lastActivityDate": 1508887223.155, "pullRequestId": "47", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/main", "mergeMetadata": { "isMerged": true, "mergedBy": "arn:aws:iam::123456789012:user/Mary_Major" }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables" } }
  3. Um eine Pull-Anforderung mittels der Squashmerge-Strategie zusammenzuführen und zu schließen, führen Sie den Befehl merge-pull-request-by-squashaus, wobei Sie Folgendes angeben:

    • ID der Pull-Anforderung (mit der Option --pull-request-id).

    • Die vollständige Commit-ID des obersten Commits des Quell-Branches (mit der Option --source-commit-id).

    • Der Name des Repositorys (mit der Option --repository-name).

    • Die Konflikt-Detailgenauigkeit, die Sie verwenden möchten (mit der Option --conflict-detail-level). Wenn dieser Parameter nicht angegeben wird, wird der Standardwert FILE_LEVEL verwendet.

    • Die Konfliktlösungsstrategie, die Sie verwenden möchten (mit der Option --conflict-resolution-strategy). Wenn dieser Parameter nicht angegeben wird, gilt der Standardwert NONE, und Konflikte müssen manuell behoben werden.

    • Die einzuschließende Commit-Nachricht (mit der Option --commit-message).

    • Der für den Commit zu verwendende Name (mit der Option --author-name).

    • Die für den Commit zu verwendende E-Mail-Adresse (mit der Option --email).

    • Angabe, ob leere Ordner beibehalten werden sollen (mit der Option --keep-empty-folders).

    Im folgenden Beispiel wird ein Pull Request mit der ID von 47 und einer Quell-Commit-ID von 99132ab0EXAMPLE in einem Repository mit dem Namen MyDemoRepo zusammengeführt und geschlossen. Es verwendet das Konfliktdetail LINE_LEVEL und die Konfliktlösungsstrategie ACCEPT_SOURCE:

    aws codecommit merge-pull-request-by-squash --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo --conflict-detail-level LINE_LEVEL --conflict-resolution-strategy ACCEPT_SOURCE --author-name "Jorge Souza" --email "jorge_souza@example.com" --commit-message "Merging pull request 47 by squash and accepting source in merge conflicts"

    Ist der Befehl erfolgreich, erstellt er die gleiche Art von Ausgabe wie ein Merge mit Vorlauf, vergleichbar mit der folgenden Ausgabe:

    { "pullRequest": { "approvalRules": [ { "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "approvalRuleId": "dd8b17fe-EXAMPLE", "approvalRuleName": "2-approver-rule-for-main", "creationDate": 1571356106.936, "lastModifiedDate": 571356106.936, "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major", "originApprovalRuleTemplate": { "approvalRuleTemplateId": "dd8b17fe-EXAMPLE", "approvalRuleTemplateName": "2-approver-rule-for-main" }, "ruleContentSha256": "4711b576EXAMPLE" } ], "authorArn": "arn:aws:iam::123456789012:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.142, "description": "Review the latest changes and updates to the global variables", "lastActivityDate": 1508887223.155, "pullRequestId": "47", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/main", "mergeMetadata": { "isMerged": true, "mergedBy": "arn:aws:iam::123456789012:user/Mary_Major" }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables" } }
  4. Um eine Pull-Anforderung mittels der Dreiwege-Mergestrategie zusammenzuführen und zu schließen, führen Sie den Befehl merge-pull-request-by-three-way aus und geben Sie Folgendes an:

    • ID der Pull-Anforderung (mit der Option --pull-request-id).

    • Die vollständige Commit-ID des obersten Commits des Quell-Branches (mit der Option --source-commit-id).

    • Der Name des Repositorys (mit der Option --repository-name).

    • Die Konflikt-Detailgenauigkeit, die Sie verwenden möchten (mit der Option --conflict-detail-level). Wenn dieser Parameter nicht angegeben wird, wird der Standardwert FILE_LEVEL verwendet.

    • Die Konfliktlösungsstrategie, die Sie verwenden möchten (mit der Option --conflict-resolution-strategy). Wenn dieser Parameter nicht angegeben wird, gilt der Standardwert NONE, und Konflikte müssen manuell behoben werden.

    • Die einzuschließende Commit-Nachricht (mit der Option --commit-message).

    • Der für den Commit zu verwendende Name (mit der Option --author-name).

    • Die für den Commit zu verwendende E-Mail-Adresse (mit der Option --email).

    • Angabe, ob leere Ordner beibehalten werden sollen (mit der Option --keep-empty-folders).

    Im folgenden Beispiel wird ein Pull Request mit der ID von 47 und einer Quell-Commit-ID von 99132ab0EXAMPLE in einem Repository namens zusammengeführt und geschlossen. MyDemoRepo Es verwendet die Standardoptionen für Konfliktdetail und Konfliktlösungsstrategie:

    aws codecommit merge-pull-request-by-three-way --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo --author-name "Maria Garcia" --email "maria_garcia@example.com" --commit-message "Merging pull request 47 by three-way with default options"

    Ist der Befehl erfolgreich, erstellt er die gleiche Art von Ausgabe wie ein Merge mit Vorlauf, vergleichbar mit der folgenden Ausgabe:

    { "pullRequest": { "approvalRules": [ { "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}", "approvalRuleId": "dd8b17fe-EXAMPLE", "approvalRuleName": "2-approver-rule-for-main", "creationDate": 1571356106.936, "lastModifiedDate": 571356106.936, "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major", "originApprovalRuleTemplate": { "approvalRuleTemplateId": "dd8b17fe-EXAMPLE", "approvalRuleTemplateName": "2-approver-rule-for-main" }, "ruleContentSha256": "4711b576EXAMPLE" } ], "authorArn": "arn:aws:iam::123456789012:user/Li_Juan", "clientRequestToken": "", "creationDate": 1508530823.142, "description": "Review the latest changes and updates to the global variables", "lastActivityDate": 1508887223.155, "pullRequestId": "47", "pullRequestStatus": "CLOSED", "pullRequestTargets": [ { "destinationCommit": "9f31c968EXAMPLE", "destinationReference": "refs/heads/main", "mergeMetadata": { "isMerged": true, "mergedBy": "arn:aws:iam::123456789012:user/Mary_Major" }, "repositoryName": "MyDemoRepo", "sourceCommit": "99132ab0EXAMPLE", "sourceReference": "refs/heads/variables-branch" } ], "title": "Consolidation of global variables" } }