


Mari kita bincangkan tentang cara menarik dan menggabungkan kod secara elegan dalam Gitlab
Bagaimana untuk menarik dan menggabungkan kod secara elegan dalam Gitlab? Artikel berikut akan memperkenalkan anda kepada kaedah menarik dan menggabungkan kod dalam Gitlab saya harap ia akan membantu anda!
tarik atau ambil
Terdapat dua bentuk operasi kod tarik, git pull
dan git fetch
, kemudian ini What's perbezaan antara keduanya?
Mari kita lihat gambarajah seni bina dahulu
Gambar menunjukkan proses git yang lengkap untuk memahami setiap kawasan dengan lebih jelas, mari kita pergi bawah Terangkan fungsinya:
- direktori kerja, hanyalah kawasan tempat anda bekerja. Untuk git, ia adalah direktori kerja tempatan.
-
Kawasan pementasan (kawasan pentas, juga dipanggil kawasan indeks), ialah peringkat peralihan sebelum menyerahkan pengubahsuaian kepada repositori. Terdapat fail
.git
dalam direktoriindex
di bawah direktori kerja, yang menyimpan kandungan kawasan storan sementara. Perintah git add menambah kandungan ruang kerja ke kawasan pementasan. -
Repositori tempatan, repositori sistem kawalan versi, wujud secara tempatan. Apabila arahan git commit dilaksanakan, kandungan kawasan pementasan akan diserahkan ke gudang. Direktori
.git/objects
menyimpan setiap rekod penyerahan, manakala direktori.git/refs
menyimpan maklumat cawangan dan maklumat tag. - Repositori jauh, pada asasnya adalah konsep yang sama dengan gudang tempatan Perbezaannya ialah satu wujud dari jauh dan boleh digunakan untuk kerjasama jauh, manakala satu lagi wujud secara tempatan. Interaksi setempat dan jauh boleh dicapai melalui tolak/tarik;
-
salinan gudang jauh, boleh difahami sebagai cache gudang jauh yang wujud secara tempatan. Apabila menggunakan
git fetch
untuk menarik repositori kod jauh, ia adalah sama dengan mempunyai salinan tempatan repositori jauh Anda boleh memilih untuk menggabungkan salinan ini ke dalam repositori tempatan.
Seperti yang anda boleh lihat daripada gambar, apabila kami menggunakan git pull
untuk menarik kod, ia akan digabungkan terus ke dalam cawangan tempatan, dan apabila kami menggunakan git fetch
untuk menarik kod, ia mula-mula akan digabungkan ke dalam cawangan tempatan Jana salinan repositori jauh dan kemudian menggabungkannya ke dalam cawangan tempatan menggunakan git merge
atau git rebase
.
Mengapa melakukannya beberapa kali apabila anda boleh git pull
melakukannya secara langsung? Bayangkan satu senario Apabila anda ingin menggabungkan kod orang lain, tetapi anda tidak tahu perkara yang telah mereka ubah dan sama ada ia boleh digabungkan dengan kod anda, ini boleh dicapai dengan mudah melalui git fetch
. git fetch
Pada masa hadapan, ia tidak akan digabungkan dengan cawangan tempatan serta-merta Selepas git fetch
, gambar berikut akan dipaparkan:
Gambar di atas menunjukkan bahawa. cawangan jauh baharu telah ditambahkan test2
cawangan, terdapat satu lagi maklumat penyerahan pada cawangan test
Pada masa ini, anda boleh melihat satu lagi cawangan .git/refs/remotes/origin
dalam direktori test2
.
Menggunakan git log origin/test
, anda boleh melihat maklumat penyerahan tertentu
Jika anda ingin melihat kandungan yang diserahkan, anda hanya boleh membuat cawangan baharu ,
git checkout -b test-origin git merge test
Setelah berkata ini, saya percaya anda sudah faham perbezaan antara git pull
dan git fetch
. Untuk meringkaskan:
git fetch lebih selamat dan lebih mesra pengguna
git pull lebih agresif dan merosakkan
Ketua Umum lazimnya menggunakan git fetch
semasa menguruskan projek untuk menyemak cawangan mana yang telah ditambah baru-baru ini dan apakah pengubahsuaian yang telah dibuat, supaya dapat mengawal projek dengan lebih baik.
cantum atau base semula
Untuk operasi cantum yang disebutkan di atas, kami biasanya menggabungkan kod cawangan tertentu terus melalui git merge <分支名>
. Mari kita lihat dahulu masalah penggunaan git merge
secara langsung Terdapat mesej Merge branch
yang sangat tidak menyenangkan, seperti yang ditunjukkan dalam gambar di bawah:
Gambar di bawah adalah. menggabungkan satu A carta alir Apabila kita menarik main
dalam cabang dev
untuk pembangunan, kedua-dua cawangan mempunyai rekod komit Apabila kita bergabung, keadaan biasa harus bergabung secara langsung atas dasar utama, bukan Ada maklumat penyerahan C7
tambahan, iaitu Merge branch
yang dinyatakan di atas Ini jelas merupakan fenomena yang sangat tidak munasabah (sudah tentu, ini tidak menjejaskan kerja biasa git).
Jadi bagaimana untuk menyelesaikan masalah yang disebabkan oleh fenomena ini? Jawapannya ialah git rebase
, biasanya dikenali sebagai rebasing.
下面我们先来看看变基以后git分支是什么样的了
可以看到,当dev
分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。
示例操作
上面讲了这么多,现在让我们来实际操作一下。
场景:远程有一个main
分支上有内容更新,现在我们需要把更新的内容合并到本地dev
分支上,然后push
到远程dev
分支,当前分支实在dev分支。
简单实现(就是很朴实无华):
# 拉取main分支代码 git fetch origin main # 合并到dev git rebase origin/main
上面的git rebase
还有个快捷的操作,直接一行命令搞定
# 拉取test分支代码合并到dev git pull --rebase origin test
如果你不想每次都添加rebase
,可以在终端中输入下面的命令:
git config --global pull.rebase true
这个配置就是告诉git在每次pull前先进行rebase操作
其他命令参考
# 查看本地分支 git branch # 查看远程分支 git branch -r # 查看所有分支 git branch -a # 拉取所有远程分支代码 git fetch # 拉取origin源上所有分支代码 git fetch origin # 拉取orign源上main分支代码 git fetch origin main # 拉取远程分支到新建的一个本地分支并 git checkout -b newBrach origin/master # 合并远程分支到本地 git pull --rebase origin master # 查看提交日志 git log --oneline # 查看某个人提交的日志 git log --author=xiumubai --oneline # 查看某个文件提交的记录 git blame README.md # 查看某次提交的内容 git show <commitid> # 查看最近几次的提交 git log -p -n
(学习视频分享:编程基础视频)
Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menarik dan menggabungkan kod secara elegan dalam Gitlab. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Untuk memuat turun projek secara tempatan melalui Git, ikuti langkah -langkah ini: pasang git. Navigasi ke direktori projek. Pengklonan Repositori Jauh menggunakan arahan berikut: Git Clone https://github.com/username/repository-name.git

