盘点Git的那些冷门玩法
目录
其实也不是很冷门,只是要实现以下需求时,笔者一时间竟然想不起来,还要借助搜索引擎,于是记录一下,算是 备忘。希望对大家也有帮助。
强制覆盖master分支
最近对 Spring Cloud YES 进行了升级,由于改动太多了,导致了大量的冲突,合并比较费劲。于是想用开发分支强制覆盖master分支,以下是步骤。
解决方案
切换到develop分支下,并保证本地已经同步了远端develop的最新代码。
1
2git checkout develop
git pull把本地的develop分支强制(-f)推送到远端master。
1
git push origin develop:master -f
切换到旧分支master。
1
git checkout master
下载远程仓库最新内容,不做合并。
1
git fetch --all
把HEAD指向master最新版本。
1
git reset --hard origin/master
参考文档
修改提交人信息
近日用公司电脑提交代码到个人Git仓库(是的,阿里不禁GitHub,也不禁止用公司电脑提交私人仓库哦,只要不涉及公司商业机密即可),忘记修改提交人信息了……于是导致提交信息都是个人公司邮箱等信息……
感觉这种信息比较敏感,所以想把提交记录修改掉。
解决方案
以下是操作步骤,记录一下,防止未来有类似需求时又到处搜索。
批量修改本地提交记录:
1
2
3git filter-branch -f --env-filter \
"GIT_AUTHOR_NAME='要改成的提交人用户名'; GIT_AUTHOR_EMAIL='要改成的提交人邮箱'; \
GIT_COMMITTER_NAME='要修改的提交人用户名'; GIT_COMMITTER_EMAIL='要修改的提交人邮箱';"push
1
git push -u -f
搞定!
根本
要想从根本上解决问题,应该养成习惯,在clone完项目后,就立马为每个仓库设置提交人信息:
1 | git config user.name "itmuch" |
参考文档
删除tag
前几天要发布一个私人小项目,然而手误,打错标签了,想要删除。由于这种场景比较少,一时间竟然忘记怎么玩了……大写的尴尬。记录下:
解决方案
1 | 本地删除 |
示例:
1 | git tag -d v1.0 |
参考文档
git status
乱码
笔者使用 Iterm2
,当执行 git status
如果文件名带有中文,会出现乱码,如下所示:
1 | On branch master |
解决方案
1 | git config --global core.quotepath false |
此时,再次执行 git status
就会正常显示啦:
1 | On branch master |
参考文档
当git遇上中文乱码 ,里面还有其他乱码场景的解决方案。
合并两个不相关的Git仓库
17年总结的:合并两个不相关的Git仓库
评论系统未开启,无法评论!