Lösen von Konflikten in einer Pull-Anforderung in einemAWS CodeCommitEndlager - AWS CodeCommit

AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Erfahren Sie mehr“

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.

Lösen von Konflikten in einer Pull-Anforderung in einemAWS CodeCommitEndlager

Wenn Ihre Pull-Anforderung Konflikte hat und nicht zusammengeführt werden kann, können Sie versuchen, die Konflikte auf eine von mehreren Arten zu lösen:

  • Auf Ihrem lokalen Computer können Sie mit dem Befehl git diff nach Konflikten zwischen den beiden Branches suchen und Änderungen vornehmen, um sie zu lösen. Sie können auch ein anderes Tool oder ein anderes Programm verwenden, um sie beim Suchen und Beheben von Unterschieden zu unterstützen. Sobald Sie diese zu Ihrer Zufriedenheit gelöst haben, können Sie die Änderungen mit den gelösten Konflikten via Push auf Ihren Quell-Branch übertragen, wodurch die Pull-Anforderung aktualisiert wird. Weitere Informationen über git diff und git difftool finden Sie in der Git-Dokumentation.

  • In der Konsole können Sie Resolve conflicts (Konflikte lösen) wählen. Daraufhin wird ein Texteditor geöffnet, der die Konflikte auf ähnliche Weise wie der Befehl git diff anzeigt. Sie können die Konflikte manuell in jeder Datei, in der sie enthalten sind, überprüfen, Änderungen vornehmen und die Pull-Anforderung dann mit Ihren Änderungen aktualisieren.

  • In der AWS CLI können Sie mithilfe der AWS CLI Informationen über Zusammenführungskonflikte abrufen und einen unreferenzierten Mergecommit zum Testen einer Zusammenführung erstellen.

Konflikte in einer Pull-Request (Konsole) lösen

Sie können die CodeCommit-Konsole zum Lösen von Konflikten in einer Pull-Anforderung in einem CodeCommit-Repository verwenden.

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

  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, die aber Konflikte enthält.

  5. Wählen Sie in der Pull-Anforderung Resolve conflicts (Konflikte lösen). Diese Option wird nur angezeigt, wenn Konflikte vorhanden sind, die behoben werden müssen, bevor die Pull-Anforderung zusammengeführt werden kann.

    Eine Pull-Anforderung, die Konflikte aufweist, muss korrigiert werden, bevor sie zusammengeführt werden kann.
  6. In dem nun geöffneten Konfliktlösungsfenster werden die einzelnen Dateien mit Konflikten aufgeführt, die behoben werden müssen. Wählen Sie die einzelnen Dateien in der Liste aus, um die Konflikte zu überprüfen. Nehmen Sie alle erforderlichen Änderungen vor, bis alle Konflikte behoben wurden.

    Die Konfliktlösung-Editor mit einer Datei mit Konflikten, die von Ihnen noch nicht behoben wurden.
    • Sie können wählen, ob Sie den Inhalt der Quelldatei oder der Zieldatei verwenden oder ob Sie bei einer anderen Datei als einer binären Datei ihren Inhalt manuell so bearbeiten möchten, dass sie nur die von Ihnen gewünschten Änderungen enthält. Standard-Git-Diff-Marker werden zum Aufzeigen der Konflikte zwischen den Ziel(HEAD)- und Quell-Branches in der Datei verwendet.

    • Wenn es sich bei der Datei um eine binäre Datei oder ein Git-Untermodul handelt oder wenn ein Konflikt bei den Datei-/Ordnernamen vorliegt, müssen Sie entscheiden, ob die Quelldatei oder die Zieldatei zum Lösen der Konflikte verwendet werden soll. Es können keine Binärdateien in der CodeCommit-Konsole angezeigt oder bearbeitet werden.

    • Wenn Dateimoduskonflikte vorliegen, können Sie die Option zum Lösen dieses Konfits anzeigen, indem Sie zwischen dem Dateimodus der Quelldatei und dem Dateimodus der Zieldatei wählen.

    • Wenn Sie Ihre Änderungen an einer Datei verwerfen und deren konfligierten Zustand wiederherstellen möchten, wählen Sie Reset file (Datei zurücksetzen). Dies ermöglicht Ihnen, die Konflikte auf andere Weise zu lösen.

  7. Wenn Sie mit Ihren Änderungen zufrieden sind, wählen Sie Update pull request (Pull-Anforderung aktualisieren).

    Anmerkung

    Sie müssen alle Konflikte in allen Dateien lösen, bevor Sie die Pull-Anforderung erfolgreich mit Ihren Änderungen aktualisieren können.

  8. Die Pull-Anforderung wird mit Ihren Änderungen aktualisiert und kann zusammengeführt werden. Sie sehen den Zusammenführung-Seite. Sie können bestimmen, dass die Pull-Anforderung zu diesem Zeitpunkt zusammengeführt werden soll, oder zur Liste der Pull-Anforderungen zurückkehren.

