从程序员枪杀案谈git push -f

前段时间看到的消息:

  • 美程序员枪击4同事 竟因代码不写注释?

  • 【辟谣】因代码不规范,码农枪击4名同事一文


程序员不老老实实的当键盘侠,搞起自己的同事?

目前,码农持枪杀人的动机仍然是个谜。有人猜测道:“同事不写注释,不遵循驼峰命名,括号换行,最主要还天天git push –f等因素”激怒了这名行凶者。

看到上面的原因,感觉太假了,“天天git push –f”,开什么玩笑,第一天这么干就被打断腿了好不好?


Git 远程仓库简介

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。

在这类系统中,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

Git Push

所以不可避免的远程仓库和本地仓库,git 常用命令流程图如下:

git push命令用于将本地分支的更新,推送到远程主机。

$ git push <远程主机名> <本地分支名>:<远程分支名>

如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

$ git push origin master

上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。

Git Push -f

如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这是正常合理的代码提交流程。 这时,如果你一定要推送,可以使用--force选项。

$ git push --force origin

上面命令使用--force选项,结果导致远程主机上更新的版本被覆盖。同事之前推送的代码会被你抹掉,他可能刚刚提交了一整个功能模块的代码,也许是一周的工作量。如果大家都不小心更新你的版本,OMG,前功尽弃。 除非你很确定要这样做,否则应该尽量避免使用--force选项。

怎么样避免使用 –force 选项?

1,只给自己用,要坑就坑自己。

我自己在工作的时候,通常会开一个分支出去做,但做完发现Commit 太过琐碎,便会想使用Rebase 来整理一下这个分支。虽然Rebase 是修改历史没错,但因为这个历史影响的范围只有我自己这个分支,所以并不会影响其它人正常使用:

$ git push -f origin features/my_branch

这样只会强制更新features/my_branch这个分支的内容,不会影响其它分支。

2,设置保护机制

但总是有人可能不小心使用了-f参数来Push,GitHub网站有提供保护机制,可以避免某个分支被Force Push。请到仓库的「Settings」页签,左边选择「Branches」,添加保护的规则;

同样,码云gitee.com等有也有样的设置(不过要付费企业项目);

内容部分参考"码中人":http://www.mzh.ren/git-push-force.html

侵权删;

由git push -f引发的程序员枪击血案相关推荐

  1. 程序员枪击事件引发的背后思考

    程序员枪击事件在我所关注的知识分享公众号和技术群方面传播的比较广. 针对该事件我要谈谈我的看法. 针对该公众号所说的,因注释不写.代码排版差.非驼峰命名和天天git push -f导致该程序员枪击自己 ...

  2. 关于Git基本的那些事(程序员干啥都需要的家伙事)持续更新中...

    目录 git的前世今生 git的安装 git分支 git基本操作 git常见问题(不断更新) 总结         git的前世今生 在讲操作之前我们先来认识一下什么叫git,git又是干什么用的和g ...

  3. git使用的基本流程_这 7 个免费的 Git 教程,适合所有程序员

    作者:杰哥的IT之旅 转发链接:https://mp.weixin.qq.com/s/ikNS93rjpDTWSXBnzVWwhw 前言 你一定用过一些源码控制软件,例如CVS,SVN,VSS,DFS ...

  4. git push -f 慎用

    git push -f 实战使用 Git Push git 常用命令流程图如下: git push命令用于将本地分支的更新,推送到远程主机. $ git push <远程主机名> < ...

  5. GitHub的女装大佬项目迅速蹿红,并引发广大程序员热议!

    来源丨程序IT圈 https://mp.weixin.qq.com/s/agkQn8cAcqE8NKxXRJXDmA 前段时间,一个名叫"Dress"的女装大佬开源项目在GitHu ...

  6. git push -f

    有的时候使用GIT工作时,会遇到一下这种问题, Pushing to git@github.com:519ebayproject/519ebayproject.git To git@github.co ...

  7. 美国程序员枪击案后的48小时,请放过程序员吧!

    昨天一篇 「突发:码农枪击了 4 名同事,导致一人情况危急」 的文章基本刷爆程序员圈了.一时各大公众号都纷纷借题发挥,调侃程序员的.黑化的.讥讽的评论都有了. 事情的经过我不做任何修饰的贴给大家. 主 ...

  8. git 获取最新代码_程序员必知:这是一份全面 amp; 详细的 Git与Github 介绍指南

    前言 如果你从事 互联网技术研发,那么你一定需要 了解 Git & Github 本文将采用 图 & 表的方式,向你全面介绍 Git 与 Github,包括其功能.应用场景 & ...

  9. 5年程序员生涯,使用的最频繁的Git 命令总结

    点击上方小詹学Python,选择"标星公众号" 优质文章,第一时间送达 作者:CRPER 链接:juejin.im/post/5de8d849e51d455808332166 前言 ...

最新文章

  1. memcacheq 服务安装与原理
  2. Vue中使用speak-tts插件实现点击按钮后进行语音播报(TTS/文字转语音)
  3. Java异常处理——try-with-resource 语法糖
  4. python文件读写_python基础-文件读写'r' 和 'rb'区别
  5. 2020下半年新机最新消息_提前剧透 2020 年下半年五大新机
  6. redis简单队列java_使用Redis的简单消息队列
  7. 阿里云 远程 mysql_阿里云 远程mysql
  8. 【BZOJ-3123】森林 主席树 + 启发式合并
  9. 《Linux高性能服务器编程》——2.7 IPv6头部结构
  10. 模拟ARP报文发送,通过改变拓扑结构,观察报文发送方法以及途径
  11. asp mysql性能_asp和mysql分页代码
  12. 超实用超全 || ZBrush笔刷大合集
  13. setoolkit制作简单钓鱼网站
  14. @人生随笔:一年一影帝,百年周星驰
  15. diskgenius克隆硬盘无法启动_用diskgenius成功拷出故障硬盘数据
  16. 怎样把照片中的头像扶正_礼仪|职场人士微信头像怎么选才得体?
  17. 从技术到应用实践 揭秘京东区块链布局全景
  18. 2022年厦门大学计算机考研复试分数线多少
  19. java多线程并发之旅-09-java 生产者消费者 Producer/Consumer 模式
  20. oracle最小采购量,EBS oracle 批量导入更新MOQ(最小拆分量、采购提前期、最小订购量、最小包装量)...

热门文章

  1. Jquery实现图片切换的三种方法
  2. 干货分享--社群促活的12种方式
  3. python 全文检索_Python whoosh 全文检索
  4. 图像处理之水波纹扩散效果(water ripple effect)
  5. cmd删除文件/文件夹
  6. Windows系统Hadoop下载安装
  7. linux命令修改文本,linux中文本修改操作命令
  8. php instr(),vb中instr函数怎么用
  9. Altium Designer(AD) 输出Gerber文件
  10. linux中mysql8设置不区分表名大小写