代码版本管理笔记 | Python 程序员也应该会的 Git 分支操作

简介: 代码版本管理笔记 | Python 程序员也应该会的 Git 分支操作

查看分支

分支分为两种,一种是本地已经存在的,还有一种是服务器上有, 但本地不存在的分支,查看的方式稍有区别。

查看本地分支

git branch

命令行绿色标记的为当前所在的分支

查看本地的分支和远程的所有分支

git branch -a

remotes/ 开头,这说明这个分支并不在本地

新建分支

新建分支有两种情况,第一种是远程已经有的分支,需要把它在本地也同样创建一份;还有一种是新建一个远端和本地都不存在的分支。

导入远程分支

把远程分支在本地创建,可以通过 git checkout  分支名 命令进行,这个命令其实是切换分支用的。但当它发现你本地不存在这个分支,会自动找到远程对应的分支然后在本地进行创建

git checkout  分支名

新建本地分支

创建的分支结构和内容会与当前所在的分支一模一样,也就是说,它其实就是复制了当前的分支

git checkout -b 分支名

这个时候远程分支还不存在,所以不能直接推送,需要在第一次推送的时候指定远程分支名

git push --set-upstream origin 分支名

合并分支

合并代码

合并的时候, Git  会对比两个分支代码的差异,当 要合并的分支处于比较新的状态时候, Git  会将合并的分支的代码和提交记录复制到 master  分支中来

git merge 分支名

查看合并记录

git log

删除分支

当我们修改完 bug 之后,就需要删除分支以减少仓库的体积

删除分支的操作分为强制删除和普通删除

普通删除

git branch -d 分支名

一般情况下,删除使用普通删除即可。普通删除相对来说比较安全,避免造成数据丢失的情况

强制删除

git branch -D 分支名

在极少数情况下你可能会遇到普通删除无法将分支删除的情况,强制删除命令执行完毕之后,使用 git log 会发现原来的分支已经没有了。

比较分支差异

查看代码差异

git diff 分支1 分支2 --stat

显示文件具体修改

git diff 分支1 分支2 [filename]

显示全部文件的修改

git diff 分支1 分支2

查看提交记录差异 - 查看新纪录

我基于生产分支上新建了一个 dev  分支,然后提交了代码;但某些原因,我忘记了我提交了几次修改,此时我就可以通过查看 dev  分支中有的记录而在生产分支中没有的记录

git log dev ^master

比较两个分支之间的差异

git log 分支1...分支2
# 查看各记录存在哪些分支上
git log --left-right 分支1...分支2

删除过期分支

如果发现一些分支不需要了,我们可以手动删除,以此提高响应速度;一般两类分支可能需要清理:

1、本地不存在,远程存在该分支,但不需要了

2、远程不存在,本地存在该分支,也不需要了

清理远程分支

# 查看分支列表
git branch -a
# 删除远端分支
git push origin --delete 分支名

清理本地分支

# 查看分支列表
git branch -a
# 查看远程仓库分支
git remote show origin
# 查看远程分支已删除但存在的本地分支
git fetch --prune origin
# 查看关联失效的分支
git branch -vv
# 删除本地分支
git branch -d 分支名

恢复已经删除的分支

git log 命令,这条命令可以显示所有提交过的版本信息,但我们对分支的一些管理操作并不会显示出来,这些管理的操作日志并不是没有记录,而是需要使用 git reflog 命令才能显示

# 显示分支操作记录
git reflog show
# 复制操作前的 commit id
git checkout -b 分支名称 [commit id]

回滚 reset 操作

如果你不小心使用 git reset 回滚了提交记录,想找回之前的提交记录也是可以的;可以 git reflog 查看操作历史,找到执行 git reset 命令之前 commitid ,然后 git reset --hard 到那个 commitid 即可

从历史版本中找回删除的文件

有时候,我们在某个版本中删除了文件,后来又突然发现需要这个文件,是可以恢复的;恢复之前首先确定要恢复的文件在哪一个版本( commit )中,假设那个版本号是:7a4312sd ,文件路径为 abc.php  那么参考命如下

git checkout 7a4312sd abc.php

对比分支下的指定版本

对比一个分支下的不同版本

git diff [commit id1] [commit id2]

跨分支比较差异

# 不同分支不同版本比较
git diff [分支名] # 对比不同分支最后一个版本比较
# 不同分支的历史版本比较
git diff  [commit id1] [commit id2]

合并代码

假设现在有三个分支,分别为 develop、test、master

这个时候需要将 develop 分支的代码合并到 test 然后 再合并到 master

# 先切换到 test 分支
git checkout test
# 将 develop 分支合并到 test
git merge develop

代码冲突

可以看到冲突符号以 <<<<<< 开始,以 ====== 符号为分界符号,上面的是当前 test 的,下面的是 develop 分支的,最后以 >>>>>> 为结束符

解决冲突后这里提交版本的方式稍微有一些区别,会在 git commit 后面增加一个 -a 参数,而且不需要 -m 参数

git merge 命令合并代码之后,版本记录会按照时间顺序排序,并自动产生一个 Merge branch 的版本;

git rebase 命令合并代码之后,版本记录会将目标分支的版本放在后面,然后再将当前分支的版本记录放在前边。

合并指定的版本至其他分支

git cherry-pick 命令是一个使用频率比较低,但在需要使用的场景时候非常省事,比如说,你在 develop  分支中开发,提交了 10  个版本,只有 2  个版本是稳定可以测试的,另外几个版本不可以,然后需要赶紧将两个稳定的版本提测,这个时候就可以使用 git cherry-pick 命令了

1、在 develop  分支找到稳定版本的 commitid

2、切换分支到 test  然后依次执行 git cherry-pick 命令

3、通过 git log 检查是否正确

相关文章
|
16天前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
25 6
|
9天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
48 8
|
16天前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
41 11
|
18天前
|
测试技术 Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界中,装饰器是那些能够为我们的代码增添魔力的小精灵。它们不仅让代码看起来更加优雅,还能在不改变原有函数定义的情况下,增加额外的功能。本文将通过生动的例子和易于理解的语言,带你领略装饰器的奥秘,从基础概念到实际应用,一起开启Python装饰器的奇妙旅程。
32 11
|
14天前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
15天前
|
程序员 测试技术 数据安全/隐私保护
深入理解Python装饰器:提升代码重用与可读性
本文旨在为中高级Python开发者提供一份关于装饰器的深度解析。通过探讨装饰器的基本原理、类型以及在实际项目中的应用案例,帮助读者更好地理解并运用这一强大的语言特性。不同于常规摘要,本文将以一个实际的软件开发场景引入,逐步揭示装饰器如何优化代码结构,提高开发效率和代码质量。
41 6
|
19天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。
|
15天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
14天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
96 80