Menyelesaikan konflik dalam permintaan pull dalam repositori AWS CodeCommit - AWS CodeCommit

AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari lebih lanjut”

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyelesaikan konflik dalam permintaan pull dalam repositori AWS CodeCommit

Jika permintaan pull Anda memiliki konflik dan tidak dapat digabung, Anda dapat mencoba menyelesaikan konflik dengan salah satu dari beberapa cara:

  • Pada komputer lokal Anda, Anda dapat menggunakan perintah git diff untuk menemukan konflik antara dua cabang dan membuat perubahan untuk mengatasinya. Anda juga dapat menggunakan alat perbedaan atau perangkat lunak lain untuk membantu Anda menemukan dan menyelesaikan perbedaan. Setelah Anda menyelesaikannya sesuai keinginan Anda, Anda dapat mengirim cabang sumber Anda dengan perubahan yang berisi konflik yang diselesaikan, yang memperbarui permintaan pull. Untuk informasi selengkapnya tentang git diff dan git difftool, lihat dokumentasi Git.

  • Di konsol, Anda dapat memilih Selesaikan konflik. Ini akan membuka editor teks biasa yang menunjukkan konflik dengan cara yang sama seperti perintah git diff. Anda dapat secara manual meninjau konflik di setiap file yang berisi konflik, membuat perubahan, dan kemudian memperbarui permintaan pull dengan perubahan Anda.

  • Di AWS CLI, Anda dapat menggunakan AWS CLI untuk mendapatkan informasi tentang konflik penggabungan dan membuat commit gabungan yang belum dirujuk untuk menguji penggabungan.

Menyelesaikan konflik dalam permintaan pull (konsol)

Anda dapat menggunakan konsol CodeCommit untuk menyelesaikan konflik dalam permintaan pull di repositori CodeCommit.

  1. Buka konsol CodeCommit di https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Di Repositori, pilih nama repositori.

  3. Di panel navigasi, pilih Permintaan pull.

  4. Secara default, daftar semua permintaan pull terbuka ditampilkan. Pilih permintaan pull terbuka yang ingin Anda gabungkan tetapi berisi konflik.

  5. Dalam permintaan pull, pilih Selesaikan konflik. Opsi ini hanya muncul jika ada konflik yang harus diselesaikan sebelum permintaan pull dapat digabung.

    Permintaan pull menunjukkan bahwa permintaan pull memiliki konflik yang harus diselesaikan sebelum dapat digabung.
  6. Jendela penyelesaian konflik membuka daftar setiap file yang memiliki konflik yang harus diselesaikan. Pilih setiap file dalam daftar untuk meninjau konflik, dan membuat perubahan yang diperlukan sampai semua konflik telah diselesaikan.

    Editor penyelesaian konflik menampilkan file dengan konflik yang belum diselesaikan.
    • Anda dapat memilih untuk menggunakan isi file sumber, isi file tujuan, atau jika file bukan file biner, untuk mengedit isi file secara manual sehingga hanya berisi perubahan yang Anda inginkan. Penanda diff git standar digunakan untuk menunjukkan konflik antara tujuan (HEAD) dan cabang sumber dalam file.

    • Jika suatu file adalah file biner, Git submodule, atau jika ada konflik nama file/folder, Anda harus memilih untuk menggunakan file sumber atau file tujuan untuk menyelesaikan konflik. Anda tidak dapat melihat atau mengedit file biner di konsol CodeCommit.

    • Jika ada konflik mode file, Anda melihat opsi untuk menyelesaikan konflik tersebut dengan memilih antara mode file dari file sumber dan mode file dari file tujuan.

    • Jika Anda memutuskan ingin membuang perubahan untuk file dan mengembalikannya ke keadaan konflik, pilih Atur ulang file. Hal ini memungkinkan Anda menyelesaikan konflik dengan cara yang berbeda.

  7. Jika Anda puas dengan perubahan Anda, pilih Perbarui permintaan pull.

    catatan

    Anda harus menyelesaikan semua konflik di semua file sebelum Anda dapat berhasil memperbarui permintaan pull dengan perubahan Anda.

  8. Permintaan pull diperbarui dengan perubahan Anda dan dapat digabung. Anda melihat halaman penggabungan. Anda dapat memilih untuk menggabungkan permintaan pull saat ini, atau Anda dapat kembali ke daftar permintaan pull.

