Django工具:Git简介与基本操作

1.Git简介:

1.Git是目前世界上最先进的分布式版本控制系统

网址:http://github.com

2.总结git的两大特点:

  • 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题
  • 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。

 

2.经理创建

2.1安装配置:

 

  • 安装

sudo apt-getinstall git

  • 安装成功后,运行如下命令

git

 

配置

  • 在ubuntu的命令vi .gitconfig行中,修改某台机器的git配置
  • 修改为注册github时的邮箱,填写用户名,要求组员的用户名不能重复

 

  • git四部分的交互方式如下图


 

 

2.2创建仓库

  • 注册github账户,登录后,点击"start a project"
  • 在新页面中,输入项目的名称,勾选'readme.md',点击'create repository'
  • 添加成功后,转到文件列表页面,点击'create new file'创建新文件
  • 填写文件名称为'.gitignore',代码如下,表示项目中的pyc文件不需要被管理,因为这些文件代码是根据py生成的
  • *.pyc
    .idea/
    migrations/
  • 点击'preview'查看预览,点击'create new file'完成创建

 

2.3添加ssh账户

  • 如果某台机器需要与github上的仓库交互,那么就要把这台机器的ssh公钥添加到这个github账户上
  • 点击账户头像后的下拉三角,选择'settings'
  • 点击'SSH and GPG keys',添加ssh公钥

 

生成git密钥

  • 删除~/.ssh目录,这里存储了旧的密钥

rm -r .ssh

 

运行如下命令生成密钥

ssh-keygen -trsa -C "Github账号,可以是用户名,也可以是邮箱地址"

 

  • 查看公钥内容,复制此内容

cat id_rsa.pub

 

  • 回到浏览器中,填写标题,粘贴公钥

 

2.4克隆项目

  • 在浏览器中点击进入github首页,再进入项目仓库的页面
  • 复制git地址
  • 在命令行中复制仓库中的内容

git clone git地址

 

错误处理

  • 提示错误信息如下:

sign_and_send_pubkey: signingfailed: agent refused operation

  • 错误原因:在ssh账户中没有加入新生成的密钥
  • 解决:将密码加入ssh账户
  • 逐条运行如下命令

eval "$(ssh-agent-s)"
ssh-add

 

2.5创建项目分支

  • 每个员工开发期的代码互不干扰,并行开发,则每人使用一条分支
  • 项目开发中公用分支包括master、dev
  • 分支master用于发布,默认分支,当需要发布时将dev分支合并
  • 分支dev开发阶段性的代码合并,每个阶段的工作完成后需要进行一次,控制项目的进度
  • 成员分支用于每个项目成员的代码开发,实现不交叉

 

  • 创建分支:git branch 分支名称
  • 切换分支:git checkout 分支名称
  • 将分支推送到服务器:git push origin 分支名称
  • 将本地分支跟踪服务器分支

git branch--set-upstream-to=origin/分支名称 分支名称

 

  • 创建并切换分支:git checkout -b 分支名称
  • 查看所有分支,当前分支前标记为星*:git branch
  • 删除分支:git branch -d 分支名称
    没有例子,没错,就是没有例子,如果你删除了,我也找不回来哟

 

2.6搭建项目框架

  • 当前项目分支一共有3个,分别为master、dev、itcast,当前在itcast分支上工作
  • 在克隆的目录下创建项目,使用django框架
  • 将文件代码添加到暂存区:git add dailyfresh/
    将暂存区提交到仓储区:git commit -m '搭建框架'

 

 

2.7上传分支

  • 当从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来
  • 远程仓库的默认名称是origin
  • 推送分支,就是把该分支上的所有本地提交推送到远程库,推送时要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上

git pushorigin 分支名称

 

  • 当前文件在python分支上,所以推送python分支

gitpush origin python

 

  • python分支合并到dev分支

gitcheckout dev
git merge
python

 

  • 推送dev分支:git push origin dev
  • 将dev分支合并到master分支

git checkoutmaster
git merge dev

 

  • 推送master分支:git push origin master

 

