IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git分支操作和python装饰器 -> 正文阅读

[开发工具]Git分支操作和python装饰器

Git分支操作

创建名为dev的分支并切换到该分支

1.创建分支和切换分支

git branch <branch-name>
git git switch <branch-name> / git checkout <branch-name>

创建和切换分支

git switch -c <branch-name>/git checkout -b <branch-name>

查看分支

git branch -a

2.关联远程分支 例如:如果当前所在的分支还没有关联到远程分支,可以使用下面的命令为它们建立关联。

git branch --set-upstream-to origin/develop

如果需要为指定的分支关联远程分支,可以如下操作。

git branch --set-upstream-to origin/develop <branch-name>

当然,在创建分支时,如果使用了--track参数,也可以直接指定与本地分支关联的远程分支,如下所示。

git branch --track <branch-name> origin/develop

如果需要解除本地分支与远程分支的关联,可以使用下面的命令。

git branch --unset-upstream <branch-name>

3.分支合并。例如在dev分支上完成开发任务之后,如果希望将dev分支上的成果合并到master,可以先切回到master分支然后使用git merge来做分支合并,合并的结果如下图右上方所示。

git switch <target-branch>
git merge --no-ff <target-branch>

4.分支变基 分支合并操作可以将多个分支上的工作成果最终合并到一个分支上,但是再多次合并操作之后,分支可能会变得非常的混乱和复杂,为了解决这个问题,可以使用git rebase操作来实现分支变基。如下图所示,当我们希望将masterdev上的工作成果统一到一起的时候,也可以使用变基操作。

当我们在dev分支执行git rebase命令时,将首先计算dev分支和master分支的差集,然后应用该差集到dev分支,最后我们切回到master分支并执行操作合并,这样就看到了如上图右下方所示的干净的分支

5.删除分支 删除分支可以使用git branch加上-d参数,如果分支上的工作成果还没有合并,那么在删除分支时会看到error: The branch '<branch-name>' is not fully merged.这样的错误提示。如果希望强行删除分支,可以使用-D参数。删除分支的操作如下所示。

git branch -d <branch-name>
error: The branch '<branch-name>' is not fully merged.
If you are sure you want to delete it, run 'git branch -D <branch-name>'.
git branch -D <branch-name>

如果要删除远程分支,可以使用下面的命令,但是请慎重的操作。

git branch -r -d origin/develop
git push origin :develop

或者

git push origin --delete develop

git其他操作

  1. git fetch:下载远程仓库的所有变动,可以将远程仓库下载到一个临时分支,然后再根据需要进行合并操作,git fetch命令和git merge命令可以看作是之前讲的git pull命令的分解动作。

    git fetch origin master:temp
    git merge temp
    
  2. git diff:常用于比较工作区和仓库、暂存区与仓库、两个分支之间有什么差别。

  3. git stash:将当前工作区和暂存区发生的变动放到一个临时的区域,让工作区变干净。这个命令适用于手头工作还没有提交,但是突然有一个更为紧急的任务(如线上bug需要修正)需要去处理的场景。

    git stash
    git stash list
    git stash pop
    
  4. git reset:回退到指定的版本。该命令主要有三个参数,如下图所示。

  5. git cherry-pick:挑选某个分支的单次提交并作为一个新的提交引入到你当前分支上。

  6. git revert:撤回提交信息。

  7. git tag:经常用于查看或新增一个标签。

Git工作流程(分支管理策略)

既然Git是团队开发必备的工具,那么在团队协作时就必须有一个规范的工作流程,这样才能让团队高效的工作,让项目顺利的进展下去,否则工具再厉害但团队成员各自为战,冲突就会无处不在,协作更加无从谈起。我们仍然以刚才码云上创建的python项目为例,来说明Git的分支管理策略。

Github-flow
  1. 克隆服务器上的代码到本地。

    git clone git@gitee.com:jackfrued/python.git
    
  2. 创建并切换到自己的分支。

    git switch -c <branch-name>
    

    git checkout -b <branch-name>
    
  3. 在自己的分支上开发并在本地做版本控制。

  4. 将自己的分支(工作成果)推到服务器。

    git push origin <branch-name>
    
  5. 在线发起一次合并请求(通常称之为Pull Request,有的地方称为Merge Request),请求将自己的工作成果合并到master分支,合并之后可以删除该分支。

上面这种分支管理策略就是被称为github-flowPR的流程,它非常简单容易理解,只需要注意以下几点:

  1. master的内容都是可以进行发布的内容(不能直接在master上进行修改)。
  2. 开发时应该以master为基础建立新分支(日常开发任务在自己的分支上进行)。
  3. 分支先在本地实施版本控制,然后以同名分支定期向服务器进行push操作。
  4. 开发任务完成后向master发送合并请求。
  5. 合并请求通过审查之后合并到master,并从master向正式环境发布。

当然,github-flow的缺点也很明显,master分支默认就是当前的线上代码,但是有的时候工作成果合并到master分支,并不代表它就能立刻发布,这样就会导致线上版本落后于master分支。

Python装饰器

import random
import time
from functools import wraps


# 装饰器函数的参数是被装饰的函数,它返回的是带有装饰功能的函数
def log_time(func):

    @wraps(func)
    def wrapper(*args, **kwargs):
        start = time.time()
        ret_value = func(*args, **kwargs)
        end = time.time()
        print(f'{func.__name__}执行时间: {end - start:.3f}秒')
        return ret_value

    return wrapper


@log_time
def download(filename):
    print(f'开始下载 {filename}.')
    time.sleep(random.randrange(3, 7))
    print(f'{filename} 下载完成.')


@log_time
def upload(filename):
    print(f'开始上传 {filename}.')
    time.sleep(random.randrange(5, 9))
    print(f'{filename} 上传完成.')


if __name__ == '__main__':
    # download = log_time(download)
    download('Python从入门到住院.pdf')
    upload('MySQL从删库到跑路.avi')

    # 取消装饰器(得到被装饰之前的原函数)
    download.__wrapped__('Linux从精通到放弃.pdf')
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:59:09  更:2021-09-09 12:00:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:15:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码