Artikel ini membawakan anda pengetahuan yang berkaitan tentang Git, yang meringkaskan perkara utama kawalan versi Mari kita lihat panduan belajar kawalan versi Git. Bermanfaat.
Kajian yang disyorkan: "Tutorial Pembelajaran Git"
Asal Usul Kawalan Versi
- Projek perisian hari ini biasanya dianalisis, direka bentuk, dikodkan, diselenggara dan diuji oleh pasukan R&D
- Untuk pembangunan pasukan, masalah berikut perlu diselesaikan:
- Menyandarkan berbilang versi menggunakan ruang . Memakan masa
- Sukar untuk dipulihkan kepada versi yang betul sebelum ini
- Sukar untuk menyelesaikan konflik kod
- Sukar untuk mengesan masa pengubahsuai dan pengubahsuaian kod yang bermasalah
- Tidak dapat melaksanakan Kawalan kebenaran
- Kesukaran dalam keluaran versi projek
- Alat pengurusan kod sumber wujud untuk menyelesaikan masalah di atas
Kawalan Semakan )
- ialah amalan standard untuk mengekalkan cetak biru kejuruteraan, yang boleh menjejaki proses cetak biru kejuruteraan dari lahir hingga dimuktamadkan. Ia adalah sistem yang merekodkan perubahan dalam kandungan beberapa fail supaya anda boleh menyemak status semakan versi tertentu pada masa hadapan
- Jika ia adalah pembangunan pasukan, penggunaan kawalan versi adalah wajib!
- Jika anda sedang membangun sendirian, anda juga amat disyorkan untuk mula menggunakan kawalan versi sekarang!
- Menggunakan kawalan versi anda boleh:
- Tiada kerosakan pada kerja sedia ada
- Tiada peningkatan dalam beban kerja
- Ia akan menjadi lebih mudah untuk menambah sambungan ciri baharu
Alat kawalan versi biasa
- CVS membuka pintu kepada kawalan versi
- CVS dilahirkan pada tahun 1990, alat pengurusan kod sumber arus perdana pada zaman purba
- SVN, raja kawalan versi berpusat
- SVN: juga dikenali sebagai subversi, ialah pengganti CVS dan merupakan
集中式
alat pengurusan kod sumber. Ia pernah menjadi alat pengurusan kod untuk kebanyakan perisian sumber terbuka (kod google), dan ia paling kerap digunakan oleh syarikat perisian domestik sejak beberapa tahun lalu
- Satu kerja hebat GIT yang diedarkan kawalan versi
- GIT: Alat pengurusan kod sumber
分布式
Pada masa ini, hampir semua perusahaan domestik telah menyelesaikan penukaran daripada SVN kepada GIT
<.>
- Pengurusan kod sumber terpusat
- Pengurusan kod sumber teragih
Diedarkan Perbezaan terbesar daripada berpusat ialah: -
Dalam berpusat, pembangun hanya boleh menyerahkan kod ke pelayan, manakala dalam diedarkan, pembangun boleh menyerahkan secara tempatan
- Dalam berpusat Dalam diedarkan mod, hanya terdapat pangkalan data kod pada pelayan jauh Dalam mod diedarkan, terdapat pangkalan data kod pada setiap mesin pembangun
-
SVN (berpusat) - <.>
GIT (diedarkan)
Perbandingan mudah antara Git dan SVN
- Kelajuan
- Dalam banyak kes, git jauh lebih pantas daripada SVN
- Struktur
- SVN ialah pengurusan berpusat, git ialah pengurusan teragih
- Lain-lain
- SVN kekok untuk menggunakan cawangan, git Anda boleh dengan mudah mempunyai cawangan tanpa had
- SVN mesti disambungkan ke Internet untuk berfungsi dengan betul, git menyokong kawalan versi tempatan
- Versi lama SVN akan meletakkan .svn dalam setiap direktori, dan git hanya akan meletakkan a .svn dalam setiap direktori. Direktori akar mempunyai .git
Pengenalan GIT
- GIT ialah sumber terbuka dan percuma
分布式
sistem kawalan versi Digunakan untuk 敏捷高效
mengendalikan sebarang projek, kecil atau besar
- Dari semua alat kawalan versi yang diedarkan di dunia, git ialah yang paling pantas, paling mudah dan paling popular
- Karya hebat kedua Linus, bapa Linux
- Pada tahun 2005, syarikat perisian BitKeeper menghentikan hak penggunaan percuma untuk komuniti Linux.
- Untuk membantu pembangunan kernel Linux (urus kod sumber), Linus terpaksa membangunkan sendiri alat kawalan versi yang diedarkan, dan Git dilahirkan
Prinsip kerja GIT
- Jika anda ingin mempelajari GIT dengan baik, anda mesti terlebih dahulu memahami prinsip kerja GIT
-
Direktori Kerja: Di dalam folder gudang , kandungan selain daripada
.git目录
-
Repositori (Repositori): .git direktori, digunakan untuk menyimpan dan merekod maklumat versi
- dalam repositori Suspension Area (staga):
-
dalam repositori Cawangan (master): Cawangan pertama secara automatik dicipta oleh git
- **HEAD dalam repositori Penunjuk: ** digunakan untuk menunjuk ke cawangan semasa
- git add dan git commit fungsi penamaan
- git add: ubah suai dan tambah fail Ke kawasan pementasan
- git commit: Serahkan semua kandungan kawasan pementasan ke cawangan yang ditunjuk oleh penuding HEAD semasa
Persekitaran penggunaan GIT
- A
共享版本库
diperlukan untuk pembangunan berbilang orang dan satu 本地库
boleh dimulakan
- Bentuk pustaka versi kongsi:
- Pustaka kongsi setempat: folder/cakera U/cakera keras
- Pustaka kongsi jauh: bina pelayan git anda sendiri/hoskannya ke platform pihak ketiga (github/oschina, dsb.)
- Sama ada pembangunan satu orang atau pembangunan berbilang orang, pelanggan boleh menggunakan baris arahan atau antara muka grafik untuk menggunakan git
Pembangunan peribadi arahan GIT
-
git help
: manual bantuan arahan git
- Lihat arahan lain: git membantu arahan lain
-
git init
: Inisialisasi gudang (gudang peribadi)
HEAD: 指向当前分支的一个提交
description: 项目的描述信息
config: 项目的配置信息
info/: 里面有一个exclude文件,指定本项目要忽略的文件
objects/: Git对象库(commit/tree/blob/tag)
refs/: 标识每个分支指向哪个提交
hooks/: 默认的hook脚本
-
Maklumat konfigurasi tetapan GIT
- Konfigurasikan nama pengguna:
git config user.name "用户名"
(untuk menjejak rekod pengubahsuaian)
- Konfigurasikan e-mel:
git config user.email "邮箱"
(untuk komunikasi antara pembangun berbilang orang)
-
git config -l
: Lihat maklumat konfigurasi
-
git config -e
: Edit maklumat konfigurasi
-
git status
: Semak status fail
- Lihat status fail:
git status 文件名
- Lihat status semua fail dalam laluan semasa:
git status
-
git add
: akan berfungsi Simpan fail dalam kawasan penimbal ke kawasan penimbal
- Simpan fail ke kawasan penimbal:
git add 文件名
- Simpan semua fail dalam laluan semasa ke kawasan penimbal:
git add .
(perhatikan bahawa pada penghujungnya ialah titik.)
-
git commit
: Serahkan fail dalam zon penampan ke cawangan semasa
- Serahkan fail ke cawangan:
git commit -m ”注释” 文件名
- Simpan semua fail dalam laluan semasa ke cawangan:
git commit -m ”注释”
-
git log
: Lihat log pengubahsuaian fail
- Lihat log pengubahsuaian fail tertentu:
git log 文件名
- Lihat log pengubahsuaian semua fail dalam laluan semasa:
git log
- Lihat maklumat log ringkas dalam satu baris:
git log ––pretty=oneline
- Lihat N pengubahsuaian terkini:
git log –N
(N ialah integer)
-
git diff
: Lihat perubahan terkini pada fail
- Lihat perubahan terkini pada fail:
git diff 文件名
- Lihat perubahan terkini pada semua fail dalam laluan semasa:
git diff
git reflog
: Lihat rekod rujukan cawangan (boleh melihat semua nombor versi)
git rm
: Padam fail (operasi komit diperlukan selepas pemadaman untuk menyegerakkan ke pustaka Versi)
-
git reset
: rollback versi (ia disyorkan untuk menambah parameter --hard, git menyokong penyesalan tanpa had)
- 回退到上一个版本:
git reset ––hard HEAD^
- 回退到上上一个版本:
git reset ––hard HEAD^^
- 回退到上N个版本:
git reset ––hard HEAD~N(N是一个整数)
- 回退到任意一个版本:
git reset ––hard 版本号(版本号用7位即可)
-
Git忽略提交规则 - .gitignore配置
# 表示此为注释,将被Git忽略*.a 表示忽略所有 .a 结尾的文件!lib.a 表示但lib.a除外/TODO 表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ 表示忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt 表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
bin/: 表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: 表示忽略根目录下的bin文件
/*.c: 表示忽略cat.c,不忽略 build/cat.c
debug/*.obj: 表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: 表示忽略/foo,a/foo,a/b/foo等
a/**/b: 表示忽略a/b, a/x/b,a/x/y/b等!/bin/run.sh 表示不忽略bin目录下的run.sh文件*.log: 表示忽略所有 .log 文件
config.php: 表示忽略当前路径的 config.php 文件
/mtk/ 表示过滤整个文件夹*.zip 表示过滤所有.zip文件/mtk/do.c 表示过滤某个具体文件
被过滤掉的文件就不会出现在git仓库中(gitlab或github)了,当然本地库中还有,只是push的时候不会上传。
需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中,如下:!*.zip!/mtk/one.txt
唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。为什么要有两种规则呢?
想象一个场景:假如我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理,那么.gitignore规则应写为::/mtk/*
!/mtk/one.txt
假设我们只有过滤规则,而没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!
注意上面的/mtk/*不能写为/mtk/,否则父目录被前面的规则排除掉了,one.txt文件虽然加了!过滤规则,也不会生效!
----------------------------------------------------------------------------------
还有一些规则如下:
fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;
/*
!.gitignore
!/fw/
/fw/*
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;注意要先对bin/的父目录使用!规则,使其不被排除。
GIT命令-团队开发
-
git init --bare
: 仓库初始化(共享仓库)
-
git clone
:下载远程仓库到本地
- 下载远程仓库到当前路径:git clone 仓库的URL
- 下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径
-
git pull
:下载远程仓库的最新信息到本地仓库
-
git push
:将本地的仓库信息推送到远程仓库- 提交时如果远程仓库有其它人提交的最新代码, 必须先pull, 再提交
- 冲突解决:
- 当多个人同时修改了同一个文件时, 后提交的需要先从服务器pull代码到问题, 手动解决完冲突之后再push到远程服务器
<<<<<<< HEAD
你本地的新增的代码=======
服务器上和你冲突的代码>>>>>>> e9609de28b65bf97539f94c6458cdebdf2711c9f
GIT经典协同模型
中心仓库:包含master和develop两个分支
-
分支分类
- 主要分支:master和develop分支
- 支持性分支:特性分支,发布分支,热补丁分支
对于商业级项目,真正开发过程中都是基于develop分支进行的,develop分支是开发主线!
master分支中,只存放相对稳定的分支,例如:0.1版本, 0.2版本
在实际产品开发中,需要“规划版本”,例如:将100个功能规划到5个不同的版本上
发现bug,要基于“上一个最稳定的版本”进行修复,这是热补丁分支存在的意义!
理解清楚版本管理分支的特性,是迭代式开发的重要基础!
git branch
: 查看所有分支
git branch 分支名称
: 创建分支
- 新创建的分支中的内容和master分支中的内容一样
-
git checkout 分支名称
: 切换到指定分支
-
git merge 分支名称
: 合并分支
-
git branch -d 分支名称
: 删除指定分支
使用GIT我们应该
- 经常更新:降低冲突的可能性
- 提交前需在本机测试通过:降低将问题代码传到版本库
- 提交时一定写备注:方便其他员工查看和自己以后回顾
- 对于不需要提交的文件不要提交到版本库
提示:
- Kemas kini sebelum setiap penyerahan
- Serahkan kod yang disusun pada hari itu sebelum keluar kerja setiap hari
- Kemas kini kod dari hari sebelumnya perkara pertama di tempat kerja setiap hari
GITHUB MENGGUNAKAN
- 1. Daftar akaun GitHub
- 2. Log masuk ke GitHub
- 3 Klik pada gudang anda
<.>
4. Buat gudang baharu 5 >- 6. Konfigurasikan Kunci SSH
- 6.1 Buka alat baris arahan git
- Masukkan arahan
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-
6.2 Salin kunci awam yang baru dijana
-
-
6.3 Tambahkan Kunci SSH yang dijana pada GitHub
-
-
-
-
6.4 Uji sama ada konfigurasi berjaya
-
ssh -T git@github.com
Jika ia muncul kemudian: Hai ****! telah berjaya disahkan, tetapi GitHub tidak menyediakan akses shell yang terbukti
-
7 Gunakan Kunci SSH untuk mengendalikan GitHub
-
<.>
penggunaan oschina
Kaedahnya sama seperti GitHub
- Pembelajaran yang disyorkan: "
Tutorial Git
"
Atas ialah kandungan terperinci Ringkaskan dan susun panduan kajian kawalan versi Git. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!