分布式版本控制git 集中式版本控制svn
SVN与Git的最主要的区别?
SVN是集中式版本控制系统,版本库是集中放在*服务器的,而干活的时候,用的都是自己的电脑,所以首先要从*服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到*服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有*服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
一:通过命令 git init 把这个目录变成git可以管理的仓库
新建完成后会出现.git 文件夹 这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。如下:
二:把文件添加到版本库中
首先要明确下,所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不列外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道。
第一步:使用命令 git add 123.txt添加到暂存区里面去。如下:
使用 git status 查看那些文件在暂存区里 123.txt 就是我们新加入的文件 未加入的文件为 .idea/ main.py
使用git add --all 可以把所有修改过的文件都放入暂存区
但在使用之前需要加上限制条件,避免出问题
vim .gitignore 新建文件 .gitignore 按 i 进入 esc + :wq退出
.idea/ 以他结尾的不要提交
*.pyc 以他结尾的不要提交
第二步:用命令 git commit告诉Git,把文件提交到仓库。
直接使用该命令会跳出这个界面 用来记录该文件的版本信息,按 i 进入 :wq 退出
如果不想进入界面编辑 使用 git commit -m "版本信息"
使用 git log 查看提交的版本信息
commit 后面的是版本号
但是我现在继续来改下123.txt内容,继续使用git status来查看下结果
上面的命令告诉我们 123.txt文件已被修改,但是未被提交的修改。
接下来我想看下123.txt文件到底改了什么内容,如何查看呢?
可以使用如下命令:git diff 123.txt 或者 git log -p 如下:
三:版本回退:
现在我已经对readme.txt文件做了三次修改了,那么我现在想查看下历史记录,如何查呢?我们现在可以使用命令 git log 演示如下所示:
git log 命令显示从最近到最远的显示日志
现在我想使用版本回退操作,我想把当前的版本回退到上一个版本,要使用什么命令呢?
git reset +前版本版本号 --hard
使用给git log 查看信息
但是现在我想回退到最新的版本,我们可以通过版本号回退,使用命令git reflog方法如下:
使用 git reset +前版本版本号(黄字) --hard 回滚版本
使用给git log 查看信息就可以看到成功回滚到最新版本
四:远程仓库。在了解之前,先注册github账号
git remote add origin https://gitee.com/Song12138/cjh 重命名网址为origin
git remote remove origin 删除重命名
git remote -v 查看映射关系
git push origin master 把本地master分支文件上传到仓库
git pull origin master 将线上的master分支文件拉取下来
进入自己的仓库点击 pull request 从自己的仓库上传到公共仓库
五:git 仓库克隆