大家好,又见面了,我是你们的朋友全栈君。
集中化的版本控制系统诸如 CVS,svn 以及 Perforce 等,都有一个单一的集 中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到 这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的 标准做法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3N91NVg8-1613530352926)(G:\GG_Save\git\git001.png)]
这种做法带来了许多好处,现在,每个人都可以在一定程度上看到项目中的其 他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集 中化的版本控制系统; 要远比在各个客户端上维护本地数据库来得轻松容易 事分两面,有好有坏。这么做最显而易见的缺点是中央服务器的单点故障。 如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同 工作。 (并不是说服务器故障了就没有办法写代码了,只是在服务器故障的情况下,编写的 代码是没有办法得到保障的.试想 svn 中央服务器挂机一天.你还拼命写了一天代 码,其中 12 点之前的代码都是高质量可靠的,而且有很多闪光点.而 12 点之后的代 码由于你想尝试一个比较大胆的想法,将代码改的面目全非了.这样下来你 12 点之 前做的工作也都白费了 有记录的版本只能是 svn 服务器挂掉时保存的版本!) 要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就会 有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录,而被 客户端偶然提取出来的保存在本地的某些快照数据就成了恢复数据的希望。但这 样的话依然是个问题,你不能保证所有的数据都已经有人事先完整提取出来过。 只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。
Git 是目前世界上最先进的分布式版本控制系统。同生活中的许多伟大事件一样,Git
诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝
大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002
年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维
护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结
束,他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux
的缔造者 Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才
不至于重蹈覆辙。他们对新的系统制订了若干目标:
分支切换速度快 容量小(压缩) 简单的设计 完全分布式
对非线性开发模式的强力支持(允许上千个并行开发的分支)
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设
定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理
系统可以应付各种复杂的项目开发需求。
一般在新的系统上,我们都需要先配置下自己的 Git 工作环境。配置工作只需一 次,以后升级时还会沿用现在的配置。当然,如果需要,你随时可以用相同的命令修 改已有的配置。 Git 提供了一个叫做 git config 的命令来配置或读取相应的工作环境变量而正是由 这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放 在以下三个不同的地方:
/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 gitconfig 时用 –system 选项,读写的就是这个文件。 (全局操作系统)
~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 –global 选项,读写的就是这个文件。(当前用户)
.git/config 文件:当前项目的 Git 目录中的配置文件(也就是工作目录 中的 .git/config 文件)这里的配置仅仅针对当前项目有效。 每一个级别的配置都会覆盖上层的相同配置(当前项目 优先级最高)
第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每
次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一
起被永久纳入历史记录:
$ git config --global user.name "mingmadahuofo"
$ git config --global user.email 3200298158@qq.com
要检查已有的配置信息,可以使用 git config --list 命令
删除配置信息 git config --global --unset user.email
git 区域
工作业务操作流程
1工作区域
本地项目代码区域 -- 沙箱环境(随便修改删除)
2暂存区域
暂时存放项目代码
3版本库
实际版本项目代码
git 本质是个数据库 键值对方式
git 对象
git 对象
树对象
提交对象
这个情况一般出现在进入公司后,会由主管给你创建好git项目仓库,然后把地址给你。让你的项目进行提交。或者 是进行了一半的公司项目,把地址给你让你接手别人的项目。让你提交代码。
这里都会给出教程
登录github 后点击左上角的github小猫标志
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BNUAGYHW-1613530352995)(G:\GG_Save\git\git000.png)]
然后点击new
然后输入仓库名称
选择增加md文件
选择标准规范
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QrOjS6sv-1613530353009)(G:\GG_Save\git\git006.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KRTbsQXR-1613530353014)(G:\GG_Save\git\git007.png)]
创建完成之后
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e8wEqDpF-1613530353019)(G:\GG_Save\git\git008.png)]
至此我们上一步模拟了 公司创建账号地址仓库后会给我们一个地址,这个就是我们以后的代码提交的仓库了。一般情况下,这个是公司领导给的。
例如:我们上面的地址为:https://github.com/mingmadahuofo/GG_web
这个就是我们的项目地址
拿到准备条件后我们开始本地初始化
创建文件夹 在g盘创建 G:\GG_Save
在这个文件夹中右键选择git bash here 打开 git 命令窗口
然后开始初始化配置自己的项目文件
要检查已有的配置信息,可以使用$ git config --list 命令
删除配置信息$ git config --global --unset user.email
git config --global user.name "你的名字或昵称"
git config --global user.email "你的邮箱"
记得必须带 ""
git config --global user.name "mingmadahuofo"
git config --global user.email "3200298158@qq.com"
3200298158@qq.com
如上图
git init (必须执行)
如果是github 上面没有这个仓库 需要初始化,如果是已经建好的仓库
现在不需要这一步,直接进行第6步骤
初始化完毕会出现.git 的文件
git remote add origin <你的项目地址> //注:项目地址形式为:https://gitee.com/xxx/xxx.git或者 git@gitee.com:xxx/xxx.git
或者
git clone <项目地址>
我们的完整命令
git clone https://github.com/mingmadahuofo/GG_web
可以看到,我们已经克隆下来项目了 。 然后把我们创建好的文件夹 放进去
把demo 和pdf 和tymd都放进去
然后在创建index2.html 文件进去
我们在在当前的文件夹下进行新建 index2.html
从gitee 上面进行更新的操作, 这个操作一般是上班的第一件事情,以保持 项目的最新同步
# 刚才下载项目的时候是最新的了,从服务器下更新项目,因为已经clone过,所以不需要再更新
git pull origin master
首先使用git status 命令查看当前项目修改情况
然后使用 git add <file> 进行添加操作 这个file 指的是文件的路径
使用 git commit -m "对更新的说明" 添加注释
推送到远端仓库码云上,项目大的话,时间会久些
git push origin master
我们看下现在我们的项目文件
然后我们通过命令进入当前文件夹
G:\GG_Save\GG_web>git status
On branch main
Your branch is up to date with 'origin/main'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
index2.html
nothing added to commit but untracked files present (use "git add" to trac
G:\GG_Save\GG_web>git add index2.html
G:\GG_Save\GG_web>git commit -m"index2"
[main 91719f1] index2
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index2.html
G:\GG_Save\GG_web>git push origin master
error: src refspec master does not match any
error: failed to push some refs to 'https://github.com/mingmadahuofo/GG_we
G:\GG_Save\GG_web>git push origin main
fatal: TaskCanceledException encountered.
已取消一个任务。
Username for 'https://github.com': 3200298158@qq.com
Password for 'https://3200298158@qq.com@github.com':(输入密码的地方)
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 304 bytes | 33.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/mingmadahuofo/GG_web
e01694c..91719f1 main -> main
G:\GG_Save\GG_web>
留心,在这里,我们遇到了2个问题:
第一 我们进行提交项目的时候
git push origin master
提交失败了,原因是 自2020年10月1日起,在GitHub平台上创建的所有源代码存储库都将默认命名为 main ,而非原本的 master 。以前创建的仓库还是master
所以我们的提交代码变为
git push origin main
第二 git操作是出现Username for ‘https://github.com’:的验证失败问题
Username for 'https://github.com': 3200298158@qq.com (这里填写github的注册邮箱地址)
Password for 'https://3200298158@qq.com@github.com':(输入注册密码的地方,是黑色不显示输入)
然后我们
把index2.html更改为index3.html 然后推送
G:\GG_Save\GG_web>git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: index2.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
index3.html
no changes added to commit (use "git add" and/or "git commit -a")
G:\GG_Save\GG_web>git rm index2.html
rm 'index2.html'
G:\GG_Save\GG_web>git add index3.html
G:\GG_Save\GG_web>git commit -m "update 2 or 3"
[main cc7b344] update 2 or 3
1 file changed, 0 insertions(+), 0 deletions(-)
rename index2.html => index3.html (100%)
G:\GG_Save\GG_web>git push origin main
Logon failed, use ctrl+c to cancel basic credential prompt.
Username for 'https://github.com': 3200298158@qq.com
Password for 'https://3200298158@qq.com@github.com':
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 246 bytes | 41.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/mingmadahuofo/GG_web
91719f1..cc7b344 main -> main
G:\GG_Save\GG_web>
然后github的文件修改成功
git push操作每次都需要输入账号密码
解决方案
第一步:
执行如下命令
git config --global credential.helper store
会在你本地生成一个文本,上边记录你的账号和密码。当然这些你可以不用关心。
第二步
git push
这次同样需要输入账号密码
此次完成之后,以后都不用重复输入了
G:\GG_Save\GG_web>git rm index0.html
rm 'index0.html'
G:\GG_Save\GG_web>git commit -m"del 0 "
[main 54b532e] del 0
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 index0.html
G:\GG_Save\GG_web>git push origin main
fatal: TaskCanceledException encountered.
已取消一个任务。
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 212 bytes | 26.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/mingmadahuofo/GG_web
31da0a1..54b532e main -> main
G:\GG_Save\GG_web>
11.仓库中提交文件夹
在仓库中的文件夹中创建文件,提交文件就会把文件夹提交上去
essing objects: 100% (2/2), done. Writing objects: 100% (2/2), 212 bytes | 26.00 KiB/s, done. Total 2 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. To https://github.com/mingmadahuofo/GG_web 31da0a1…54b532e main -> main
G:\GG_Save\GG_web>
11.仓库中提交文件夹
在仓库中的文件夹中创建文件,提交文件就会把文件夹提交上去
# 5.总结
### 至此git的仓库创建,仓库拉取到本地,文件的添加修改删除 提交已经完成。其中遇到的各类问题也一一做了整理规划
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160231.html原文链接:https://javaforall.cn