3.员工—开发

 

3.1添加ssh账户

生成git密钥

  • 删除~/.ssh目录,这里存储了旧的密钥

rm -r .ssh

 

运行如下命令生成密钥

ssh-keygen -trsa -C "Github账号,可以是用户名,也可以是邮箱地址"

 

  • 查看公钥内容,复制此内容

cat id_rsa.pub

 

  • 回到浏览器中,填写标题,粘贴公钥

 

3.2本地克隆

  • 根据项目经理提供的地址,如“git@github.com:bossliu2016/django1.git”,从github上将项目克隆到本地,默认对应的是master分支

git clone 项目地址

 

3.3同步分支

  • 以自己的姓名创建分支,如果此分支已经存在可以添加数字后缀,具体要与项目经理商量

git checkout -bzhjia

  • 将本地分支推送到服务器

git push originzhjia

  • 将本地分支跟踪服务器分支

git branch--set-upstream-to=origin/分支名称 分支名称

 

  • 将github上的dev分支同步到本地,因为开发过程中,所有组员都向这个分支上提交阶段性代码,并从这个分支获取最新代码

git checkout -bdev origin/dev

 

3.4开发管理

  • 上面的操作,只有我们在加入项目的第一天需要进行,只操作一次就够了
  • 接下来的操作,是我们每天开发中都要进行的操作,这是必须做到熟练操作的命令
  • 当前用户以zhjia分支进行开发

git checkout zhjia

 

  • 本地仓库分为三部分:工作区,暂存区,仓库区,其中暂存区、仓库区是版本库部分

 

 

3.5工作区与暂存区

 

添加

git add 文件1 文件2 ...
git add 目录

 

撤销  git checkout-- 文件名

 

3.6暂存区与仓库区

  • 仓库区表示个人开发的一个小阶段的完成,仓库区中记录的各版本是可以查看并回退的,但是在暂存区的版本一旦提交就再也没有了
  • 查看暂存区未提交的记录:git status
  • 将暂存区的记录提交到仓库区

git commit -m'本次提交的说明信息'

 

3.7本地与服务器

 

获取

  • 建议:在每天开始编写代码前,先与服务器同步一次;或者在公用分支如dev上开发时,建议先同步后开发
  • 1.切换到dev分支:git checkout dev
  • 2.获取代码,如果dev分支上有更新的记录则会同步到本地:git pull
  • 3.切换回自己的分支继续开发:git checkout zhujiao

推送

  • 建议:在每天下班前将当天开发推送到服务器,这样可以在服务器中存储一个备份,即使本机出问题,在服务器上还能存在代码备份
  • git push origin zhjia

 

合并分支

  • 一个功能模块开发完了,合并到dev分支
  • 1.切换到dev分支:git checkout dev
  • 2.获取代码,如果dev分支上有更新的记录则会同步到本地:git pull
  • 3.合并:git merge zhjia
  • 4.添加、提交并推送:git push origin dev
  • 5.切换回工作分支:git checkout zhujiao
  • 6.在最新代码上继续开发,所以将dev分支合并到zhujiao分支

git merge dev

 

解决冲突

  • 建议:在更改公用文件如dailyfresh/urls.py时需要操作dev分支,因为大家都可以操作dev分支,所以在合并时可能出现冲突
  • 冲突的示例如下,修改dailyfresh/urls.py文件

 

项目经理的操作

  • 1.项目经理负责前台的开发,需要修改dailyfresh/urls.py文件

git checkout dev

 

  • 2.在dailyfresh/urls.py文件中添加一条url
  • 3.添加并提交

git adddailyfresh/urls.py
git commit -m '配置前台url'

 

  • 4.同步到服务器

git push origindev

 

员工的操作

  • 1.员工负责用户模块的开发,需要修改dailyfresh/urls.py文件

git checkout dev

  • 2.在dailyfresh/urls.py文件中添加一条url
  • 3.添加并提交

git adddailyfresh/urls.py
git commit -m '配置用户模块url'

  • 4.向服务器推送:git push origin dev
  • 5.推送时发现出错误了,根据提示,需要先获取服务器的变更

