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?
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
两种都可以,只不过大部分人选择先
pull
,因为你没提交你的代码,别人提交了,这时候git
会自动merge
,而如果你提交了,有时候git
自动merge
会报冲突,选择先pull
就是图一个方便和省事,当然也有人选择先push
在pull
,这样可以了解其他伙伴对代码的改动通俗的说就比如原来
master
的代码快照是1,你的同伴改了提交了是2,你的提交代码是3,如果你先pull
,那么就是3和1merge
,而3包含1,git
选择最新代码3覆盖1,不存在冲突关系,而你先push
在pull
,那就是2和3merge
,这是git
自动merge
Mengapatarik ? 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 terkiniKod 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
🎜Dalam istilah orang awam, contohnya, petikan kod asalmenarik
dahulu, kerana anda belum menyerahkan kod anda dan orang lain telah menyerahkannya Pada masa ini,git
akan secara automatikgabungkan
, dan jika anda menyerahkan, kadangkalagit
secara automatikmerge
akan melaporkan konflik Memilih untukmenarik
dahulu adalah mudah dan menjimatkan masalah , sudah tentu, sesetengah orang memilih untukmenolak
dahulu dan kemudianmenarik
, supaya mereka boleh memahami perubahan kod yang dibuat oleh rakan kongsi lainmaster
ialah 1, pasangan anda menukar petikan kod dan menyerahkannya kepada 2, dan kod yang anda serahkan ialah 3. Jika andatarik dahulu, Kemudian ia adalah 3 dan 1
merge
, dan 3 mengandungi 1.git
memilih kod 3 terkini untuk menulis ganti 1. Tiada perhubungan konflik, dan andatolak
dahulu Dalamtarik
, iaitu 2 dan 3cantum
, yang merupakan ralat untukgit
kepadagabung
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🎜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你远程新建了一个分支拉到本地的道理是一样的,属于复制了一份,但是本地分支和远程分支已经是两个东西了
本地分支属于本地仓库里,是包含关系,一个仓库里可以有很多分支, 如果是 tag 的话可以分离出独立的仓库
肯定不会全量推送到远程的,是通过对比 commit 的记录,如果本地高于远程就直接把多出来的
commit
给怼上去,如果本地的这几个commit
和远程的commit
有冲突的部分就merge
,然后根据提交时间排序再新建一个merge 的 commit 记录再怼上去这个先 commit 再 pull 再 push 的情况就是为了应对多人合并开发的情况,
commit
是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;pull
是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在git add && git commit && git pull
这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3并且推送到远程了,B 进行修改的时候没有
.commit
操作,他先自己写了东西,然后git pull
这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push
Bahagian bercanggah antara commit
dancommit
jauh ialahmerge
, 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;🎜🎜 🎜🎜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 tidakgit pull
Pada masa ini, versi tempatan B telah mencapai 3. B menukar kod yang ditulis oleh A apabila versi tempatan adalah 3, dan kemudian 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🎜🎜 🎜 🎜 🎜