[Git] 重学Git三剑客关键总结

已解决:GitHub如何保护分支?GitHub提示Your main branch isn‘t protected是怎么回事? 在 Github 中,可以通过以下方式来保护分支:限制对分支的访问权限:合理设置仓库的访问权限,只有团队成员或者被授权的用户才能够进行代码的推送和修改操作。设置分支保护规则:在仓库的 “Branches” 页面中,找到需要保护的分支(一般是主分支 master),点击 “Edit” 按钮,进入分支设置页面,勾选以下选项:“Require pull request reviews before merging”:要求所有合并请求必须经过审核,并由至少一个审阅者或所有者或拥有管理员权限的人员进行审核。 阅读详情

在这里插入图片描述
 

核心总结


 
在团队中使用Git的法则

1:push前一定先pull
2:合并代码必须两人结对
3:合并冲突,非自己的变动保持原样,和自己冲突的代码找相应的代码提交人确认如何解决冲突
4:合并完成后,保证本地能编译能运行再push
5:【 合并到主干的代码必须通过测试,必须通过代码review 】
6:【不同的功能从主干上拉新分支进行开发工作,开发完后确认无误再合并到主干】
7:分支的命名需要加上,拉取人+拉取说明
8:上完线的分支要及时清理

也就是说,从主线打一个分支,然后分支同步本地,以后改的代码都只在分支(本地——>远端)这一条线上做交互,直到这次开发完毕,才合并到主线(切换到主线,merge对应分支到当前主线)上去,如此以往…

 
 
比如我这里拉下来的代码目前在master,远端对主线创建了一个feature/branchdev分支

在这里插入图片描述

那我就要通过 git checkout -b 命令来针对远端分支建一个同名的本地分支了(origin后面的部分相同,之后push就不用带远端分支名了),那我这里使用的命令就是git checkout -b feature/branchdev remotes/origin/feature/branchdev,可以看到结果入下。

在这里插入图片描述

之后在分支改好代码,再checkout main 到主线,然后合并分支再推到主线去就行了。

 
 
 
 

使用禁忌


  • 千万不要用: git push -f —— 这个命令即时不是fastfoward状态也能提交,但是它会把分支上已有的所有提交记录全部清空掉,然后变成当前的一次提交。

  • 公共分支(所有人一起维护的),严禁拉到本地通过rebase做变更历史操作,不管是合并还是重写messege,因为其他人在这历史版本上拉的代码,你改了就会出大麻烦,所有人的代码基层都变了。

    (PS:对于自己本地多次Commit,还从未push过的,可以做rebase,如果是公共部分拉取下来的,千万不要做rebase)

禁止rebase,如果要求历史提交是线性的,如何做呢?

如果线性对你们团队很重要的话,办法肯定是有的。比如master为集成分支,且要求版本历史为线性,假设在GitHub平台上,首先为master分支设置Branch protection rule(不允许直接push),勾选“Require pull request reviews before merging。

其次,Merge Button选择“Allow squash merging”或者“Allow rebase merging”,不要选“Allow merge commits”。
 
学习地址: https://time.geekbang.org/course/detail/100021601-75481

 
 
 
 

其他补充


如果有些文件不想加入版本控制,也不想提交到远端,可以按如下步骤操作:

1.git ls-files查看暂存区内已进行版本控制的文件
2.git rm --cached 〈文件名〉将文件移除版本控制
3.编辑.gitignore文件,将不想加入版本控制的文件写进去,详细方法可参考github上的.gitignore文件。

clone的代码或者新拉取的代码和本地分支是断开的非fastFoward状态,merge的时候报refusing to merge unrelated histories怎么办?

merge执行这个命令

$ git merge --allow-unrelated-histories master

ps: master的名字是你要合并的对象的名字。

同样,有时候pull也会报这个错,pull后执行这个即可。

$git pull origin main–allow-unrelated-histories

ps: main是你远端分支的名字。

可以发现 --allow-unrelated-histories 是一个非常重要的命令,如果远端和本地断开的话就要执行这个。

这里记住一个分支删除的命令,以备不时之需:

  • git branch -D 分支名

 
 
 
 