git pull

  • 发现有冲突,而且自动合并冲突失败,需要手动合并冲突,指向dailyfresh/urls.py文件
  • 6.冲突解决完成,再次添加、提交、推送

git add dailyfresh/urls.py
git commit -m '配置用户模块url-解决冲突后'
git push origin dev

 

3.8历史

  • 查看仓库区的历史操作

git reflog

 

  • 对比工作区和仓库区中某版本某文件的不同

git diff HEAD-- 文件名

 

  • 将上面的代码添加提交

git adddf_user/models.py
git commit -m '修改模型类的str方法为name属性'

 

回退

  • 回退历史版本到暂存区
  • 将df_user/models.py文件的更改完成添加、提交

git adddf_user/models.py
git commit -m '修改模型类'

  • 查看当前的暂存区状态:git status
  • 重置版本:git reset 版本号
  • 再次查看当前的暂存区状态:git status
  • 可以再将暂存区的内容恢复到工作区

git checkout --df_user/models.py

 

3.9删除

  • 在ide中将文件删除
  • 从工作区到暂存区提交:git rm 文件名
  • 从暂存区到仓库区提交:git commit -m '说明信息'

1.创建df_user/a.py的变更添加到暂存区,再提交到仓库区

git adddf_user/a.py
git commit -m '创建文件a'

  • 2.在ide中将df_user/a.py文件删除,然后在暂存区删除

git rmdf_user/a.py

  • 3.提交暂存区的记录到仓库区

git commit -m'删除文件a'

 

3.10Debug分支

  • 在项目的正常开发过程中,之前发布过的版本可能很会出bug,这时就需要停下来现在的开发任务,先去修改bug,完成后再回来继续开发任务
  • git中stash提供了保存现场的功能,可以把当前工作区、暂存区中的内容不需要提交而保存下来,转而去做bug修复,完成后再恢复现场,继续开发工作
  • 将语言和时区改为

LANGUAGE_CODE ='zh-Hans'
TIME_ZONE = 'Shanghai/Asia'

 

  • 1.查看当前状态:git status
  • 2.保存现场:git stash
  • 再查看当前状态,发现是干净的:git status
  • 3.切换到master分支:git checkout master
  • 4.新建临时分支用于修复bug,用完后会删除此分支

git checkout -bbug001

5.修改dailyfresh/settings.py文件的语言和时区

  • 添加:将工作区中的更改添加到暂存区

git adddailyfresh/settings.py

  • 提交:将暂存区的内容提交到仓库区

git commit -m'修复时区语言'

  • 6.切换回master分支:git checkout master
  • 7.将bug001分支合并到master分支
  • 因为临时分支用完后会被删除,无法通过分支查询历史记录,所以使用临时分支时需要使用no-ff的方式,同时写上-m备注信息

git merge--no-ff -m "修复bug-语言时区" bug001

  • 推送到服务器:git push
  • 8.删除临时分支bug001:git branch -d bug001
  • 9.切换回工作分支zhjia:git checkout zhjia
  • 查看现场列表:git stash list
  • 恢复现场:git stash pop
  • 恢复现场后查看工作状态:git status

 

 

4.0经理-发布

  • 项目开发完一个版本后,需要进行项目的合并与发布
  • 项目合并与发布,需要项目经理和组员一起来完成,每个人将开发的分支逐个合并到dev分支,如果有冲突则解决冲突,在dev上的代码经过测试没有问题后,则由经理合并到master分支,完成发布
  • 实现发布主要遵守如下步骤:
  • 每个人逐个合并分支到dev
  • 经理合并dev到master并发布
  • 每个人获取最新的dev分支、master分支

 

4.1逐个合并

  • 1.切换到dev分支:git checkout dev
  • 2.获取最新记录代码:git pull
  • 3.合并,将自己编写的代码加入进来,如果有冲突则与上一个组员商量解决冲突
  • 如果没有冲突则可以跳过4、5步

