cari

Rumah  >  Soal Jawab  >  teks badan

github - Adakah terdapat cara untuk menggabungkan kod dua gudang dengan betul dalam git?

Saya memuat turun terus kod dari gudang A tertentu, dan kemudian membina gudang B sendiri Ambil perhatian bahawa ia adalah mudah pada masa itu, saya kini berharap untuk menyegerakkan kod terbaharu pengarang gudang A, dan kemudian saya mendapati bahawa kaedah penyegerakan dalam talian tidak berguna
/q/10...

Kaedah yang saya gunakan ialah memfailkan laporan maut dahulu: enggan menggabungkan sejarah yang tidak berkaitan

Selepas mencari Google, saya menambahkan parameter --allow-unrelated-histories

Kini ia boleh dijalankan, dan hasil penggabungan kod sumber adalah membingungkan Git nampaknya tidak dapat mengenali perbezaan kod sumber dalam kes ini, sebagai contoh, terdapat fail kod yang saya tidak ubah sama sekali. tetapi pengarang sumber mengemas kini sendiri
Milik Saya Versinya ialah
111
222
Versi pengarang ialah
111
222
333
Secara teorinya, cantuman hanya perlu menggabungkan 333 terus ke dalam kod sumber saya Walau bagaimanapun, dalam kes ini, git menganggap kandungan saya dan kandungan pengarang adalah sepenuhnya Dua salinan berbeza, jadi ia menukar kod menjadi

ini
<<<<<<<<<head
111
222
========
111
222
333
>>>>>>>>>>aasdasfsdfsdf

Mengapa ini berlaku? Adakah tiada penyelesaian?

PHPzPHPz2770 hari yang lalu857

membalas semua(5)saya akan balas

  • PHPz

    PHPz2017-05-02 09:47:39

    Kod sumber yang dimuat turun daripada github bukanlah gudang git secara lalai, jadi anda memulakan kod yang dimuat turun ke dalam gudang git tidak mempunyai sebarang sejarah penyerahan. Jika kedua-dua gudang tidak mempunyai sejarah yang sama , ia tidak boleh digabungkan ke dalam gudang jauh menggunakan git pull, jadi kaedah yang anda gunakan pada mulanya akan menyebabkan ralat berikut:

    enggan menggabungkan sejarah yang tidak berkaitan

    Tetapi jika anda menggunakan pilihan --allow-unrelated-histories untuk memaksa penggabungan, ia menyelesaikan masalah.
    Namun, masalah yang anda hadapi kemudiannya adalah perkara biasa Git tidak menganggap bahawa kandungan anda dan kandungan pengarang adalah dua salinan yang sama sekali berbeza, iaitu, terdapat perbezaan di tempat yang sama. Jika anda menghadapi konflik, cuma selesaikan secara manual. Dan mengikut tekaan saya, sebab konflik itu mungkin kerana pemecahan baris Windows dan pemecahan baris Unix tidak konsisten (sudah tentu kita tidak dapat melihatnya dengan mata kasar Ini bergantung pada cara anda mengendalikan pemecahan baris dalam anda). tetapan git. Mungkin aksara baris baharu gudang jauh secara seragam menggunakan aksara baris baharu Unix (LF) atau aksara baris baharu Windows (CLF), dan anda adalah sebaliknya. Mengenai cara mengendalikan pemisah baris dalam tetapan git, anda boleh merujuk kepada dokumentasi bantuan rasmi github Sudah tentu, terdapat juga banyak maklumat di Internet.
    Selain itu, seperti yang dikatakan oleh tuan sebelum ini, sebaiknya gunakan perintah git clone untuk mengklon terus gudang, supaya anda boleh mengekalkan penyerahan sejarah gudang, dan gunakan perintah git pull untuk mengelakkan pelaporan kesilapan.

    balas
    0
  • 天蓬老师

    天蓬老师2017-05-02 09:47:39

    Ini menandakan bahagian anda yang bercanggah dan anda boleh memilih bahagian yang hendak disimpan untuk menyelesaikan konflik.

    Selain itu, jika anda hanya menyalin salinan kod dan tidak mahu menyalinnya, anda hendaklah terus git clone Dengan cara ini, hos jauh anda masih menjadi milik pengarang dan anda boleh menggunakan git pull untuk memastikan ia dikemas kini pada masa hadapan

    balas
    0
  • 黄舟

    黄舟2017-05-02 09:47:39

    Ini kerana baris yang sama telah diubah suai dan GIT tidak dapat mengenali dan menggabungkannya. Ini dipanggil 冲突

    dalam GIT

    Anda perlu menyelesaikan konflik secara manual dan kemudian melakukan Bagaimana untuk menyelesaikan konflik, sila cari juga "Penyelesaian konflik GIT"

    balas
    0
  • 怪我咯

    怪我咯2017-05-02 09:47:39

    jawapan ahli sudah betul. .
    Anda boleh menggunakan git add -u untuk menambah fail yang bercanggah. Kemudian git commit -m commit dan kemudian git pull
    Mengapa situasi yang anda nyatakan berlaku.
    Ada kemungkinan kod anda ialah

    222
    Sebenarnya terdapat pemulangan pengangkutan atau suapan talian atau simbol lain di sini

    Versi pengarang ialah
    111
    222
    333

    Dalam kes ini, git akan menyedari bahawa ini adalah konflik dan tidak akan bergabung secara automatik. Tidak pasti sepenuhnya. git tidak menggabungkan kod secara automatik.

    balas
    0
  • PHPz

    PHPz2017-05-02 09:47:39

    @Fighting_Bird
    Selepas ujian, anda betul. Perangkapnya ialah

    ditetapkan dalam fail .gitattributes dalam projek pengarang asal.
    • text=auto
      Pilihan ini, jika terdapat pilihan ini dalam tetapan, git akan menukar semua pemisah baris dokumen teks yang dianggapnya kepada LF sebelum menyerahkan, dan kemudian apabila menyemak keluar Kemudian tukarkannya semula, tetapi projek saya sendiri tidak mempunyai tetapan ini, jadi tiada operasi penukaran sedemikian, menyebabkan pemecahan baris dokumen menjadi berbeza dan penggabungan gagal

    balas
    0
  • Batalbalas