一.版本控制工具的作用
- 能够追踪全部代码的状态
- 能够进行版本之间的差异对比
- 能够进行版本回滚
- 能够协助多个开发者进行代码合并
二.常见的版本控制工具
1.cvs:基本退出了历史舞台
2.svn:中心化的版本控制工具,需要有一台中心服务器。
SVN又叫做集中式版本控制器。严重的依赖服务器端,当服务器端无法使用的时候,版本控制也就无法再使用了。
3.git: 分布式的版本控制工具, 中心服务器不再是必需的。
Git是目前世界上最先进的分布式版本控制系统。当这个系统的任何一个客户端出现问题的时候,都可以从另外的客户端(即使服务器无法使用)获取所有的代码。
4.hg: 纯 Python 开发的版本控制工具
5.Github: 依托 Git 而创建的⼀个平台,有独立的公司在运作。
备注:所有文本类的东西都可以交由版本控制工具来管理。
三.Git的历史
Git 最初由 Linus 为了维护 Linux 内核源码而开发。
Linus 当时因不堪忍受早期版本控制工具的各种问题,最终决定自己开发了⼀个,并且将它开源出来,供所有人使用。
历史详情可点击这⾥:全球最大同性交友平台的“⿊历史”
四.Git的安装
1.从Git官网上下载安装包:https://gitforwindows.org/
2.双击安装程序“Git-2.26.2-64-bit.exe”,显示截图如下:
3.点击“Next”,根据自己的情况,选择程序的安装目录。显示截图如下:
4.继续点击“Next”,除了最后一个不勾选,其他全部勾选。显示截图如下:
5.选择完之后,一直点击“Next”,显示截图如下:
注意:选择二者都有的话,会将windows中的find.exe 和 sort.exe工具覆盖,如果不懂这些,尽量不要选择。
6.选择完之后,一直点击“Next”后,点击“Install”,开始安装,截图显示如下:
7.安装完成之后,显示截图如下:
五.Git的使用
1.初始设置
git中有许多子命令,直接输入git,便可得到。
配置自己的账号和邮箱。
git config --global user.name '你的名字'
git config --global user.email '你的邮箱'
上面输入完后,git会在你的家目录里面产生一个文件。
这个gitconfig文件就是你本地的git全局配置。
2.基本操作
下面我在阿里云服务器上进行操作,Git Bash与之类似。
(1)ls -A:列出所有文件以及隐藏文件。
(2)git init:在本地初始化一个新的仓库,将提交的代码打包成一个镜像,放到这.git里来,历史版本也会存放进去。
(3)git status:查看当前仓库状态。
这里我们发现有许多是我们想忽略的,想忽略文件的做法:
(1)创建 .gitignore文件:touch .gitignore
(2)在里面添加你想忽略的文件名或者类型,如venv/、*.pyc、 *.log 等
(3)保存退出即可,不要将 .gitignore自身忽略掉
(4)git add:将文件添加到 “暂存区”,让文件被追踪。
(5)git commit:将暂存区中的文件提交到 “本地仓库”
(6)git diff:差异对比
(7)git checkout:代码还原/代码回滚
(8)git reset:取消文件的暂存状态
(9)git log:查看提交日志
再次修改client.py文件:
使用git log / git log --graph进行查看
如果这个版本错了,想回到上个版本,怎么办???
这里我们可以复制上一个版本的id,也就是上一个版本的版本号
再查看client.py文件,会发现已回滚
这里还有一种回滚方法:
快速回滚上一个版本: git checkout HEAD^
六.代码托管
1.进入GitHub官网进行注册登录。
2.创建远程仓库
3.使用git remote 来管理与远程仓库通信配置
- 设置项目 URL: git remote add origin https://github.com/YFater/chat.git
- 修改项目 URL: git remote set-url origin git@github.com:YFater/chat.git
4.git push: 将 “本地仓库” 的更新推送到 “远程仓库”,截图如下:
5.刷新页面即可发现代码已上传。
6.如果想将GitHub上克隆下来,可以使用git clone 。
git clone:将 “远程仓库” 完整的克隆到本地
在demo中ls没有文件,使用git clone后,会发现demo中有chat,chat被克隆了下来。
7.免密码登录(ssh登录)
由上面可知,我们每次需要输入用户名和密码才能进行登录,这样比较麻烦,我们可以通过另一种方式进行登录:ssh登录。
生成公钥和私钥:ssh-keygen,一直回车即可。
打开公钥,复制公钥:
将自己本地的key放到GitHub上,点击头像->Settings->SSH and GPG keys->New SSH key,将复制的公钥放进去。
密钥创建成功
点击Clone or dowmload,Use SSH,复制路径。
再使用git remote修改项目URL:
再次使用git push推送,这时就不需要用户名和密码:
8.git pull:将“远程仓库”的更新拉取到‘“本地仓库”
七.其他命令
1.git branch:创建分支(git branch 分⽀名)
git branch -l:将本地的分支列一个清单出来
git branch --delete 分支名:删除分支
使用git checkout YFater1切换到YFater1分支
2.git merge:合并分支(git merge 其他分支名)
3.git blame:检查每行代码最后一次是谁修改的(git blame 文件名)
4.取消对所有文件的跟踪:
git rm -r --cached . // 不删除本地文件
git rm -r --f . //删除本地文件
5.取消对某个文件的跟踪:
git rm --cached file_name.txt // 删除对file_name.txt的跟踪,但保留本地文件
git rm --f file_name.txt // 删除对file_name.txt的跟踪,但删除本地文件
八.用游戏的方式练习 Git
请点击 Learn Git Branching,尽情玩耍吧!!!