PS : 本文出自对极客时间 —— 《玩转Git三剑客》 的学习总结,由于之前公司用的都是SVN,对GIT的系统了解甚少,索性在周末看完了这个专栏,如果你也对GIT感兴趣,或者正在追这个专栏,欢迎一起探讨,交流学习!

[ 🎏 nextStation: 重学Git三剑客 ]

branch-protection-bot:在分支机构保护中禁用和重新启用“包括管理员”选项的漫游器工具 分支保护机器人 在分支机构保护中临时禁用和重新启用“包括管理员”选项的漫游器工具 Github无法授予Bot访问权限以覆盖分支保护,特别是如果您。 唯一可能的解决方案是禁用include administrators选项。 这增加了管理员意外将其压入母版的风险(我已经做过几次了)。 该工具不能完全解决事故发生的问题,但可以通过关闭窗口来减少机会。 此工具的预期用途是在CI / CD管道中,在该管道中您需要临时访问权限以允许管理员Bot推送到分支。 这个怎么运作 您的自动化管道启动 在推送到github之前,请运行此工具以禁用“ Include administrators 推送到存储库 推送到github后,运行此工具以启用“ Include administrators 用法示例 码头工人 docker run -e ACCESS_TOKEN=abc123 -e BRANCH=mas 立即下载

相关推荐

EVE-NG 新增 qcow2 镜像教程

本文介绍了如何在 EVE-NG 网络仿真平台中添加 QCOW2 镜像并配置 YML 文件。首先,用户需要了解 EVE-NG 的目录结构,上传并重命名 QCOW2 镜像,然后设置文件权限并刷新界面以识别设备。接着,讲解了 YML 文件的作用,它用于定义设备的CPU、内存、网卡等参数,并给出了配置示例。若有多个设备版本,可以通过复制并重命名 YML 文件使其独立显示。最后,通过检查 QEMU 进程和日志验证 YML 配置是否生效。总结部分强调了 EVE-NG 的自动识别机制以及独立管理设备版本的方式。

qq_41862216的博客 3075

github 主分支如何阻止直接提交,只允许其他分支合并

在 Github 上,可以通过保护主分支的设置来阻止直接提交,只允许其他分支合并。 具体步骤如下: 进入 Github 仓库的设置页面,点击 “Branches”(分支)选项卡。 在 “Branch protection rules”(分支保护规则)部分,点击 “Add rule”(添加规则)按钮。 在 “Branch name pattern”(分支名称模式)输入框中,输入主分支的名称(如 master)。 在 “Require pull request reviews before merging”(要

Xpy 的博客 1万+

CATIA高效设计:自定义快捷键全攻略

本文详细介绍了如何在CATIA中自定义快捷键以提升设计效率。通过减少鼠标依赖、优化工作流程和减轻手腕疲劳,合理设置快捷键可显著提高建模速度。文章提供了从基础设置到高级配置的全流程指南,包括解决冲突、推荐方案及外设扩展建议,帮助用户快速掌握CATIA高效设计技巧。

weixin_42648844的博客 584

前析git-----------必须有所概念的注意事项;

对于git相信大家都不会陌生,或多或少都会用过版本管理工具,如:svn.........等。在这个全民编程的时代,github已经不只是程序员的聚集地,而成了一个大众的网站了,只要有一点编程基础的同志都能在github中找到自己的一个天地,所以作为github官方指定版本管理工具git就不能不了解下了。 本文适合有一定git使用经验但是对git没有清晰的概念的同志,我...

Chenglong__的博客 941

ffmpeg 4.4 cenc-aes-ctr 加解密 MP4 工程性质分析

ffmpeg 4.4 cenc-aes-ctr 加解密 MP4 工程性质分析

Dream_Dynasty的博客 3045

ESP32学习,驱动LED点阵屏,SD卡播放GIF动图

搬运就可以实现效果,如果有不足,请批评指正。下步该学一下如何文章上视频了,老是截图不方便展示效果。

u011625956的博客 1868

Github——设置分支保护规则

Github——设置分支保护规则

Williamcsj的博客 9633

zynq-7000学习笔记(八)——USB摄像头图像采集

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:Zed Board USB摄像头:罗技 C270(720P) linux源码:2016_R1 一、配置linux,支持UVC       如果是中星微的ZC3XX系列的芯片,则要进到GSPCA把ZC3XX的驱动选上

luotong86的专栏 1万+

GitHub分支保护介绍(Branch Protection)(git分支保护)(通过设置规则和权限来限制对特定分支的操作的功能)

GitHub 分支保护(Branch Protection)是一种通过设置规则和权限来限制对特定分支的操作的功能,旨在确保代码的安全性、稳定性和协作流程的规范性。它主要用于保护关键分支(如主分支。通过合理配置 GitHub 分支保护规则,可以显著提升代码库的稳定性和团队协作效率,同时降低因误操作或未审查代码导致的风险。、开发分支等),防止意外修改或未经授权的操作。

Dontla的博客 2889

(实测可用)STM32L431RCT6开发板-实验1 跑马灯实验

一、开发板平台简介: 1、开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex®-M4 (4)开发板主芯片主频:80MHz (5)开发板主芯片Flash大小:256KB (6)开发板主芯片RAM大小:64KB

zhej2014的博客 3167

H3C-HCL模拟器-STP生成树协议实验

边缘接口的存在是为了提高网络的收敛速度和性能。由于边缘接口连接的是终端设备,这些设备通常不会产生环路,因此不需要参与生成树协议的计算和决策。边缘接口通常是指那些不会连接到其他交换机或生成树的冗余路径的接口。H3C交换机千兆口的cost默认是20,把SW2的g1/0/2接口的cost改为100;SW4是根网桥,根据STP计算,闭塞端口应该在SW1上;方法:使得SW2到SW1的cost比SW4到SW1更大;7)修改配置:把SW1连接PC的所有接口配置为边缘接口。协议的计算开销,提高网络的收敛速度。