git merge 分支

  • 4.添加
  • 注意:在项目的根级目录下,即README.md所在的目录下

git add ./

  • 5.提交:git commit -m 'zhjia发布v1.0'
  • 6.推送:git push origin dev

 

4.2经理合并

  • 所有成员都完成合并后,接下来是项目经理要执行的操作
  • 1.切换到dev分支:git checkout dev
  • 2.获取最新git pull
  • 3.切换到master分支:git checkout master
  • 4.合并dev分支到master分支
  • 如果有冲突,则找相应的组同解决冲突
  • 如果没有冲突则可以跳过5、6步

git merge dev

  • 5.添加
  • 注意:在项目的根级目录下,即README.md所在的目录下

git add ./

  • 6.提交:git commit -m '发布v1.0'
  • 7.打标签
  • 标签就是为了给一堆数字的版本号,起一个容易记住的名字,一般用于master分支:git tag v1.0
  • 8.推送:git push

 

4.3逐个获取

  • 现在最新的代码已经有了,接下来在这个版本代码基础上继续开发,每个人都要获取最新的代码
  • 1.切换到master分支:git checkout master
  • 2.获取:git pull
  • 3.切换到dev分支:git checkout dev
  • 4.将master分支合并到dev分支:git merge master
  • 5.切换到自己工作的分支如zhjia分支:git checkout zhjia
  • 6.将dev分支合并到工作分支如zhjia分支:git merge dev

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1616. 分割两个字符串得到回文串

文章目录1. 题目2. 解题1. 题目 给你两个字符串 a 和 b ,它们长度相同。 请你选择一个下标,将两个字符串都在 相同的下标 分割开。 由 a 可以得到两个字符串: aprefix 和 asuffix ,满足 a aprefix asuffix ,同理&am…

Kafka基础

Kafka基础 1 消息队列 1.1 什么是消息队列 消息队列(MQ):消息队列,保存消息的队列。消息的传输过程中的容器;主要提供生产、消费接口供外部调用做数据的存储和获取。 1.2 为什么要有消息队列 当网站面对教大的流量…

系统总结学习 Python 的 14 张思维导图

本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库)。 首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组&#x…

LeetCode 1617. 统计子树中城市之间最大距离(枚举所有可能+图的最大直径)

文章目录1. 题目2. 解题1. 题目 给你 n 个城市,编号为从 1 到 n 。同时给你一个大小为 n-1 的数组 edges ,其中 edges[i] [ui, vi] 表示城市 ui 和 vi 之间有一条双向边。 题目保证任意城市之间只有唯一的一条路径。换句话说,所有城市形成了…

MYSQL电脑客户端免安装教程以及出现问题解决方案

