赞
踩







开源的分布式版本控制系统,快速高效处理从很小到很大的项目版本管理
SVN基本差异版本控制,存储的是一组基本文件和每个文件随时间逐步积累的差异
- 好处:节省磁盘空间
- 缺点:
- 耗时、效率低
- 每次切换版本的时候,都需要在基本的文件基础上,应用每个差异,从而生成目标版本对应的文件

Git快照是在原有文件版本基础上重新生成一份新的文件,类似于备份,为了效率,如果文件没有修改,Git不在重新存储该文件,而是保留一个链接指向之前存储的文件
- 缺点:占用磁盘空间较大
- 优点:版本切换时候非常块,因为每个版本都是完整的文件快照,切换版本时候直接回复目标版本的快照即可



- 工作区的文件被修改了,但是还没放在暂存区,就是已修改的状态
- 但是文件已经修改放在暂存区,就属于已暂存状态
- 如果Git仓库中保存着特定版本的文件,就属于已提交状态

- 工作中修改文件
- 将想要下次提交的更改进行暂存
- 提交更新,找到暂存区的文件,将快照永久性存储Git仓库
Git (git-scm.com)
https://git-scm.com/
安装之后会存在的右键点击效果

- git config --global user.name "名字"
- git config --gloabl user.email "email地址"


- # 查看所有全局配置
- git config --list --gloabal
- # 查看指定的全局配置
- git config user.name
- git config user.email

- #想要打开git config命令的帮助手册(网页版本)
- git help config
- #简单语法
- git config -h
获取Git仓库的两种方式:(先得有仓库才能完善后面操作):本地创建库,从远程克隆库
- 将尚未进行版本控制的本地目录转换为Git仓库
- 从其他服务器克隆一个存在的Git仓库
- 打开Git Bush
执行git init :当前工程文件夹转为Git仓库
之后会存在一个git仓库文件夹:这是隐藏文件,需要将隐藏文件夹显示打开
工作区的四种状态


精简方式查看文件状态
git status -s (一般使用此方法:与下面方法相同)
git status --short
以下是会出现的结果(后面就是操作的文件):
- ? ? : 表示文件未被跟踪
- M : 表示文件被修改
- A : 表示文件有新增文件
- D : 表示从git仓库中删除了哪个文件
跟踪文件:git add 文件名.文件后缀名




对已经提交的文件进行修改
- 修改index.html文件
- 运行git status
- 运行git status -s


暂存已修改的文件:git add 文件名.文件后缀名
工作区中的index.html文件已经被修改,如果要暂存这次修改,再次使用git add命令,这个命令是多功能命令,主要三个功效:

再次提交已经暂存的文件:git commit -m “提交信息”
即可将在那存取中记录index.html快照(原有版本生成的新的文件),提交到Git仓库中进行保存

暂存区替换工作区被修改文件 git checkout 修改的文件名.后缀名
- 操作结果:所有修改丢失,并且无法恢复,危险性比较高
- 本质就是用git仓库中文件覆盖工作区中指定文件




向暂存区中一次性添加多个文件: git add.
这里修改了html文件并且新增了js文件和css文件



基础操作总结:
取消暂存的文件:


跳过使用暂存区域:git commit - a -m"描述信息"
Git标准的工作流程是:工作区 -> 暂存区 ->Git仓库
简化后的工作流程:工作区--> Git仓库

从Git仓库中移除文件


git忽略文件 .gitnore配置文件

- #开头的是注释
- /开头的是防止递归
- 结尾/的是目录
- !开头的标识取反
- 使用glob模式进行文件和文件夹的匹配(指简化了的正则表达式)
glob模式
- 星号*匹配零个或者多个字符
- [abc] 匹配任何一列在方括号中的字符(此方案匹配一个a或匹配一个b或匹配一个c)
- 问号?只匹配一个任意字符
- 在方括号中使用短划线分割两个字符,标识所有在这两个字符范围内都可以匹配(比如[0-9]标识匹配所有的0-9的数字)
- 两个星号**匹配任意中间的目录(比如a/**/a可匹配a/z、a/b/z或者a/b/c/z)
- #忽略 所有.a文件
- *.a
-
- #但是跟踪 lib.a,即使前面忽略了.a文件
- !lib.a
-
- #只忽略目录下的TOOD文件,但是不忽略subdir/TODO
- /TODO
-
- #忽略任何目录下名为build文件
- build/
-
- #忽略doc/notes.txt但是不忽略doc/server/arch.txt
- doc/*.txt
- #忽略doc/ 目录机器所有子目录下的.pdf文件
- doc/**/*.pdf

