Rumah  >  Artikel  >  alat pembangunan  >  Mari kita bincangkan tentang cara menarik dan menggabungkan kod secara elegan dalam Gitlab

Mari kita bincangkan tentang cara menarik dan menggabungkan kod secara elegan dalam Gitlab

青灯夜游
青灯夜游ke hadapan
2023-03-28 19:09:262367semak imbas

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!

Mari kita bincangkan tentang cara menarik dan menggabungkan kod secara elegan dalam Gitlab

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 direktori index 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 dc0e4c6297cddcd31d51710b6c7de7a4. 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 dff1bc9def2d2aa5cbff98bfa970f40b
# 查看最近几次的提交

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!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam