社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

盘点Git的那些冷门玩法

IT牧场 • 7 年前 • 744 次点击  

点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达!

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

强制覆盖master分支

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

解决方案

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

git checkout developgit 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.0git push origin :refs/tags/v0.9

参考文档

操作标签[5]

git status 乱码

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

On branch masterYour branch is up to date with 'origin/master'.
Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." 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 masterYour branch is up to date with 'origin/master'.
Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." 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]

干货分享

最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!

•001:《Java并发与高并发解决方案》学习笔记;•002:《深入JVM内核——原理、诊断与优化》学习笔记;•003:《Java面试宝典》•004:《Docker开源书》•005:《Kubernetes开源书》 •006:《DDD速成(领域驱动设计速成)》

近期热文

•6到飞起的Java诊断工具Arthas•Spring Cloud学习资源一网打尽!Awesome Spring Cloud v1.0•干货|Spring Cloud Bus 消息总线介绍•面试官问我,SpringApplication.run做了哪些事?•分享:个人是怎么学习新知识的•MySQL数据库“十宗罪”(十大经典错误案例)•干货|Spring Cloud Stream 体系及原理介绍

关注我

References

[1] Spring Cloud YES: https://github.com/eacdy/spring-cloud-yes
[2] Git强制覆盖master分支: https://www.cnblogs.com/king-le0/p/10097583.html
[3] git 修改已提交的某一次的邮箱和用户信息: https://segmentfault.com/q/1010000006999861
[4] git修改提交作者和邮箱: https://blog.csdn.net/diu_brother/article/details/51982993
[5] 操作标签: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001376951885068a0ac7d81c3a64912b35a59b58a1d926b000
[6] 当git遇上中文乱码: https://www.cnblogs.com/jason0529/p/8962842.html
[7] 使用GitLab Mirrors同步Git仓库: http://www.itmuch.com/work/git-repo-sync-with-gitlab-mirrors/
[8] 使用post receive hook同步Git仓库: http://www.itmuch.com/work/git-repo-sync-with-post-receive/

点"在看"是一种美德^_^

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/31694