目录
- 版本控制、GIT以及SVN
- 常见的版本控制方法
- 本地版本控制
- 集中式版本控制
- 分布式版本控制
- SVN与Git的区别
- 下载与安装Git
- 安装:
- Git环境配置
- Git必要的配置
- Git的基本理论(核心)
- Git项目搭建
- 创建目录
- git文件操作
- 忽略文件
- 使用码云(gitee)
- 辅助学习
- 常用的Linux命令
版本控制、GIT以及SVN
核心思想:控制版本,新的版本要迭代,老的版本要保存
版本控制的优势:
- 实现跨区域多人协同开发
- 追踪和记载一个或者多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工作量
- 并行开发、提高开发效率
- 跟踪记录整个软件的开发过程
- 减轻开发人员的负担,节省时间,同时降低人为错误
常见的版本控制工具:
- Git
- SVN ( Subversion )
- CVS ( Concurrent Versions System )
- Vss ( Micorosoft Visual SourceSafe )
…
常见的版本控制方法
本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS
集中式版本控制
代表:SVN
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
分布式版本控制
代表:Git
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
SVN与Git的区别
下载与安装Git
windows下载地址
直接选择稳定版的下载即可
安装:
选择安装位置,可以选择自己的环境
选择Git默认的编辑器,选择自己常用的就行
Git环境配置
下载好之后会发现有三个应用Git Bash、Git CMD、Git GUI
Git Bash:unix与Linux风格的命令行,使用最多,最推荐
Git CMD:windows-cmd风格的命令行
Git GUI:图形界面的Git,不建议使用
由于我们需要使用Git Bash所以需要对Linux有一定了解,下面提供了一些基本的Linux的命令
Git必要的配置
所有的配置文件都保存在本地
git config -l # 查看配置
git config --system --list # 查看系统配置
git config --global --list # 查看本地配置(主要包含的使用者的账户和密码)
系统配置和用户配置都是存在Git文件下的配置项文件:
可以在Git目录下搜索gitconfig查看自己的系统配置:
用户目录在C盘下
了解了配置项,我们需要用命令行进行用户项配置:
git config --global user.name “用户名”
git config --global user.email “邮箱地址”
此时可以查看C盘下用户配置文件,查看修改情况。
Git的基本理论(核心)
Git有四个区域:
- workspace:工作区,平时存放代码的地方
- index/stage: 暂存区,用于临时存放改动,实际上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最近放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是项目组中的一台电脑用于远程数据交换
git的工作流程一般是这样的:
1.在工作目录中添加、修改文件;
2.将需要进行版本管理的文件放入暂存区;
3.将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:modified-已修改,staged-已暂存,commiteed-已提交
Git项目搭建
工作目录(workspace)一般就是希望通过Git帮助你进行文件夹管理,可以是你的项目目录,也可以是空目录,但是不建议出现中文。
日常使用需要记住如下6个命令
重点是push、commit和add
创建目录
本地仓库搭建:git init,执行完git init会出现一个.git文件
或者使用git clone的方式进行创建
这种方式是克隆远程目录,将远程服务器上的仓库完全镜像一份到本地
git clone url
git文件操作
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在不想要提交的文件,或者要提交的文件没提交上。
- Untracked:未跟踪,此文件在文件夹中,但是并没有加入到git库中,不参与版本控制。通过
git add
状态变成Staged
. - Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中的完全一致。这种类型的文件一般有两个去处,如果它被修改,会变成
Modified
.如果使用git rm
移除版本库,则成为Untracked
文件。 - Modified:文件已被修改,仅仅是修改,并没有进行其他操作。这个文件也有两个去处,通过
git add
进入暂存staged
状态,使用git checkout
,则丢弃修改过,返回到unmodify
状态,这个git checkout
即从库中取出文件,覆盖当前修改! - Staged:暂存状态,执行
git commit
则将修改同步到库中,这时库中的文件和本地文件又变成一致,文件未Unmodify
状态,执行git reser HEAD filename
取消暂存,文件状态变成Modified
.
在刚才初始化好的文件中检查文件状态
git status
显示没有文件被跟踪,我们在该文件夹下创建一个文件(名为main.js),继续使用status检查状态,发现main.js未被跟踪。
此时我们使用命令
git add . # 将文件添加到暂存区中(添加所有文件到暂存区)
此时发现main.js进入待提交的状态。
此时利用commit命令提交到本地仓库
git commit -m “消息内容” #提交暂存区中内容到本地仓库 -m是提交信息
忽略文件
有些时候我们不需要把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件。
所以我们需要在主目录下简历“.gitignore”文件,此文件有如下规则:
- 忽略文件夹中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号( ?)代表一个字符,方括号([abc])代表可选字符范围大括号({string1,string2,…})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
例如
*.txt #忽略所有.txt结尾的文件
!lib.txt # 但是lib.txt除外
/temo # 忽略项目跟目录下的TODO文件,不包括其他目录temp
build/ # 忽略build/目录下的所有文件
doc/*.txt #忽略doc/notes.txt 但是不会忽略doc/server/arch.txt
使用码云(gitee)
设置本机绑定SSH公匙,实现免密码登录!
首先通过git命令行获取密钥
通过命令 ssh-keygen 生成 SSH Key
ssh-keygen -t ed25519 -C “Gitee SSH Key”
其中 -t key 类型
其中 -C 注释
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/git/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/git/.ssh/id_ed25519
Your public key has been saved in /home/git/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:ohDd0OK5WG2dx4gST/j35HjvlJlGHvihyY+Msl6IC8I Gitee SSH Key
The key's randomart image is:
+--[ED25519 256]--+
| .o |
| .+oo |
| ...O.o + |
| .= * = +. |
| .o +..S*. + |
|. ...o o..+* * |
|.E. o . ..+.O |
| . . ... o =. |
| ..oo. o.o |
+----[SHA256]-----+
中间遇到停顿直接回车,一共三次回车。
2.查看生成的SSH公钥和私钥:
ls ~/.ssh/
输出:
id_ed25519 id_ed25519.pub
- 读公钥
cat ~/.ssh/id_ed25519.pub
输出,如:
ssh-ed25519 AAAA***5B Gitee SSH Key
或者直接去C盘用户目录下找到.ssh文件,找到相关的id_ed25519.pub,用记事本打开也能得到一段很长的密钥。
新建git仓库
辅助学习
常用的Linux命令
cd …:(中间有空格哈)回到上一级目录
cd 路径名:路径跳转
pwd:显示路径
clear:清除屏幕
ls:列出当前目录下所有文件
touch:新建文件(touch main.py:在当前目录下新建一个名为main.py的文件)
rm:删除文件 (rm main.py:移除main.py文件)
mkdir:创建一个目录(文件夹mkdir test2:创建一个test2的目录)
rm -r:删除目录(rm -r test2:删除刚刚创建的test2目录)mv:移动文件(move main.py test2:将main.py移动到test2中)
reset:重新初始化终端
history:查看历史命令
help:查看某个命令的帮助
exit:退出