版本控制器--Git(注意版本号)
什么是版本控制器?
版本控制器就是管理项目的工具,用于记录和存储项目的更新迭代和备份等信息,以更好的控制项目的生命周期,有效减少风险。
如果是团队开发同一个项目,版本控制器可以整合代码,提醒代码的冲突问题
集中式和分布式版本控制器
集中式版本控制器
代表:svn
只有一个集中管理的服务器,保存所有文件的修改,多个客户端连接这个服务器,提交和更新文件
问题:
如果服务器被黑或者出现了异常,代码可能丢失,开发进度将会被拖延,而且必须联网才能正常工作
分布式版本控制器
代表:git
Git只关心文件数据整体变化,保存每次项目的快照,而且是分布式的,每一天电脑都可以作为服务器,也可以同时开发(客户端和服务端整合)
git工作流程
常用命令
cd
cd ..
ls
ll
编辑文件
vi
i 进入编辑
esc 退出编辑
:wq 保存退出
创建全局用户
首先得创建全局用户,否则不让commit
git config --global user.name
git config --global user.email
全局配置文件在C:Users用户文件夹.gitconfig新建用户信息,在所有仓库下都可以使用,创建的用户就在里面
创建仓库用户-局部用户
git config user.name
git config user.email
局部配置文件在.git的config里面
.git就是进行版本控制的核心
git四大核心命令
git init 初始化仓库(.git)
git add 添加改变到暂存区
git status 查看当前仓库的状态
git commit -m ''把暂存区的的变化提交到版本库(生成版本号)
git add .
git status -s 简约显示
回滚
工作区
git checkout filename
git checkout .
放弃文件的修改,相对于上次的版本,只针对于文本内容的修改,新建文件等无效
暂存区
git reset HEAD .
撤销所有暂存区的提交
git reset 文件名
撤销某一文件的暂存区提交
版本库
查看历史版本
git log
git reflog
精简模式显示
git log --pretty=oneline
查看时间点之前|之后的日志:
>: git log --after 2018-6-1
>: git log --before 2018-6-1
>: git reflog --after 2018-6-1
>: git reflog --before 2018-6-1
查看指定开发者日志
>: git log --author author_name
>: git reflog --author author_name
回滚到指定版本:
回滚到上一个版本:
>: git reset --hard HEAD^
>: git reset --hard HEAD~
回滚到上三个版本:
>: git reset --hard HEAD^^^
>: git reset --hard HEAD~3
回滚到指定版本号的版本:
>: git reset --hard 版本号
>: eg: git reset --hard 35cb292
但是回退版本后,git log是看不到回退之前的版本的,如果想回退之前的版本,要确保此窗口没有关闭,然后根据之前打印的版本号回退执行下面命令,版本号写一部分就行
查看区别和删除
命令可以查看工作区和版本库里面最新版本的区别
git diff HEAD -- zx.txt
删除文件,最后也要提交
git rm
过滤文件 .gitignore
在仓库根目录下创建该文件
过滤文件内容
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤(/代表根目录)
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交(python的包)
django
# 过滤条件一定要在第一次提交版本库之前完成
# 各类编辑器产生的配置文件
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# 日志文件
*.log
*.logger
# 本地测试文件
scripts
# 导包缓存文件
*.pyc
__pycache__
远程仓库
前提
1.本地有仓库
2.本地配置了用户信息
3.有ssh密钥
4.配置了远程仓库的源
创建公钥
官网:https://gitee.com/help/articles/4181#article-header0
创建好之后记得在远程仓库配置好,在user文件夹内的ssh内
ssh和https
ssh会自动提交本地的ssh密钥
https需要账号密码
remote 源操作
一般在远程仓库创建好之后就会直接提示源的信息
1)查看仓库已配置的远程源
git remote
git remote -v
2)查看remote命令帮助文档
git remote -h
3)删除远程源
git remote remove 源名
git remote remove origin
4)添加远程源
git remote add 源名 源地址
git remote add orgin git@*.git
git remote add origin git@gitee.com:ZX125/ZX_jy.git
配置完成,可以提交到远程
克隆一次
后面
先拉(处理冲突)在拉(没有冲突的话,交)
后提交
#克隆
git clone git@gitee.com:ZX125/ZX_jy.git
#提交
git push -u origin master
#更新
git pull origin master
乱码问题
[gui]
encoding = utf-8
git config --global core.quotepath false
git states 乱码
冲突问题-原理
方框内的是版本号,冲突的原理就是版本号
1.如果本地的版本号(1-a)线上版本号是(1-a-b)就直接更新到(1-a-b)
2.如果本地的版本号(1-a)线上版本号是(1-b),版本号冲突,解决冲突后提交,版本(1-a-b-c)
分支操作
创建分支就相当于复制一份当前分支,作为独立的分支,不会相互影响
git合并(merge)
git合并其实也没有什么东西,就是类似于本地和线上master的操作是怎么样,那么本地两条分支之间的操作就是什么样的
git merge zx 就是把zx的修改同步到本分支
1.创建分支
>: git branch 分支名
2.查看分支
>: git branch
3.切换分支
>: git checkout 分支名
4.创建并切换到分支
>: git checkout -b 分支名
5.删除分支
>: git branch -d 分支名
6.查看远程分支
>: git branch -a
7.合并分支
>: git merge 分支名