git使用之(四)git的那些冷门玩法

本文分享了Git中的一些高级操作,包括强制覆盖master分支、修改提交人信息、删除tag、解决git status乱码以及合并两个不相关的Git仓库。这些技巧对于日常开发工作非常实用。

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

强制覆盖master分支

最近对某个项目进行了升级,由于改动太多了,导致了大量的冲突,合并比较费劲。于是想用开发分支强制覆盖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仓库,忘记修改提交人信息了……于是导致提交信息都是个人公司邮箱等信息。

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

解决方案

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

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"

删除tag

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

解决方案

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

示例:

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

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仓库

使用GitLab Mirrors同步Git仓库

使用post receive hook同步Git仓库

github或者gitlab设置添加SSH,避免每次提交重复输入用户名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老周聊架构

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值