Rumah  >  Soal Jawab  >  teks badan

git - Mengapa komit dahulu, kemudian tarik, dan akhirnya tolak? Daripada melakukan dan kemudian menolak terus?

Saya benar-benar tidak faham, dan tiada penjelasan yang jelas tentang perkara ini di Internet.
Keadaan begini sekarang sudah ada gudang terpencil dan hanya satu cawangan iaitu tuan. Kemudian gudang tempatan saya diklon dari induk jauh. Semua orang mengklonkannya, kemudian menukarnya secara setempat, melakukannya, kemudian menariknya dan kemudian menolaknya. Ini adalah yang semua orang lakukan. Jadi sekarang timbul persoalan:

1 Kemudian yang tempatan saya boleh dianggap sebagai cawangan? Atau adakah ia hanya gudang tempatan?

2 Jika saya membuat cawangan baharu dari jauh dan kemudian menariknya, adakah saya mempunyai cawangan secara tempatan? Adakah cawangan tempatan saya sama dengan cawangan terpencil yang baru dibuat?

3. Apakah perbezaan antara gudang tempatan dan cawangan tempatan?

4. Komit diserahkan kepada gudang tempatan dan kemudian ditolak Adakah ini menolak semua kod ke gudang jauh, atau hanya menolak komit ke gudang jauh?

5. Lalu kenapa anda perlu commit dahulu, kemudian tarik, dan kemudian tolak Jika saya tarik, bukankah saya telah menimpa semua kod yang saya ubah kerana tiada kod yang saya ubah dari jauh, jadi jika saya tarik, tidak? 'Bukankah ini bermakna saya telah ditimpa? Adakah terdapat sebarang perubahan tempatan yang baik? Kemudian bagaimana saya boleh menolak?

6 Dua cabang, A dan B. A bergabung dengan B dan B bergabung dengan A. Adakah terdapat perbezaan?

怪我咯怪我咯2674 hari yang lalu3487

