概述
项目开发的版本问题
多个人开发同一款软件时,会分不同模块写代码,会频繁删改源码,导致产生很多版本。有的功能暂时不需要,可能后续需要,又不能删除和覆盖,留着标记掉很占篇幅、影响代码的可读性,也不是很合适。这就需要用版本管理工具来实现对源码的集中、统一化管理。
SVN
SVN是集中式,所有版本的代码都上传带SVN服务器,开发者只能上传新版本/下载老版本。类似一主多从的架构,核心是SVN服务器,自然也就存在单点故障的问题。如果SVN服务器部署在局域网,外网只能走V
。。。P
。。。N
。。。来访问它(如果是完全物理隔离的内网,外部也就无法访问)。如果部署在外网又会很慢。这货也无法自动管理多个版本。
Git产生
Linux创始人——大神Linus Torvalds利用C语言编写。果真C语言是地球上最强的语言!!!
Git
Git是去中心化模式,类似区。。。块。。。链。。。这货不需要联网,自己的开发机部署Git后就可以作为本地版本库,利用开发机实现对版本的管理(单机自己管理自己的多个版本)。由于所有开发机都有自己的本地版本库,不需要担心公共版本库故障的问题。当然也可以部署公共的Git版本库,进行分布式开发,实现多台开发机、多个开发者协同工作。由于实现了去中心化,Git公共版本库服务器的压力不会很大。这种做法速度快,也更加灵活。如果开发者产生了冲突也容易解决。不联网也可以实现多版本的管理。
Git组成结构
工作区(Work Dir):该区域用于开发、修改代码。
暂存区(Index):该区域用于临时存放即将提交的版本(所有需要保存的版本必须先添加<add
>到暂存区)。
本地版本仓库(Head):用于实现本地的版本管理(所有暂存区的版本都会被提交<commit
>到本地版本库)。
远程版本仓库:用于共享项目代码版本。常见Github、码云。
同步时是从本地版本库上传到公共版本库(或者远程版本库),克隆时是从公共版本库(或者远程版本库)下载回本地版本库。恢复<checkout
>是从本地版本库覆盖
工作区开发版本的数据。
本地仓库构建
安装好Git工具后就可以构建本地仓库。可以安装汉化包以便使用,但是文件夹的路径一定要纯英文!!!
Git GUI构建
在文件夹空白处右键:
建好后:
目录中也会出现.git
的隐藏文件。需要Win10设置下才能看到。
安装完Git后需要重启才能看到这种标记,但是不重启也能用。。。
Git Bash构建
上一种方式的底层就是Bash命令行实现的(毕竟是Linux之父的又一力作):
还是右键,选Git Bash Here,这个Bash用法、命令和Linux差不多。使用:
git init
即可构建本地仓库。
TortoiseGit构建
直接确定几次即可。。。
简单操作
提交
右键→TortoiseGit→添加。
确定后手动右键提交:
不写内容是不能提交的!!!
可以设置常用功能:
修改
修改后会出现这种标记。。。
右键可以查看日志。
功能不全,设置里开启还原后即可还原。
切换
右键→TortiiseGit里可以比较差异、重置版本之类的操作。没有就去设置里开启。
删除
删除文件后可以还原。
删除文件后可以提交,这种做法会记录为新版本。
也可以右键→TortoiseGit→删除并保留本地副本。这种做法会删除索引,后续不会对该文件进行版本控制。
添加整个项目
将项目文件夹拖入之前建好的路径,文件夹右击添加即可。某些不会变更的内容可以设置筛选(忽略掉),取消同步:
暂存区设计
类似购物时,可能会犹豫不决,并不能马上下定决心要不要买,于是出现了+购物车。缓存区也是这种思想,将多个版本的多个文件暂存起来,可以自由组合。
GitHub公共仓库
由于码云限制空间,Github公共仓库对个人不限制空间(但是所有人都可以下载,也可以配置密钥允许特定用户修改源码)。虽然外网比大中华局域网卡了点,但是可以咳。咳。咳。。。科学上网。。。也不是神马大问题。。。
建仓
当然先new一个再说:
吾等庶民也只能用public免费版。。。
配置SSH
Public是所有人都可读(可下载)的,但是有权限的用户才可写(修改代码)。
GitHub已经自动跳转并且给了命令告诉用户具体怎么做。。。照着做就好。。。
右键Git Bash:
ssh-keygen -t rsa
当然pub是公钥,另一个是私钥。。。
把公钥内容写进来(CV大法)。
同步
命令同步
出现了这种问题:
Please make sure you have the correct access rights
and the repository exists.
密钥错了,一大坨教程说需要需要重新生成密钥。。。删掉原先的密钥(.ssh文件、GitHub的密钥),重来一遍。。。
ssh-keygen -t rsa -C "这里写GitHub用户名"
用新密钥配置SSH后:
ssh -T git@github.com
还是不行。。。继续搜度娘,各种教程都是一大坨牛头不对马嘴的辣鸡。。。还是得自己解决问题。。。
仔细观察,是∵该文件夹只能commit给main???什么鬼???
明明其它文件夹都是默认提交给master:
果断换一个文件夹试试。。。
killer@DESKTOP-33S530V MINGW64 ~/Desktop/repository/reps2 (master)
$ git remote add origin git@github.com:killer-ColorfulTiger/respository_test2.git
killer@DESKTOP-33S530V MINGW64 ~/Desktop/repository/reps2 (master)
$ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 235 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:killer-ColorfulTiger/respository_test2.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
刷新GitHub页面:
完美!!!
SSH同步
右键Git同步:
点管理→网络,配置SSH路径(Git安装路径下的SSH.exe):
C:\Program Files\Git\usr\bin\ssh.exe
远端→URL填写:
git@github.com:killer-ColorfulTiger/respository_test2.git
Putty密钥选私钥:
点添加/保存,然后保存设置(由于之前已经有origin了,笔者改名叫origin1)。
出现了乌龟🐢旋转着被扔到文件夹的美景:
刷新后:
HTTPS同步
和上一步的操作很像,URL里写:
https://github.com/killer-ColorfulTiger/respository_test2.git
添加/保存后推送,会弹出网页,索要GitHub号和密码。。。填上就能用。。。
克隆
命令克隆
git clone git@github.com:killer-ColorfulTiger/respository_test2.git
如果忘了地址:
从这里可以找到。
在启动Git Bash的目录下克隆出了文件(和自己去GitHub下载的内容是一样的)。
TortoiseGit克隆
shift+右键,点Git克隆。
输入SSH协议的URL:
git@github.com:killer-ColorfulTiger/respository_test2.git
可怜的乌龟🐢又被旋转着扔到了文件夹:
同步成功!!!
冲突问题
多个人使用,难免∵交流不顺导致共用了版本号(但是内容不一致),这种情况后推送的一方会显示推送失败。。。后推送的一方需要拉取,在拉取到的文件夹中找到冲突的文件(不限于.java之类的源码)→手动解决故障并保存好源文件。之后在该文件夹右键→TortoiseGit→解决冲突。写好注释、重新提交后解决成功便可再次推送。这样便解决了冲突引起的不能顺利推送的问题。
转载:https://blog.csdn.net/qq_41990268/article/details/116999579