Menyelesaikan konflik dalam permintaan pull (AWS CLI)

Untuk menggunakan perintah AWS CLI dengan CodeCommit, instal AWS CLI. Untuk informasi selengkapnya, lihat Referensi baris perintah.

Tidak ada satu perintah AWS CLI pun yang membuat Anda dapat menyelesaikan konflik dalam permintaan pull dan menggabungkan permintaan itu. Namun, Anda dapat menggunakan perintah individu untuk menemukan konflik, mencoba untuk menyelesaikannya, dan menguji apakah permintaan pull dapat digabung. Anda dapat menggunakan:

  • get-merge-options, untuk mengetahui opsi gabungan apa yang tersedia untuk penggabungan antara dua penentu commit.

  • get-merge-conflicts, untuk mengembalikan daftar file dengan konflik penggabungan dalam suatu penggabungan antara dua penentu commit.

  • batch-describe-merge-conflicts, untuk mendapatkan informasi tentang semua konflik penggabungan dalam file dalam penggabungan antara dua commit menggunakan strategi penggabungan tertentu.

  • describe-merge-conflicts, untuk mendapatkan informasi tentang konflik penggabungan untuk file khusus antara dua commit menggunakan strategi penggabungan yang ditentukan.

  • create-unreferenced-merge-commit, untuk menguji hasil penggabungan dua penentu commit menggunakan strategi gabungan yang ditentukan.

  1. Untuk menemukan opsi penggabungan apa yang tersedia untuk penggabungan antara dua penentu commit, jalankan perintah get-merge-options, menentukan:

    • Sebuah penentu commit untuk sumber penggabungan (dengan opsi --source-commit-specifier).

    • Sebuah penentu commit untuk tujuan untuk penggabungan (dengan opsi --destination-commit-specifier).

    • Nama repositori (dengan opsi --repository-name).

    • (Opsional) Strategi penyelesaian konflik untuk dgunakan (dengan opsi --conflict-resolution-strategy).

    • (Opsional) Tingkat detail yang Anda inginkan tentang konflik apapun (dengan opsi --conflict-detail-level).

    Misalnya, untuk menentukan strategi penggabungan yang tersedia untuk menggabungkan cabang sumber yang bernama bugfix-1234 dengan cabang tujuan yang bernama utama di sebuah repositori yang bernama MyDemoRepo:

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

    Jika berhasil, perintah ini menghasilkan output yang serupa dengan yang berikut:

    { "mergeOptions": [ "FAST_FORWARD_MERGE", "SQUASH_MERGE", "THREE_WAY_MERGE" ], "sourceCommitId": "d49940adEXAMPLE", "destinationCommitId": "86958e0aEXAMPLE", "baseCommitId": "86958e0aEXAMPLE" }
  2. Untuk mendapatkan daftar file yang berisi konflik penggabungan dalam suatu penggabungan antara dua penentu commit, jalankan perintah get-merge-conflicts, menentukan:

    • Sebuah penentu commit untuk sumber penggabungan (dengan opsi --source-commit-specifier).

    • Sebuah penentu commit untuk tujuan untuk penggabungan (dengan opsi --destination-commit-specifier).

    • Nama repositori (dengan opsi --repository-name).

    • Opsi penggabungan yang ingin Anda gunakan (dengan opsi --merge-option).

    • (Opsional) Tingkat detail yang Anda inginkan tentang konflik apapun (dengan opsi --conflict-detail-level).

    • (Opsional) Strategi penyelesaian konflik untuk digunakan (dengan opsi --conflict-resolution-strategy).

    • (Opsional) Jumlah maksimum file dengan konflik untuk kembali (dengan opsi --max-conflict-files).

    Misalnya, untuk mendapatkan daftar file yang berisi konflik dalam suatu penggabungan antara cabang sumber bernama fitur-randomizationfeature dan cabang tujuan bernama utama menggunakan strategi penggabungan tiga arah dalam repositori bernama MyDemoRepo:

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

    Jika berhasil, perintah ini menghasilkan output yang serupa dengan yang berikut:

    { "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. Untuk mendapatkan informasi tentang konflik penggabungan di semua file atau subset dari file dalam penggabungan antara dua penentu commit, jalankan perintah batch-describe-merge-conflicts, menentukan:

    • Sebuah penentu commit untuk sumber penggabungan (dengan opsi --source-commit-specifier).

    • Sebuah penentu commit untuk tujuan untuk penggabungan (dengan opsi --destination-commit-specifier).

    • Opsi gabungan yang ingin Anda gunakan (dengan opsi --merge-option).

    • Nama repositori (dengan opsi --repository-name).

    • (Opsional) Strategi penyelesaian konflik untuk dgunakan (dengan opsi --conflict-resolution-strategy).

    • (Opsional) Tingkat detail yang Anda inginkan tentang konflik apapun (dengan opsi --conflict-detail-level).

    • (Opsional) Jumlah maksimum hunk penggabungan yang akan dikembalikan (dengan opsi --max-merge-hunks).

    • (Opsional) Jumlah maksimum file dengan konflik yang akan dikembalikan (dengan opsi --max-conflict-files).

    • (Opsional) Path dari file target untuk digunakan untuk menggambarkan konflik (dengan opsi --file-paths).

    Misalnya, untuk menentukan konflik penggabungan untuk penggabungan cabang sumber bernama feature-randomizationfeature dengan cabang tujuan bernama utama menggunakan strategi THREE_WAY_MERGE dalam repositori bernama MyDemoRepo:

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

    Jika berhasil, perintah ini menghasilkan output yang serupa dengan yang berikut:

    { "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. Untuk mendapatkan informasi rinci tentang konflik penggabungan untuk file tertentu dalam gabungan antara dua penentu commit, jalankan perintah describe-merge-conflicts, menentukan:

    • Sebuah penentu commit untuk sumber penggabungan (dengan opsi --source-commit-specifier).

    • Sebuah penentu commit untuk tujuan untuk penggabungan (dengan opsi --destination-commit-specifier).

    • Opsi penggabungan yang ingin Anda gunakan (dengan opsi --merge-option).

    • Path dari file target untuk digunakan untuk menggambarkan konflik (dengan opsi --file-path).

    • Nama repositori (dengan opsi --repository-name).

    • (Opsional) Strategi penyelesaian konflik untuk dgunakan (dengan opsi --conflict-resolution-strategy).

    • (Opsional) Tingkat detail yang Anda inginkan tentang konflik apapun (dengan opsi --conflict-detail-level).

    • (Opsional) Jumlah maksimum hunk penggabungan yang akan dikembalikan (dengan opsi --max-merge-hunks).

    • (Opsional) Jumlah maksimum file dengan konflik yang akan dikembalikan (dengan opsi --max-conflict-files).

    Sebagai contoh, untuk menentukan konflik penggabungan untuk file bernama readme.md di cabang sumber bernama feature- randomizationfeature dengan cabang tujuan bernama utama menggunakan strategi THREE_WAY_MERGE dalam repositori bernama MyDemoRepo:

    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

    Jika berhasil, perintah ini menghasilkan output yang serupa dengan yang berikut:

    { "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. Untuk membuat commit yang tidak direferensikan yang mewakili hasil penggabungan dua penentu commit, jalankan perintah create-unreferenced-merge-commit, menentukan:

    • Sebuah penentu commit untuk sumber penggabungan (dengan opsi --source-commit-specifier).

    • Sebuah penentu commit untuk tujuan untuk penggabungan (dengan opsi --destination-commit-specifier).

    • Opsi gabungan yang ingin Anda gunakan (dengan opsi --merge-option).

    • Nama repositori (dengan opsi --repository-name).

    • (Opsional) Strategi penyelesaian konflik untuk dgunakan (dengan opsi --conflict-resolution-strategy).

    • (Opsional) Tingkat detail yang Anda inginkan tentang konflik apapun (dengan opsi --conflict-detail-level).

    • (Opsional) Pesan commit yang harus disertakan (dengan opsi --commit-message).

    • (Opsional) Nama yang digunakan untuk commit (dengan opsi --name).

    • (Opsional) Alamat email yang akan digunakan untuk commit (dengan opsi --email).

    • (Opsional) Apakah akan menyimpan folder kosong (dengan opsi --keep-empty-folders).

    Misalnya, untuk menentukan konflik penggabungan untuk penggabungan cabang sumber bernama bugfix-1234 dengan cabang tujuan bernama utama menggunakan strategi ACCET_SOURCE dalam repositori bernama MyDemoRepo:

    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."

    Jika berhasil, perintah ini menghasilkan output yang serupa dengan yang berikut:

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