day-88Git
Git(版本控制器)
版本控制器:
可以管理编写的代码的仓库(文件夹),可以记录对仓库中所有被监测文件的任意操作
目的:
方便程序员完成代码整合,完成协同开发
特点:
分布式集群,多分支管理
svn与git区别图:
多分支图:
Git工作流程图
安装Git
1.下载对应版本:https://git-scm.com/download
2.安装git:在选取安装路径的下一步选取 Use a TrueType font in all console windows 选项
Git的使用
1.搭建本地git仓库 将已有的文件夹作为git仓库 >: cd 目标文件夹内部 >: git init 在指定目录下创建git仓库 >: cd 目标目录 >: git init 仓库名 2.配置操作git的用户信息(明确谁提交的,有局部的优先采用局部的,其次是全局的) 当前仓库:局部 >: git config user.name '用户名' -- 用户名 >: git config user.email '用户邮箱' -- 用户邮箱 所有仓库:全局 >: git config --global user.name '用户名' >: git config --global user.email '用户邮箱' 3.常用指令 a.查看仓库状态 当仓库中有文件增加、删除、修改,都可以在仓库状态中查看 >: git status -- 查看仓库状态 >: git status -s -- 查看仓库状态的简约显示 b.工作区操作( 空文件夹不会被git记录) 撤销工作区操作:改、删 >: git checkout . -- 文件全部回滚,如改、删除操作,回滚的状态以版本库为基准 >: git checkout 文件名 -- 指定文件回滚 c.工作区内容提交到暂存区 >: git add . -- 添加项目中所有文件 >: git add 文件名 -- 添加指定文件 d.撤销往暂存区提交:add操作状态的撤销(回到工作区) >: git reset HEAD . -- 撤销所有暂存区的提交 >: git reset 文件名 -- 撤销某一文件的暂存区提交 e.提交暂存区内容到版本库 git commit -m "版本描述信息" f.撤销版本库提交:版本库的回滚 查看历史版本: >: git log >: git reflog 查看时间点之前|之后的日志: >: 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~1 回滚到上三个版本: >: git reset --hard HEAD^^^ >: git reset --hard HEAD~3 回滚到指定版本号的版本: >: git reset --hard 版本号 >: eg: git reset --hard 35cb292
过滤文件(版本库还没创建就要创建过滤文件,并且过滤文件不需要过滤)
1.在仓库根目录下创建.gitignore.隐藏文件
2.文件与文件夹均可以被过滤
3.文件过滤语法
文件或文件夹名:代表所有目录下的文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
目录/文件或文件夹名:代表特定目录下的文件或文件夹被过滤
*可以出现在任何位置,代表模糊匹配
Git线上操作
创建项目:
git本地与云仓库同步
采用 https协议 或 ssh协议 与远程git仓库通信提交提交代码(一般都是项目负责人完成) 1. https协议方式,无需配置,但是每次提交都有验证码云账号密码 git remote add origin https://gitee.com/doctor_owen/luffy1.git # 配置远程源 git push -u origin master # 提交本地仓库到远程源 2. ssh协议,需要配置,配置完成之后就可以正常提交代码 git remote add origin git@gitee.com:doctor_owen/luffy1.git # 配置远程源 git push -u origin master # 提交本地仓库到远程源 3.origin远程源的源名,可以自定义,后面跟地址;master是分支名,是默认的主分支 4.查看源及源链接信息 git remote git remote -v 删除源链接 git remote remove 源名字
GIt本地分支操作
1.创建分支(在主分支创建分支,版本库会拷贝相同的数据给分支,但不同分支文件是相互独立的,也就是操作文件不相互影响) git branch 分支名 2.查看分支 git branch 3.切换分支 git checkout 分支名 4.创建并切换到分支 git checkout -b 分支名 5.删除分支 git branch -d 分支名 6.查看远程源分支 git branch -a
注:相同的分支只能往相同的分支提交,但拉取不受限制,
当本机提交一个分支给云仓库,云仓库没有这个分支时会自动创建这个分支
开发者加入Git项目组
1.生成本机的SSH公钥 ssh-keygen -t rsa -C "owen@163.com" 2.添加开发者提供的公钥到个人公钥,并拷贝远程仓库SSH地址 SSH地址:git@gitee.com:doctor_owen/luffy.git 3.在本机任意合适位置clone远程仓库到本地(分支和远程源都会拷贝下来) git clone git@gitee.com:doctor_owen/luffy.git 4.进入本地项目仓库进行开发,可以查看远程源信息 >: cd luffy >: git remote -v 5.开发过程中要提交新功能时,一定要遵循先拉取(pull),在提交(push) 1)提交新功能 >: git add . >: git commit -m '提交新功能的信息说明' 2)拉取远程仓库(不管本地是否已经和远程同步,每一次提交前都必须拉取) >: git pull 源名 分支名 3)提交到远程仓库 >:git push origin master
注:下拉出现#注释,输入:q退出即可
退出后不会出现already提示,需要再次下拉,出现already在进行上传,
原因是下拉数据中有一些新增的数据,需要注释
冲突解决
出现的问题:
下拉的时候报错,原因是版本不同但操作了同一个文件
解决办法:
删除文件中的报错信息,协商后,保存到本地版本库,在下拉最后提交
xadmin
1.安装:luffy虚拟环境下 pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 2.注册app:dev.py INSTALLED_APPS = [ # xamin主体模块 'xadmin', # 渲染表格模块 'crispy_forms', # 为模型通过版本控制,可以回滚数据 'reversion', ] 3.设置主路由替换掉admin:主urls.py # xadmin的依赖 import xadmin xadmin.autodiscover() # xversion模块自动注册需要版本控制的 Model from xadmin.plugins import xversion xversion.register_models() urlpatterns = [ path(r'xadmin/', xadmin.site.urls), ] 4.xadmin:需要自己的数据库模型类,完成数据库迁移 python manage.py migrate 5.完成xadmin模型表的注册与自定义xadmin主题:新建home/adminx.py import xadmin from . import models xadmin.site.register(models.Banner) from xadmin import views class GlobalSettings(object): """xadmin的全局配置""" site_title = "路飞学城" # 设置站点标题 site_footer = "路飞学城有限公司" # 设置站点的页脚 menu_style = "accordion" # 设置菜单折叠 xadmin.site.register(views.CommAdminView, GlobalSettings) 6.xadmin页面自定义组件显示效果 # home/__init__.py default_app_config = "home.apps.HomeConfig" # home/apps.py from django.apps import AppConfig class HomeConfig(AppConfig): name = 'home' verbose_name = '我的首页'