Lösen von Konflikten in einer Pull-Anforderung (AWS CLI)

Um zu verwendenAWS CLIBefehle mit CodeCommit, installieren Sie dasAWS CLIaus. Weitere Informationen finden Sie unter Befehlszeilenreferenz .

Kein einzelnerAWS CLI-Befehl befähigt Sie, Konflikte in einer Pull-Anforderung zu lösen und diese Anforderung zusammenzuführen. Sie können mit einzelnen Befehlen jedoch Konflikte aufdecken und versuchen, sie zu lösen, und testen, ob eine Pull-Anforderung zusammengeführt werden kann. Sie können Folgendes verwenden:

  • get-merge-options, um herauszufinden, welche Mergeoptionen für eine Zusammenführung zwischen zwei Commit-Spezifizierern verfügbar sind.

  • get-merge-conflicts, um eine Liste von Dateien mit Konflikten beim Zusammenführen zwischen zwei Commit-Spezifizierern abzurufen.

  • batch-describe-merge-conflicts, um Informationen über alle Zusammenführungskonflikte in Dateien in einer Zusammenführung zwischen zwei Commits mit einer bestimmten Strategie zu erhalten.

  • describe-merge-conflicts, um detaillierte Informationen über Zusammenführungskonflikte für eine bestimmte Datei zwischen zwei Commits mit einer bestimmten Strategie zu erhalten.

  • create-unreferenced-merge-commit, um das Ergebnis des Zusammenführens von zwei Commit-Spezifizierern mit einer bestimmten Strategie zu testen.

  1. Um herauszufinden, welche Mergeoptionen für eine Zusammenführung zwischen zwei Commit-Spezifizierern verfügbar sind, führen Sie den Befehl get-merge-options aus und geben Sie Folgendes an:

    • Einen Commit-Spezifizierer für die Quelle der Zusammenführung (mit der Option --source-commit-specifier).

    • Einen Commit-Spezifizierer für das Ziel der Zusammenführung (mit der Option --destination-commit-specifier).

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

    • (Optional) Eine Konfliktlösungstrategie, die verwendet werden soll (mit der Option --conflict-resolution-strategy).

    • (Optional) Die gewünschte Detailgenauigkeit aller Konflikte (mit der Option --conflict-detail-level).

    So bestimmen Sie beispielsweise die für die Zusammenführung eines Quell-Branch mit dem Namen verfügbaren Mergestrategienbugfix-1234mit einem Zielzweig namensHauptin einem Repository namensMyDemoRepo:

    aws codecommit get-merge-options --source-commit-specifier bugfix-1234 --destination-commit-specifier main --repository-name MyDemoRepo

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

    { "mergeOptions": [ "FAST_FORWARD_MERGE", "SQUASH_MERGE", "THREE_WAY_MERGE" ], "sourceCommitId": "d49940adEXAMPLE", "destinationCommitId": "86958e0aEXAMPLE", "baseCommitId": "86958e0aEXAMPLE" }
  2. Um eine Liste der Dateien mit Zusammenführungskonflikten in einer Zusammenführung zwischen zwei Commit-Spezifizierern zu erhalten, führen Sie den Befehl get-merge-conflicts aus und geben Sie Folgendes an:

    • Einen Commit-Spezifizierer für die Quelle der Zusammenführung (mit der Option --source-commit-specifier).

    • Einen Commit-Spezifizierer für das Ziel der Zusammenführung (mit der Option --destination-commit-specifier).

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

    • Die Zusammenführungsoption, die Sie verwenden möchten (mit der Option --merge-option).

    • (Optional) Die gewünschte Detailgenauigkeit aller Konflikte (mit der Option --conflict-detail-level).

    • (Optional) Eine Konfliktlösungstrategie, die verwendet werden soll (mit der Option --conflict-resolution-strategy).

    • (Optional) Die maximale Anzahl von Dateien mit Konflikten, die zurückgegeben werden soll (mit der Option --max-conflict-files).

    So erhalten Sie eine Liste von Dateien mit Konflikten in einer Zusammenführung zwischen einem Quell-Branch mit dem Namen feature-randomizationfeature und einem Ziel-Branch mit dem Namen main mittels der 3-Wege-Mergestrategie in einem Repository mit dem Namen MyDemoRepo:

    aws codecommit get-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier main --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo

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

    { "mergeable": false, "destinationCommitId": "86958e0aEXAMPLE", "sourceCommitId": "6ccd57fdEXAMPLE", "baseCommitId": "767b6958EXAMPLE", "conflictMetadataList": [ { "filePath": "readme.md", "fileSizes": { "source": 139, "destination": 230, "base": 85 }, "fileModes": { "source": "NORMAL", "destination": "NORMAL", "base": "NORMAL" }, "objectTypes": { "source": "FILE", "destination": "FILE", "base": "FILE" }, "numberOfConflicts": 1, "isBinaryFile": { "source": false, "destination": false, "base": false }, "contentConflict": true, "fileModeConflict": false, "objectTypeConflict": false, "mergeOperations": { "source": "M", "destination": "M" } } ] }
  3. Um Informationen über Zusammenführungskonflikte in allen Dateien und einem Teilsatz von Dateien in einer Zusammenführung zwischen zwei Commit-Spezifizierern zu erhalten, führen Sie den Befehl batch-describe-merge-conflicts aus und geben Sie Folgendes an:

    • Einen Commit-Spezifizierer für die Quelle der Zusammenführung (mit der Option --source-commit-specifier).

    • Einen Commit-Spezifizierer für das Ziel der Zusammenführung (mit der Option --destination-commit-specifier).

    • Die Zusammenführungsoption, die Sie verwenden möchten (mit der Option --merge-option).

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

    • (Optional) Eine Konfliktlösungstrategie, die verwendet werden soll (mit der Option --conflict-resolution-strategy).

    • (Optional) Die gewünschte Detailgenauigkeit aller Konflikte (mit der Option --conflict-detail-level).

    • (Optional) Die maximale Anzahl von Zusammenführungsstücken, die zurückgegeben werden soll (mit der Option --max-merge-hunks).

    • (Optional) Die maximale Anzahl von Dateien mit Konflikten, die zurückgegeben werden soll (mit der Option --max-conflict-files).

    • (Optional) Der Pfad der Ziel-Dateien, der zur Beschreibung der Konflikte verwendet werden soll (mit der Option --file-paths).

    So bestimmen Sie beispielsweise die Zusammenführungskonflikte für die Zusammenführung eines Quell-Branch mit dem NamenFunktion randomizationfeaturemit einem Zielzweig namensHauptVerwendung vonTHREE_WAY_MERGEStrategie in einem Repository namensMyDemoRepo:

    aws codecommit batch-describe-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier main --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo

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

    { "conflicts": [ { "conflictMetadata": { "filePath": "readme.md", "fileSizes": { "source": 139, "destination": 230, "base": 85 }, "fileModes": { "source": "NORMAL", "destination": "NORMAL", "base": "NORMAL" }, "objectTypes": { "source": "FILE", "destination": "FILE", "base": "FILE" }, "numberOfConflicts": 1, "isBinaryFile": { "source": false, "destination": false, "base": false }, "contentConflict": true, "fileModeConflict": false, "objectTypeConflict": false, "mergeOperations": { "source": "M", "destination": "M" } }, "mergeHunks": [ { "isConflict": true, "source": { "startLine": 0, "endLine": 3, "hunkContent": "VGhpcyBpEXAMPLE==" }, "destination": { "startLine": 0, "endLine": 1, "hunkContent": "VXNlIHRoEXAMPLE=" } } ] } ], "errors": [], "destinationCommitId": "86958e0aEXAMPLE", "sourceCommitId": "6ccd57fdEXAMPLE", "baseCommitId": "767b6958EXAMPLE" }
  4. Um detaillierte Informationen über Zusammenführungskonflikte für eine bestimmte Datei in einer Zusammenführung zwischen zwei Commit-Spezifizierern zu erhalten, führen Sie den Befehl describe-merge-conflicts aus und geben Sie Folgendes an:

    • Einen Commit-Spezifizierer für die Quelle der Zusammenführung (mit der Option --source-commit-specifier).

    • Einen Commit-Spezifizierer für das Ziel der Zusammenführung (mit der Option --destination-commit-specifier).

    • Die Zusammenführungsoption, die Sie verwenden möchten (mit der Option --merge-option).

    • Der Pfad der Zieldatei, die zur Beschreibung der Konflikte verwendet werden soll (mit der Option --file-path).

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

    • (Optional) Eine Konfliktlösungstrategie, die verwendet werden soll (mit der Option --conflict-resolution-strategy).

    • (Optional) Die gewünschte Detailgenauigkeit aller Konflikte (mit der Option --conflict-detail-level).

    • (Optional) Die maximale Anzahl von Zusammenführungsstücken, die zurückgegeben werden soll (mit der Option --max-merge-hunks).

    • (Optional) Die maximale Anzahl von Dateien mit Konflikten, die zurückgegeben werden soll (mit der Option --max-conflict-files).

    Um beispielsweise die Zusammenführungskonflikte für eine Datei mit dem Namen zu ermittelnreadme.mdin einem Quellzweig namensFunktion randomizationfeaturemit einem Zielzweig namensHauptVerwendung vonTHREE_WAY_MERGEStrategie in einem Repository namensMyDemoRepo:

    aws codecommit describe-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier main --merge-option THREE_WAY_MERGE --file-path readme.md --repository-name MyDemoRepo

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

    { "conflictMetadata": { "filePath": "readme.md", "fileSizes": { "source": 139, "destination": 230, "base": 85 }, "fileModes": { "source": "NORMAL", "destination": "NORMAL", "base": "NORMAL" }, "objectTypes": { "source": "FILE", "destination": "FILE", "base": "FILE" }, "numberOfConflicts": 1, "isBinaryFile": { "source": false, "destination": false, "base": false }, "contentConflict": true, "fileModeConflict": false, "objectTypeConflict": false, "mergeOperations": { "source": "M", "destination": "M" } }, "mergeHunks": [ { "isConflict": true, "source": { "startLine": 0, "endLine": 3, "hunkContent": "VGhpcyBpEXAMPLE==" }, "destination": { "startLine": 0, "endLine": 1, "hunkContent": "VXNlIHRoEXAMPLE=" } } ], "destinationCommitId": "86958e0aEXAMPLE", "sourceCommitId": "6ccd57fdEXAMPLE", "baseCommitId": "767b69580EXAMPLE" }
  5. Um einen uneferenzierten Commit zu erstellen, der das Ergebnis des Zusammenführens von zwei Commit-Spezifizierern repräsentiert, führen Sie den Befehl create-unreferenced-merge-commit aus und geben Sie Folgendes an:

    • Einen Commit-Spezifizierer für die Quelle der Zusammenführung (mit der Option --source-commit-specifier).

    • Einen Commit-Spezifizierer für das Ziel der Zusammenführung (mit der Option --destination-commit-specifier).

    • Die Zusammenführungsoption, die Sie verwenden möchten (mit der Option --merge-option).

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

    • (Optional) Eine Konfliktlösungstrategie, die verwendet werden soll (mit der Option --conflict-resolution-strategy).

    • (Optional) Die gewünschte Detailgenauigkeit aller Konflikte (mit der Option --conflict-detail-level).

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

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

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

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

    So bestimmen Sie beispielsweise die Zusammenführungskonflikte für die Zusammenführung eines Quell-Branch mit dem Namenbugfix-1234mit einem Zielzweig namensHauptVerwenden der ACCEPT_SOURCE-Strategie in einem Repository namensMyDemoRepo:

    aws codecommit create-unreferenced-merge-commit --source-commit-specifier bugfix-1234 --destination-commit-specifier main --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo --name "Maria Garcia" --email "maria_garcia@example.com" --commit-message "Testing the results of this merge."

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

    { "commitId": "4f178133EXAMPLE", "treeId": "389765daEXAMPLE" }