Langkah -langkah untuk mengemas kini kod git: lihat kod: klon git https://github.com/username/repo.git Dapatkan perubahan terkini: Git mengambil Perubahan Gabungan: Git Gabungan Asal/Master Push Change (Pilihan): Git Push Origin Master

Selesaikan: Apabila kelajuan muat turun git perlahan, anda boleh mengambil langkah -langkah berikut: periksa sambungan rangkaian dan cuba menukar kaedah sambungan. Mengoptimumkan Konfigurasi Git: Meningkatkan Saiz Penampan Pos (Git Config-Global Http.PostBuffer 524288000), dan mengurangkan had berkelajuan rendah (git config --global http.lowspeedlimit 1000). Gunakan proksi Git (seperti Git-Proxy atau Git-LFS-Proxy). Cuba gunakan klien Git yang berbeza (seperti sourcetree atau github desktop). Periksa perlindungan kebakaran

Git Commit adalah arahan yang merekodkan fail perubahan kepada repositori git untuk menyelamatkan gambar keadaan semasa projek. Cara menggunakannya adalah seperti berikut: Tambahkan perubahan ke kawasan penyimpanan sementara Tulis mesej penyerahan ringkas dan bermaklumat untuk menyimpan dan keluar dari mesej penyerahan untuk melengkapkan penyerahan secara opsyen: Tambahkan tandatangan untuk log penyerahan Git Log untuk melihat kandungan penyerahan

Untuk memadam repositori Git, ikuti langkah -langkah ini: Sahkan repositori yang anda mahu padamkan. Penghapusan repositori tempatan: Gunakan perintah RM -RF untuk memadam foldernya. Jauh memadam gudang: Navigasi ke tetapan gudang, cari pilihan "Padam Gudang", dan sahkan operasi.

Proses penggabungan kod Git: Tarik perubahan terkini untuk mengelakkan konflik. Beralih ke cawangan yang anda mahu bergabung. Memulakan gabungan, menyatakan cawangan untuk bergabung. Selesaikan gabungan konflik (jika ada). Pementasan dan komit gabungan, memberikan mesej komit.

Apabila membangunkan laman web e-dagang, saya menghadapi masalah yang sukar: bagaimana untuk mencapai fungsi carian yang cekap dalam sejumlah besar data produk? Carian pangkalan data tradisional tidak cekap dan mempunyai pengalaman pengguna yang lemah. Selepas beberapa penyelidikan, saya dapati jenis enjin carian dan menyelesaikan masalah ini melalui PHP pelanggan PHP TypeSense/TypeSense-PHP, yang meningkatkan prestasi carian.

Bagaimana cara mengemas kini kod git tempatan? Gunakan Git Fetch untuk menarik perubahan terkini dari repositori jauh. Gabungkan perubahan jauh ke cawangan tempatan menggunakan git gabungan asal/& lt; nama cawangan jauh & gt;. Menyelesaikan konflik yang timbul daripada penggabungan. Gunakan git commit -m "gabungan cawangan & lt; nama cawangan jauh & gt;" untuk menghantar penggabungan dan memohon kemas kini.
