专栏首页A周立SpringCloud盘点Git的那些冷门玩法

盘点Git的那些冷门玩法

其实也不是很冷门,只是要实现以下需求时,笔者一时间竟然想不起来,还要借助搜索引擎,于是记录一下,算是 备忘。希望对大家也有帮助。

强制覆盖master分支

最近对 Spring Cloud YES[1] 进行了升级,由于改动太多了,导致了大量的冲突,合并比较费劲。于是想用开发分支强制覆盖master分支,以下是步骤。

解决方案

1 切换到develop分支下,并保证本地已经同步了远端develop的最新代码。

git checkout develop
git pull

2 把本地的develop分支强制(-f)推送到远端master。

git push origin develop:master -f

3 切换到旧分支master。

git checkout master

4 下载远程仓库最新内容,不做合并。

git fetch --all

5 把HEAD指向master最新版本。

git reset --hard origin/master

参考文档

Git强制覆盖master分支[2]

修改提交人信息

近日用公司电脑提交代码到个人Git仓库(是的,阿里不禁GitHub,也不禁止用公司电脑提交私人仓库哦,只要不涉及公司商业机密即可,是不是更有来阿里的欲望了呢?如需内推,前往:阿里内推 查看详情),忘记修改提交人信息了……于是导致提交信息都是个人公司邮箱等信息……

感觉这种信息比较敏感,所以想把提交记录修改掉。

解决方案

以下是操作步骤,记录一下,防止未来有类似需求时又到处搜索。

1 批量修改本地提交记录:

git filter-branch -f --env-filter \
    "GIT_AUTHOR_NAME='要改成的提交人用户名'; GIT_AUTHOR_EMAIL='要改成的提交人邮箱'; \
    GIT_COMMITTER_NAME='要修改的提交人用户名'; GIT_COMMITTER_EMAIL='要修改的提交人邮箱';"

2 push

git push -u -f

搞定!

根本

要想从根本上解决问题,应该养成习惯,在clone完项目后,就立马为每个仓库设置提交人信息:

git config user.name "itmuch"
git config user.email "eacdy0000@126.com"

参考文档

•git 修改已提交的某一次的邮箱和用户信息[3]•git修改提交作者和邮箱[4]

删除tag

前几天要发布一个私人小项目,然而手误,打错标签了,想要删除。由于这种场景比较少,一时间竟然忘记怎么玩了……大写的尴尬。记录下:

解决方案

# 本地删除 
git tag -d [tag名称]
# 远程删除
git push origin :refs/tags/[tag名称]

示例:

git tag -d v1.0
git push origin :refs/tags/v0.9

参考文档

操作标签[5]

git status 乱码

笔者使用 Iterm2 ,当执行 git status 如果文件名带有中文,会出现乱码,如下所示:

On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   "\345\276\205\345\217\221\345\270\203/git status\344\271\261\347\240\201.md"

解决方案

git config --global core.quotepath false

此时,再次执行 git status 就会正常显示啦:

On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   待发布/git status乱码.md

no changes added to commit (use "git add" and/or "git commit -a")

参考文档

当git遇上中文乱码[6] ,里面还有其他乱码场景的解决方案。

合并两个不相关的Git仓库

17年总结的:合并两个不相关的Git仓库

使用GitLab Mirrors同步Git仓库

使用GitLab Mirrors同步Git仓库[7]

使用post receive hook同步Git仓库

使用post receive hook同步Git仓库[8]

本文分享自微信公众号 - IT牧场(itmuch_com),作者:itmuch

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Boot 2.x监控数据可视化(Actuator + Prometheus + Grafana手把手图文教程)

    众所周知,Spring Boot有个子项目Spring Boot Actuator,它为应用提供了强大的监控能力。从Spring Boot 2.0开始,Actu...

    用户1516716
  • 理解HTTP幂等性

    基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的W...

    用户1516716
  • 跟我学Spring Cloud(Finchley版)-08-Ribbon深入

    如需自定义负载均衡规则,只需实现IRule 接口或继承AbstractLoadBalancerRule、PredicateBasedRule即可 ,读者可参考 ...

    用户1516716
  • Git 从入门到精通,这篇包教包会!

    集中化的版本控制系统,诸如 CVS,Subversion 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器...

    java思维导图
  • Git常用命令

     以下是学习git时常用的命令,大致总结了以下,用git做版本控制所用的命令挺多的,但常用的也在大脑承受的范围之中,把自己总结的东西给大家分享一下。   1....

    lizelu
  • Git 工作流的正确打开方式

    前言 一直在使用git做版本控制,也一直工作很顺利,直到和别人发生冲突的时候。这才注意到git 工作流并不是那么简单。比如,之前遇到的清理历史。百度到的资料很...

    Ryan-Miao
  • 搭建自己的Git服务器

    搭建Git服务器   让我们先看下服务器端SSH访问的配置。在这个例子中,我们使用authorized_keys的方法认证用户。我们假设你的服务器是一个标...

    慕白
  • Git快速入门

    git作为现在最为流行的版本管理系统,大部分公司都使用git进行版本控制,并且最大程序员交友网站github也是在git的基础上建立的。 很多人认为git难,在...

    腾讯工蜂
  • 【github】快速使用指南基本操作高阶技巧ToDo参考资料

    http://img.blog.csdn.net/20140717215453576

    keloli
  • Git - 想说爱你不容易

    想学git,我们首先要有一个Github账号,关于Github是什么,以及怎么注册及使用,git的诞生请看这篇文章。

    用户5426759

扫码关注云+社区

领取腾讯云代金券