Rumah > Artikel > alat pembangunan > 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!
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:
.git
dalam direktori index
di bawah direktori kerja, yang menyimpan kandungan kawasan storan sementara. Perintah git add menambah kandungan ruang kerja ke kawasan pementasan. .git/objects
menyimpan setiap rekod penyerahan, manakala direktori .git/refs
menyimpan maklumat cawangan dan maklumat tag. 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.
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!