盘点Git的那些冷门玩法(转发)

2020/7/26 8:03:34

本文主要是介绍盘点Git的那些冷门玩法(转发),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

强制覆盖master分支

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

解决方案

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

    1
    2
    git 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强制覆盖master分支

修改提交人信息

近日用公司电脑提交代码到个人Git仓库(是的,阿里不禁GitHub,也不禁止用公司电脑提交私人仓库哦,只要不涉及公司商业机密即可),忘记修改提交人信息了……于是导致提交信息都是个人公司邮箱等信息……

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

解决方案

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

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

    1
    2
    3
    git 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
2
git config user.name "itmuch"
git config user.email "eacdy0000@126.com"



    删除tag

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

    解决方案



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



    示例:



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



    参考文档

    操作标签

    git status 乱码

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



    1
    2
    3
    4
    5
    6
    7
    8
    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"



    解决方案



    1
    git config --global core.quotepath false



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



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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遇上中文乱码 ,里面还有其他乱码场景的解决方案。

    合并两个不相关的Git仓库

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

    使用GitLab Mirrors同步Git仓库

    使用GitLab Mirrors同步Git仓库

    使用post receive hook同步Git仓库

    使用post receive hook同步Git仓库







    这篇关于盘点Git的那些冷门玩法(转发)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


    扫一扫关注最新编程教程