网络工程 2995

ShiftLeft 学习笔记(一)

一 基本声明 本文是对shiftleft的一个基本翻译,帮助大家了解、学习这个东西。(严谨转载!欢迎讨论!) 二 基本介绍 What is ShiftLeft? ShiftLeft是为开发人员构建的下一代代码分析平台。 它的代码属性图(CPG)将应用程序的控制流、程序依赖项和抽象语法树描述为一个单一的数据结构,使您能够从根本上理解应用程序的每个版本的功能,并找到可能带来风险的任...

water_likly的博客 3415

解析AI人工智能领域AI芯片的散热技术

当你用ChatGPT写代码、用AI生成高清图片时,背后的AI芯片可能正在“发高烧”——全球TOP500超算的平均功耗已突破10兆瓦,单颗GPU的峰值功耗超过700W(相当于3台家用空调同时运行)。本文将聚焦AI芯片的散热技术,覆盖从基础原理到前沿方案的全链条解析,帮助读者理解“散热为什么比算力更重要”。

AIGC应用创新大全的博客 935

Git三剑客之基础部分

基于极客时间苏玲老师的《玩转git三剑客》来记录的笔记,本篇为第一章基础部分

py_xiaoguaishou的博客 1292

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【玩转Git三剑客笔记】第一章 Git基础

本系列笔记是基于极客时间的《玩转Git三剑客》专栏的笔记。

江天飞鸟的博客 1464

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

玩转Git三剑客——第一章Git基础

玩转Git三剑客——第一章Git基础 03、使用Git之前需要做的最小配置 04、创建第一个仓库并配置local用户信息 .git是个裸仓库,是个隐藏的文件夹,使用ls -

zhaopeng01zp的博客 735

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Github设置分支保护规则

