Rumah > Soal Jawab > teks badan
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?
滿天的星座2017-05-25 15:10:32
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
ringa_lee2017-05-25 15:10:32
Pertama sekali,
pull
tidak akan menimpa kod tempatan anda, tetapi akan mengingatkan anda tentang konflikmerge
dan anda perlumerge
secara manual;pull
不会把你本地代码覆盖掉,而是提醒merge
冲突,需要你手动merge
一下;为什么要
pull
?因为对你来说你本地可能有个分支,你在这个分支上面工作,那么也有可能存在其他人和你一样的做法,也许你们的代码有依赖又或是有冲突,你肯定不能在master
里面测试,你要确保自己分支是最新代码;本地分支代码不一定和本地仓库是一致的,你把本地代码提交了才会存到本地仓库中,就相当于本地分支是你开发的一个平台,但是最后开发的产出存放地址是本地仓库
两种都可以,只不过大部分人选择先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
Mengapa 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
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🎜balas0
曾经蜡笔没有小新2017-05-25 15:10:32
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
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;🎜🎜
🎜🎜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 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🎜🎜
🎜
🎜
🎜