Git基本操作之强制推送覆盖仓库

前面的博文简单介绍了Git的基本知识和常见用法,链接如下:

  1. 《Git基础知识之内部状态管理系统》 https://www.cnblogs.com/phillee/p/14598437.html
  2. 《Git 基本操作之简明指南》 https://www.cnblogs.com/phillee/p/14516406.html
  3. 《Git基本操作之远程仓库下载与保存、本地仓库初始化并推送》 https://www.cnblogs.com/phillee/p/10610687.html
  4. 《Git基本操作之Terminal命令行新建仓库并推送到远程仓库》 https://www.cnblogs.com/phillee/p/14308137.html
  5. 《Git基本操作之项目自定义配置、游离分支保存、忽略规则、本地与远程仓库同步及代理服务器问题》 https://www.cnblogs.com/phillee/p/11497726.html
  6. 《通过Git在本地局域网中的两台电脑间同步代码》 https://www.cnblogs.com/phillee/p/15353020.html

0.前言

git中有一些如果操作不当容易出大问题的命令,例如git push -fgit push -f是一个需要特别谨慎对待的指令。因为它完全无视先来后到的规则,会将提交历史一并覆盖掉。

非特殊情况不建议使用,每次使用前请务必确认你知道自己在做什么,保持头脑清醒。

1.基本使用方法

有时候仓库commit的历史记录真的太乱了,想要借助rebase指令好好整理一下,因为它修改的是已经发生的事实,正常来说是无法推送的,而使用强制推送就能解决这个问题。

基本语法如下

git push <远程主机名> <本地分支名>

如果想将本地的 master 分支推送到 origin 主机的 master 分支,可以使用以下指令

$ git push origin master # 等价于:git push origin master:master

如果本地版本与远程版本有差异,但又要强制推送,使用 --force 参数:

$ git push --force origin master

再一次强调:除非只有自己一个人用,不然不建议使用git push --force

2.有可能出现的问题

2.1 non-fast-forward错误

这不,我在前几天使用时就出现了一点小问题,不过也没造成什么影响,解决方案一并附上。当时是想进行局域网中不同机器之间的代码同步,详见 通过Git在本地局域网中的两台电脑间同步代码

问题描述

cv:mylocalrepo.git cv$ git push -f
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To file:///Users/cv/misc_codes/myrepo.git
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'file:///Users/cv/misc_codes/myrepo.git'

解决方案

进入中转仓库,查看 config 信息,[receive] 一栏的denyNonFastforwards = true是默认值,可以手动修改为false。

这时再在本机或者另外一台机器的克隆仓库进行push就没有问题了。

(全文完)


参考资料

[1] git push rejected: error: failed to push some refs https://stackoverflow.com/questions/9832348/git-push-rejected-error-failed-to-push-some-refs

[2] Denying non-fast-forward and SourceForge https://pete.akeo.ie/2011/02/denying-non-fast-forward-and.html

本文作者 :phillee
发表日期 :2021年9月29日
本文链接https://www.cnblogs.com/phillee/p/15352893.html
版权声明 :自由转载-非商用-非衍生-保持署名(创意共享3.0许可协议/CC BY-NC-SA 3.0)。转载请注明出处!
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

感谢您的支持

¥ 打赏

微信支付

原文地址:https://www.cnblogs.com/phillee/p/15352893.html