准备工作:window 7 64位旗舰版 MySQL 5.6.35免安装。 1. 下载MySQL 1.1 进入MySQL官网下载(https://www.mysql.com/)MySQL的安装包。 1.2. 根据自己电脑的位数(32位/64位)来下载响应的MySQL 、 2. 部署MySQL 2.1 解压压缩包到自己的某个盘…

[Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)

文章目录1. 使用 LeNet 预测1.1 导入包1.2 建立 LeNet 模型1.3 读入数据1.4 定义模型1.5 训练1.6 绘制训练曲线1.7 预测提交2. 使用 VGG16 迁移学习2.1 导入包2.2 定义模型2.3 数据处理2.4 配置模型、训练2.5 预测提交Digit Recognizer 练习地址 相关博文: [Hands …

SparkCore基础

目录 Spark简介 1 什么是Spark 2 Spark特点 3 Spark分布式环境安装 3.1 Spark HA的环境安装 3.2 动态增删一个worker节点到集群 4 Spark核心概念 5 Spark案例 5.2 Master URL 5.3 spark日志的管理 5.4 WordCount案例程序的执行过程 6 Spark作业运行架构图&#xff…

LeetCode 1320. 二指输入的的最小距离(动态规划)

文章目录1. 题目2. 解题1. 题目 二指输入法定制键盘在 XY 平面上的布局如上图所示,其中每个大写英文字母都位于某个坐标处, 例如字母 A 位于坐标 (0,0),字母 B 位于坐标 (0,1),字母 P 位于坐标 (2,3) 且字母 Z 位于坐标 (4,1)。 …

SparkStreaming基础

目录 SparkStreaming基础 1 流式计算 1.1 常见的离线和流式计算框架 2 SparkStreaming简介 2.1 核心概念DStream 2.2 工作原理 2.3 Storm,SparkStreaming和Flink的对比 2.4 如何选择流式处理框架 3 SparkStreaming实时案例 3.1 StreamingContext和Receiver…

【Kaggle微课程】Natural Language Processing - 1. Intro to NLP

文章目录1. 使用 spacy 库进行 NLP2. Tokenizing3. 文本处理4. 模式匹配练习:食谱满意度调查1 在评论中找到菜单项2 对所有的评论匹配3 最不受欢迎的菜4 菜谱出现的次数learn from https://www.kaggle.com/learn/natural-language-processing 1. 使用 spacy 库进行…

【Kaggle微课程】Natural Language Processing - 2.Text Classification

文章目录1. bag of words2. 建立词袋模型3. 训练文本分类模型4. 预测练习:1. 评估方法2. 数据预处理、建模3. 训练4. 预测5. 评估模型6. 改进learn from https://www.kaggle.com/learn/natural-language-processing NLP中的一个常见任务是文本分类。这是传统机器学…

Django框架—富文本编辑器

借助富文本编辑器,网站的编辑人员能够像使用offfice一样编写出漂亮的、所见即所得的页面此处以tinymce为例,其它富文本编辑器的使用也是类似的在虚拟环境中安装包 pip install django-tinymce2.6.0安装完成后,可以使用在Admin管理中&#xf…

Python基础(二)--数据类型,运算符与流程控制

目录 Python基础(二)--数据类型,运算符与流程控制 1 数据类型 1.1 Python中的数据类型 1.2 整数类型(int) 1.3 布尔类型 1.4 浮点类型 1.5 复数类型 1.6 类型转换 2 运算符 2.1 算术运算符 2.2 布尔运算符 …

【Kaggle微课程】Natural Language Processing - 3. Word Vectors

文章目录1. 词嵌入 Word Embeddings2. 分类模型3. 文档相似度练习:1. 使用文档向量训练模型2. 文本相似度learn from https://www.kaggle.com/learn/natural-language-processing 1. 词嵌入 Word Embeddings 参考博文:05.序列模型 W2.自然语言处理与词…

Django搜索工具——全文检索

全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理haystack:全文检索的框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,点击查看官方网站whoosh:纯Py…

LeetCode 787. K 站中转内最便宜的航班(Dijkstra最短路径 + 优先队列)

文章目录1. 题目2. 解题1. 题目 有 n 个城市通过 m 个航班连接。每个航班都从城市 u 开始,以价格 w 抵达 v。 现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到从 src 到 dst 最多经过 k 站中转的最便宜的价格。 如…

Windows Phone 资源管理与换肤思考

Windows Phone 资源管理与换肤思考 原文 Windows Phone 资源管理与换肤思考 新入手一台Windows 8的笔记本,安装了VS2013后,终于又可以开发WP了。公司暂时不愿意开发WP,那么咱就自行研究吧! 在没有WP开发环境的时候,曾经…

Django完成异步工具——celery

情景:用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验,比如发送邮件、手机验证码等使用celery后,情况就不一样了…

Python基础(三)--序列

Python基础(三)--序列 1 序列相关的概念 1.1 什么是序列 序列是一种可迭代对象,可以存储多个数据,并提供数据的访问。 序列中的数据称为元素,Python内置的序列类型有:列表(list)…

项目上线最后工作——布署环境

当项目开发完成后,需要将项目代码放到服务器上,这个服务器拥有固定的IP,再通过域名绑定,就可以供其它人浏览,对于python web开发,可以使用wsgi、apache服务器,此处以wsgi为例进行布署服务器首先…