Github设置分支保护规则 前言 在当下开发的猿猴中相信没有谁不会使用git的吧,当然github就是一个相当好的平台,博主的最爱! 今天来讲一下Github设置分支保护规则 设置保护规则 首先以管理员身份登录你的Github选择项目存储的仓库 然后,点击—> Settings —> Branches —> 点击如下图所示(注意这里要有除master以外的分支才会有...

Mr_chen的博客 1万+

《玩转Git三剑客》

git checkout 3d4731d90 我们切换到这个commit中 并没有创建分支 会进入分离头指针的状态 当我们 改动文件并commit时,如下,若不创建分支补充,会当作垃圾处理。git add -u 在已经添加到暂存区的文件,一并在此添加管理(避免修改了这些文件,繁琐添加,所以 -u 一并处理)将文件添加到暂存区,此时文件已经被git管理,可以暂存 也可以回退,添加之后在提交到仓库分支。查找 文件类型 哈希值值。ssh -keygen -t -rsa -b 4096 -C “邮箱”

beijingFC的博客 732

Git三剑客之基本操作

下载: Git - 安装 Githttps://git-scm.com/book/zh/v2/起步-安装-Git 检查版本 git --version 配置基本的用户名与邮箱(全局) git config --global user.name ‘huyilong’ git config --global user.email ‘835972443@qq.com’ 查看Git安装路径 which -a git 新建的项目直接用用Git管理 cd 某个文件夹 git init your

qq_34993631的博客 434

Git 三剑客 ———— Git 安装与命令

介绍  Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时都十分高效,而且非常的高大上。相比于SVN,SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。而且集中式版本控制系统是必须联网才能工作。Git是分布式版本控制系统,它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。 ...

永远的菜鸡小詹的博客 604

GIT三剑客课程笔记

查看git版本打开git bash,输入git --version最小配置配置user配置user.name和user.emailgit config --list --local(如上三个一致的--local等)(查看相关配置)

Vkave的博客 333

Git三剑客:程序员必备的“利器”

Git三剑客(Git、GitHub、GitLab)是开发者必备的版本控制工具组合。Git作为分布式版本控制核心,提供高效代码管理;GitHub是全球最大开源协作平台,支持Pull Request等社区互动;GitLab则专注企业私有部署,内置强大CI/CD功能。三者各具特色:Git是基础工具,GitHub促进开源协作,GitLab满足企业安全需求。掌握Git常用命令、Git Flow工作流及平台协作机制,能显著提升开发效率。

qq_48379015的博客 975

Git 三剑客 ———— git gui 可视化工具

目录页面介绍Unstaged changesStaged Changes(Will Commit)File DisplayCommand Set 页面介绍  打开 git gui 之后,整个交互页面的展示如下。在最开始接触Git的时候,不知道 Git gui 这个工具,在理解git 的工作流程上面就不是很顺畅。对于这个功能,eclisp其实也能提供,但个人认为 git gui 对于初学者来说更加友好,也更直观。 Unstaged changes  我对于这部分的理解是,这里相对于本地文件与 git 库中文

永远的菜鸡小詹的博客 7546

Git三剑客实战指南:如何用add/commit/push在10分钟内完成代码提交

本文提供了一套高效的Git三剑客(git add, git commit, git push)实战工作流,帮助开发者通过VS Code深度集成、自动化脚本及原子提交等技巧,在10分钟内完成从代码修改到推送的完整流程,显著提升个人与团队协作效率。

dell8的博客 272

【Git】 -- Part2 -- 分支管理

⽀在实际中有什么⽤呢?你准备开发⼀个新功能,但是需要两周才能完成,第⼀周你写了50% 的代码,如果⽴刻提交,由于代码还没写完,不完整的代码库会导致别⼈不能⼲活了。如果等代码全部写完再⼀次提交,⼜存在丢失每天进度的巨⼤⻛险。现在有了分⽀,就不⽤怕了。你创建了⼀个属于你⾃⼰的分⽀,别⼈看不到,还继续在原来的分⽀上正常⼯作,⽽你在⾃⼰的分⽀上⼲活,想提交就提交,直到开发完毕后,再⼀次性合并到原来的分⽀ 上,这样,既安全,⼜不影响别⼈⼯作。

FBI_BAIGOU的博客 691

GitLab设置及取消保护分支

gitlab 取消 保护分支

大数据 9426
上一篇: [ Git ] 重学Git三剑客
下一篇: 解决IDEA配置 Maven home directory (每次修改Maven仓库路径后都会被还原为默认配置)失效问题
Captain Kai
Captain Kai 新星创作者: 后端开发技术领域 新星创作者: 后端开发技术领域
博客等级 码龄12年 3万+粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Captain Kai

我就随便打开看看,非常佛系..

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值