例子: 创建gitnor文件之后通过文本编辑器设置忽略的文件


查看提交历史: git log
包含作者、邮箱、时间、提示信息
q可以退出当前查看




版本切换

回到第一个版本:使用单独的版本号


回到之前的版本


什么是开源

什么是开源协议 :
开源并不意味完全 没有限制,为了限制使用者的使用范围和保护作者的权力,每个开源项目都应该遵守开源许可协议
五种开源许可协议
开源托管平台:
GitHub访问方式:
基于Https将git本地库上传到远程库(首次)
修改本地文件再上传 (可以直接使用命令进行上传)
这里已经不是第一次上传
基于SSH key将git本地库上传到远程
1. 生成SSH key
ssh-keygen -t rsa -b 4096 -C "email"
连续三次回车,可以在c:\user\用户文件夹\.ssh目录中生成id_rsa和id_rsa.pub两个文件
2. 配置SSH key
打开id_rsa.pub文件并全部复制
- 登录github:头像->Setting-> SSH and GPG Keys -> New SSH key
- 将文件中内容粘贴到Key对应文本框
- title文本框填写一个名称,标识key从何而来
3. 检测SSH key是否配置成功
gitbush中测试: ssh -T git@github.com
输入yes:
4. 将本地库上传到GitHub
在当前git仓库目录中将文件上
远程仓库的使用
将远程仓库克隆到本地:git clone 远程仓库地址
![]()
1. 什么是分支?
相当于平行宇宙
当前平行宇宙一个学git一个学SVN
在某个时间点,两个平行宇宙合并了,结果你即会了Git也学会了SVN
2. 分支在实际开发中的作用
在进行多人协作的时候,为了防止互相干扰,提高协同开发,每个开发者都基于分支进行项目开发
3. master(main)主分支
初始化git本地仓库时候,git默认就创建了main主分支
主分支:用来保存和记录整个项目已经完成的功能代码(删除和合并都是在主分支进行操作)
不允许直接在master主分支上修改代码,因为这样的风险太高,容易导致这个项目崩溃
4. 功能分支
功能分支:专门用来开发新功能的分支(功能实现完成之后会合并到主分支,)
5. 查看分支列表
git branch
- 分支前面的*标识所处的分支
6. 创建新的分支
git branch 新分支名字
7. 切换分支
git checkout 切换的分支名(注意类似于撤销对文件的修改)
8. 分支的快速创建和切换
git checkout -b 分支名称
9. 合并分支
- 切换到当前主分支
git checkout main
- 运行命令将分支合并到主分支
git merge 分支名
可以查看文件的内存占比判断是否已经进行了切换
10. 删除分支
git branch -d 分支名称
11. 分支冲突合并
两个不同分支对同一个文件进行不同的修改,git无法干净的的合并
此时需要打开这些包含冲突的文件手动解决冲突
打开vscode当前修改的的文件会存在git操作之后的选择:
- 选择哪一次更改(直接选择上方到的操作按钮)
解决完合并冲突之后再次进行上传
12. 本地分支推送到远程仓库
git push -u origin 远程仓库名 (本地分支名:远程分支名)
- 如果想要本地分支名字和远程库分支名一样,就只需要一个本地分支名
分支名不同
git push -u origin payment:pay
分支名相同
git push -u origin payment
第一次推送分支需要带-u参数,此后可以使用git.push推送代码到远程分支
13. 查看远程仓库中所有分支列表
git remot show 远程仓库名
14. 远程分支操作
14-1 远程跟踪分支
目的:从远程库将远程分支下载到本地仓库中
#从远程仓库中把对应的远程分支下载到本地仓库,保持本地分支和远程分支名称相同 git checkout 远程分支的名称 #实例:pay就是远程库名字 git checkout pay #从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名 git checkout -b 本地分支名称 远程仓库名称/远程分支名称 #实例 git checkout -b payment origin/pay
14-2 拉取远程分支最新代码
git pull
14-3 删除远程仓库分支
git push origin --delete 远程分支名称
- 远程删除没有本地删除:本地删除方式
- 强制删除
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。