企业网站建设费用定金怎么做账,怎么简单做网站排名,一级做爰网站,乐清网站定制公司文章目录 几个基本概念版本控制Git的由来分布式 vs 集中式GitSVN Git、GitHub、GitLab、GitWeb、Gitee的区别 动手进行版本控制初始化Git使用情景一#xff1a;开发新项目使用情景二#xff1a;在已有项目上开发设置代理 参考 几个基本概念
版本控制
在工作学习中#xff… 文章目录 几个基本概念版本控制Git的由来分布式 vs 集中式GitSVN Git、GitHub、GitLab、GitWeb、Gitee的区别 动手进行版本控制初始化Git使用情景一开发新项目使用情景二在已有项目上开发设置代理 参考 几个基本概念
版本控制
在工作学习中备份是一个十分重要的习惯只有经历了硬盘损坏才明白数据无价的道理。
回想过去自己的备份习惯通常是整个项目文件夹拷贝加上日期有时候会加上个版本号。然而这种方式虽然简单但却有着致命的缺点。首先没有对文件进行更改追踪就不能具体知道每个版本分别修改了什么常常出现找不到代码的情况其次整个项目拷贝通常占用较大的存储空间。个人开发者还勉强能够接受一旦涉及多人协同开发这种管理方式往往是不可行的。
Git作为各大企业使用的版本控制工具就像一个高级的时间机器不仅仅能够让你回溯过去查看历史甚至还能更改历史。
为了提高开发效率学习并掌握Git是十分有必要的。
Git的由来
话说Git和著名的Linux是同宗同源都是由Linus Torvalds开发的。21世纪初Linux在世界上引起了一波开源浪潮许多的开发者都向Linux提交代码当时代码管理的任务是由微软的BitKeeper工具来实现的。但本着开源的思想Linux开发者希望将 BitKeeper开源因此触犯了微软的利益结束了BitKeeper提供的服务。
这迫使 Linux 社区寻找或创建一个新的版本控制工具最终Linus Torvalds 用了两周时间开发了 Git一直流传至今成为当下最热门的分布式版本控制系统
分布式 vs 集中式
与分布式版本控制系统相对的还有集中式版本控制系统最经典的就是Git和SVN它们的差别如下
Git
完整的代码库每个参与者的机器上都有代码的完整拷贝。这不仅包括当前的代码快照还包括整个历史记录。 不依赖中央服务器虽然可以有一个“主”存储库供开发者推送更改但每个开发者的本地存储库都可以独立工作。 更强大的分支和合并DVCS通常提供更高级和灵活的分支和合并功能。 离线工作由于每个开发者都有完整的代码库因此他们可以离线工作并在稍后同步更改。
SVN
中央存储库所有的版本历史都存储在一个中央服务器上开发者通常只获取代码的最新版本。 完全依赖中央服务器如果中央服务器出现问题可能会暂时阻止开发者进行版本控制操作或者在最坏的情况下导致数据丢失除非有备份。 速度由于所有操作都需要与中央服务器通信某些操作可能会较慢。 需要网络连接开发者需要连接到中央服务器才能提交更改虽然本地工作可能仍然是可能的。
Git、GitHub、GitLab、GitWeb、Gitee的区别
GitHub全球最大的代码托管平台Gitee国内最大的代码托管平台因GitHub在国内较慢应运而生GitWeb轻量化的基于Web界面的Git存储库适用于个人搭建在服务器上GitLab与GitHub类似的代码托管平台相对于GitWeb有较好的权限管理功能适用于搭建在团队的服务器上Git以上这些平台都是基于Git工具
动手进行版本控制
实践出真知。这里以GitHub为例提供了两种最常见的情况下使用Git的方法。推荐在Windows环境下使用Git Bash
初始化Git
初始化在环境配置阶段仅需要完成一次在不更换电脑和不修改Github账户的情况下无需再操作。
初始化本地的git用户信息该信息只用于标记操开发者不用于身份验证
git config --global user.name Your Name
git config --global user.email Your Email建立安全连接建议使用SSHSecure SHeel的方式进行连接。首先在本地生成ssh key回车按照默认信息即可
ssh-keygen -t rsa -C Your Email添加ssh key到GitHubGitHub上依次点击头像-settings-SSH and GPG keys-New SSH keys
Git操作的对象通常是一个仓库因此每个项目工程都应该建立一个仓库而不建议一个仓库下放多个项目文件。
使用情景一开发新项目
该情景适用于在完成一个新项目的第一个版本后需要将该版本备份的情况。
在GitHub上新建一个远程仓库仓库名称尽量项目名称保持一致在项目下初始化一个本地仓库
git init将本地仓库链接远程仓库
git remote add origin repository-url修改主分支为main否则将会默认添加到master分支
git branch -m main将项目代码添加到暂存区
git add .提交更改至本地版本库
git commit -m Your commit message here拉取远程仓库到本地进行合并
git pull origin main注意如果提示 fatal: refusing to merge unrelated histories 是因为本地仓库和远程仓库的历史修改信息不同步此时远程仓库可能不为空。解决方案是不考虑他们的历史是否有关联由于是新仓库该操作合理
git pull origin main --allow-unrelated-histories推送到main分支
git push origin main回到GitHub即可看到新提交的文件
使用情景二在已有项目上开发
该情景适用于在已有项目上继续开发新的功能或者基于已有项目进行学习和开发。
由于克隆的仓库中本身存在git仓库因此不需要使用git init来初始化一个仓库
从远程仓库中克隆一个到本地仓库
git clone repository-url进入仓库目录
cd repository-name切换到要推送的分支如果你不在那里
git checkout main执行所需的代码更改并将它们添加到暂存区
git add changed-files提交更改至本地版本库
git commit -m Your commit message here拉取最新的远程更改以确保没有冲突可选但推荐
git pull origin main推送更改到远程的main分支
git push origin main设置代理
打开SSH配置文件没有就新建一个
touch ~/.ssh/config在配置文件中添加代理这里我用的是socks代理开启v2ray后转发至10808端口
Host github.com
ProxyCommand connect -S 127.0.0.1:10808重启git后生效即可加速下载
参考
https://git-scm.com/