membalas semua(3)saya akan balas

  • 滿天的星座

    滿天的星座2017-05-25 15:10:32

    INSIGHT

    1 Kawasan tempatan dianggap sebagai klon.

    2 Ya, jika terdapat dev cawangan jauh, kemudian tarik dev asal, akan ada cawangan dev secara tempatan.

    3 Gudang adalah keseluruhan projek, dan cawangan adalah salah satu barisan pengeluaran. Sama seperti Alibaba Group bukan sahaja mempunyai satu Taobao

    4.push akan menganalisisnya, sudah tentu tidak semuanya anda boleh mengujinya sendiri dan mendapatkan beberapa fail besar untuk kali pertama akan menjadi sangat perlahan beberapa kilobait, pemindahan akan menjadi sangat perlahan

    .

    5. Komit menghalang alat kawalan jauh daripada terus menimpa tempat anda, selagi terdapat pengubahsuaian, anda akan diminta untuk melakukan ini kerana perkara terkini dalam alat kawalan jauh anda tidak konsisten . Git tahu bahawa perkara di cawangan terpencil tidak boleh dibuang, jadi anda diminta untuk menariknya ke bawah dan menyimpannya secara setempat, supaya yang tempatan menjadi yang terkini dan akhirnya menolaknya dengan cara yang sama, jika yang tempatan anda yang terkini, ia akan mengubah suai yang jauh.

    Jawapan selesai, moma

    balas
    0
  • ringa_lee

    ringa_lee2017-05-25 15:10:32

    1. Pertama sekali, pull tidak akan menimpa kod tempatan anda, tetapi akan mengingatkan anda tentang konflik merge dan anda perlu merge secara manual; pull不会把你本地代码覆盖掉,而是提醒merge冲突,需要你手动merge一下;

    2. 为什么要pull?因为对你来说你本地可能有个分支,你在这个分支上面工作,那么也有可能存在其他人和你一样的做法,也许你们的代码有依赖又或是有冲突,你肯定不能在master里面测试,你要确保自己分支是最新代码;

    3. 本地分支代码不一定和本地仓库是一致的,你把本地代码提交了才会存到本地仓库中,就相当于本地分支是你开发的一个平台,但是最后开发的产出存放地址是本地仓库

    两种都可以,只不过大部分人选择先pull,因为你没提交你的代码,别人提交了,这时候git会自动merge,而如果你提交了,有时候git自动merge会报冲突,选择先pull就是图一个方便和省事,当然也有人选择先pushpull,这样可以了解其他伙伴对代码的改动

    通俗的说就比如原来master的代码快照是1,你的同伴改了提交了是2,你的提交代码是3,如果你先pull,那么就是3和1merge,而3包含1,git选择最新代码3覆盖1,不存在冲突关系,而你先pushpull,那就是2和3merge,这是git自动merge

  • Mengapa tarik? Kerana bagi anda, anda mungkin mempunyai cawangan tempatan, dan anda bekerja di cawangan ini, maka mungkin ada orang lain yang melakukan perkara yang sama seperti anda Mungkin kod anda mempunyai kebergantungan atau konflik, dan anda pasti tidak boleh melakukannya dalam Apabila menguji dalam master, anda perlu memastikan cawangan anda mempunyai kod terkini
    Kod cawangan tempatan tidak semestinya konsisten dengan gudang tempatan Anda menyerahkan kod tempatan sebelum ia disimpan di gudang tempatan Ia bersamaan dengan cawangan tempatan sebagai platform untuk pembangunan anda, tetapi alamat storan terakhir keluaran yang dibangunkan ialah Gudang tempatan

    Kedua-duanya mungkin, tetapi kebanyakan orang memilih untuk menarik dahulu, kerana anda belum menyerahkan kod anda dan orang lain telah menyerahkannya Pada masa ini, git akan secara automatik gabungkan , dan jika anda menyerahkan, kadangkala git secara automatik merge akan melaporkan konflik Memilih untuk menarik dahulu adalah mudah dan menjimatkan masalah , sudah tentu, sesetengah orang memilih untuk menolak dahulu dan kemudian menarik, supaya mereka boleh memahami perubahan kod yang dibuat oleh rakan kongsi lain

    🎜Dalam istilah orang awam, contohnya, petikan kod asal master ialah 1, pasangan anda menukar petikan kod dan menyerahkannya kepada 2, dan kod yang anda serahkan ialah 3. Jika anda tarik< /code> dahulu, Kemudian ia adalah 3 dan 1merge, dan 3 mengandungi 1. git memilih kod 3 terkini untuk menulis ganti 1. Tiada perhubungan konflik, dan anda tolak dahulu Dalam tarik, iaitu 2 dan 3cantum, yang merupakan ralat untuk git kepada gabung kerana ia tidak Tahu apa yang diperlukan dan apa yang tidak🎜 🎜🎜masalah gabungan🎜🎜Gabungan a dan b adalah sama seperti gabungan b dan a Kod yang diperlukan oleh kedua-dua cabang dikekalkan dan disepadukan ke dalam kod yang dipersetujui oleh semua orang🎜 🎜Cuma perbezaannya ialah proses merge mungkin sedikit berbeza Ini bergantung pada keadaan, tetapi pada asasnya adalah sama🎜

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-25 15:10:32

    1. Hubungan antara tempatan dan jauh adalah bersamaan dengan dua cawangan Anda merasakan perkara yang sama kerana hubungan yang sepadan telah diikat secara automatik apabila anda git pull, set-upstream..balbalagit pull 的时候已经自动给绑定好对应关系了, set-upstream..balbala

    2. 你远程新建了一个分支拉到本地的道理是一样的,属于复制了一份,但是本地分支和远程分支已经是两个东西了

    3. 本地分支属于本地仓库里,是包含关系,一个仓库里可以有很多分支, 如果是 tag 的话可以分离出独立的仓库

    4. 肯定不会全量推送到远程的,是通过对比 commit 的记录,如果本地高于远程就直接把多出来的commit 给怼上去,如果本地的这几个 commit 和远程的 commit 有冲突的部分就merge,然后根据提交时间排序再新建一个merge 的 commit 记录再怼上去

    5. 这个先 commit 再 pull 再 push 的情况就是为了应对多人合并开发的情况,

      1. commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;

      2. pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉

      3. 出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3并且推送到远程了,B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push

        .
      Sebab mengapa anda membuat cawangan baharu dari jauh dan menariknya secara setempat adalah sama. Ia adalah salinan, tetapi cawangan tempatan dan cawangan terpencil adalah dua perkara berbeza
    🎜🎜Cawangan tempatan adalah milik gudang tempatan dan merupakan hubungan kemasukan boleh terdapat banyak cawangan dalam satu gudang Jika ia adalah tag, ia boleh dipisahkan menjadi gudang bebas 🎜🎜it pasti tidak akan ditolak ke jauh Bahagian bercanggah antara commit dan commit jauh ialah merge, dan kemudian buat rekod merge commit berdasarkan masa penyerahan dan kemudian muat naiknya🎜 🎜 🎜 🎜Situasi melakukan terlebih dahulu, kemudian menarik dan kemudian menolak adalah untuk menangani situasi berbilang orang yang menggabungkan pembangunan,🎜 🎜 🎜🎜commit adalah untuk memberitahu git apa yang saya ubah dalam penyerahan ini, jika tidak, anda hanya menukarnya tetapi git tidak tahu bahawa anda telah mengubahnya, jadi tiada cara untuk menilai dan membandingkan;🎜🎜 🎜🎜tarik adalah untuk rekod perbandingan komit tempatan dan komit jauh Git membandingkan mengikut bilangan baris fail Jika baris yang sama bagi fail dikendalikan pada masa yang sama, konflik akan berlaku juga Git Konflik ini akan ditandakan Pada masa ini, anda perlu terlebih dahulu menarik orang yang bercanggah dengan anda dan bertanya kod siapa yang harus disimpan, dan kemudian dalam tiga langkah berturut-turut git add && git. commit && git pull, Tujuan menarik semula adalah untuk menghalang orang lain daripada menyerahkan versi lain semasa anda berunding Jika ini berlaku, proses itu akan berulang digabungkan terus untuk anda, dan kod anda tidak akan diberikan kepada anda 🎜🎜 🎜🎜Liputan atau kehilangan kod berlaku: Contohnya, versi kod A dan B semasa menarik kedua-duanya adalah 1, A diserahkan 2 dan 3 secara setempat dan menolaknya ke alat kawalan jauh, dan B tidak komit operasi, dia mula-mula menulis sesuatu sendiri, dan kemudian git pull Pada masa ini, versi tempatan B telah mencapai 3. B menukar kod yang ditulis oleh A apabila versi tempatan adalah 3, dan kemudian < code>git commit && git push Kemudian dalam versi jauh ia adalah 4, dan kod A ditimpa, jadi semua orang mesti melakukan terlebih dahulu dan kemudian tarik, jika tidak, kod itu benar-benar akan ditimpa🎜🎜 🎜 🎜 🎜

    balas
    0
  • Batalbalas