如何正确强制执行Git推送?
我已经建立了一个远程的非裸露的“主”仓库,并将其克隆到我的计算机上。 我进行了一些本地更改,更新了本地存储库,然后将更改推回到远程仓库中。 到那时为止一切都很好。
现在,我不得不更改远程仓库中的某些内容。 然后,我更改了本地存储区中的某些内容。 我意识到不需要更改远程仓库。 所以我尝试将本地存储库中的git push
送到远程存储库中,但是出现类似以下错误:
为了防止丢失历史记录,拒绝了非快进更新,请在合并之前合并远程更改。 有关详细信息,请参见
git push --help
的“关于快进的说明”部分。
我以为可能
git push --force
会强制我的本地副本将更改推送到远程副本,并使其相同。 它确实强制执行更新 ,但是当我返回到远程存储库并进行提交时,我注意到文件包含了过时的更改(主要远程存储库以前具有的更改)。
正如我在对答案之一的评论中提到的 :
[我]尝试强制执行,但是当回到主服务器以保存更改时,我得到了过时的暂存。 因此,当我提交存储库时,它们是不一样的。 当我再次尝试使用git push时,出现相同的错误。
如何解决此问题?
#1楼
做就是了:
git push origin <your_branch_name> --force
或者,如果您有特定的仓库:
git push https://git.... --force
这将删除您以前的提交并推送您当前的提交。
可能不合适,但是如果有人偶然发现此页面,以为他们可能想要一个简单的解决方案...
短旗
另请注意, -f
是--force
缩写,因此
git push origin <your_branch_name> -f
也可以。
#2楼
如果push --force
不起作用,您可以执行push --delete
。 查看此实例的第二行:
git reset --hard HEAD~3 # reset current branch to 3 commits ago
git push origin master --delete # do a very very bad bad thing
git push origin master # regular push
但是要当心...
永远不要回到公开的git历史上!
换一种说法:
- 永远不要
force
推动公共存储库。 - 请勿执行此操作或执行任何可能破坏某人
pull
。 - 永远不要在可能已经拉过的仓库中
reset
或rewrite
历史记录。
当然,即使有此规则,也有非常罕见的例外,但是在大多数情况下,不需要这样做,它将给其他所有人带来麻烦。
请还原。
并始终谨慎对待您要公开回购的内容 。 还原:
git revert -n HEAD~3..HEAD # prepare a new commit reverting last 3 commits
git commit -m "sorry - revert last 3 commits because I was not careful"
git push origin master # regular push
实际上, 两个原始HEAD(来自revert和来自邪恶的reset )都将包含相同的文件。
编辑以在push --force
周围添加更新的信息和更多参数
考虑使用租约推力而不是推力,但仍希望还原
push --force
可能带来的另一个问题是,有人在您执行任何操作之前但在您已取回操作之前进行了任何操作。 如果您现在强制您重新设置版本,则您将替换其他人的工作 。
git push --force-with-lease
1.8.5中引入的git push --force-with-lease
( 感谢@VonC对问题的评论)试图解决此特定问题。 基本上,如果自从最近一次获取以来修改了遥控器,它将带来一个错误并且不会推送。
如果您确实确定需要push --force
这很好,但是仍然希望防止出现更多问题。 我要说的应该是默认的push --force
行为。 但这仍然不是强迫push
的借口。 在您恢复 基准之前拿到钱的人仍然会遇到很多麻烦,如果您转而恢复 ,则可以轻松避免。
由于我们在谈论git --push
实例...
为什么有人要强迫推?
@linquize在评论中带来了一个很好的推动力示例: 敏感数据 。 您错误地泄漏了不应推送的数据。 如果你足够快,你可以“修复” *
通过强制在上面推它。
*
除非您也进行垃圾收集或以某种方式清除它 ,否则数据仍将位于远程上 。 它也很可能被已经拿来的其他人传播,但是您明白了。
#3楼
如果我在本地分支A上,并且要强制将本地分支B推到原始分支CI,则可以使用以下语法:
git push --force origin B:C
#4楼
这是我们在维护历史记录的同时替换公司gitHub存储库上的master的解决方案。
经常禁用push -f
来掌握公司存储库,以维护分支机构的历史记录。 该解决方案为我们工作。
git fetch desiredOrigin
git checkout -b master desiredOrigin/master // get origin master
git checkout currentBranch // move to target branch
git merge -s ours master // merge using ours over master
// vim will open for the commit message
git checkout master // move to master
git merge currentBranch // merge resolved changes into master
将您的分支推到desiredOrigin
并创建PR
#5楼
使用以下命令:
git push -f origin master
#6楼
首先,我不会直接在“主”存储库中进行任何更改。 如果您真的想拥有一个“主”仓库,那么您应该只推送它,而不要直接更改它。
关于您遇到的错误,您是否尝试git pull
本地存储库进行git pull
,然后将git push
到主存储库? 您当前正在执行的操作(如果我理解得很好)是强制执行该操作,然后丢失“主”存储库中的更改。 您应该首先在本地合并更改。
#7楼
我真的建议您:
只推送到主仓库
确保主存储库是裸存储库 ,以免主存储库工作树与其
.git
库不同步。 请参阅“ 如何将本地git存储库推送到另一台计算机? ”如果您确实必须在主(裸机)存储库中进行修改,请克隆它(在主服务器上),进行修改然后将其回推
换句话说,请确保从主服务器和本地计算机都可以访问裸仓库,以使单个上游仓库可以从中/从中进行拉取/拉取。
#8楼
我有同样的问题,但终于明白了。 您最可能需要做的是运行以下两个git命令(用git commit修订号替换哈希):
git checkout <hash>
git push -f HEAD:master
如何正确强制执行Git推送?相关推荐
- git推送项目到码云(gitee)
git推送项目到码云(gitee) git推送项目到码云(gitee) 创建账号 创建一个Gitee账号,我使用的是Gitee因为国内速度快~ 本地安装Git 前往 Git 根据操作系统下载Git到本 ...
- Git推送错误: failed to push some refs to ‘git@gitee.com:XXXXXX’
项目推送时遇Git推送错误: error: failed to push some refs to 'git@gitee.com:name/project.git' 1.分析: 这个问题的产生是因为远 ...
- 【git】git拉取,git推送,git查看,git切换操作命令合集
文章目录 git拉取 本地连接git账户仓库 本地拉取远程分支代码 git推送 提交代码到远程分支 git查看 查看当前在哪个分支上 查看远程分支 查看所有分支 查看文件在工作区的改动状态 查看文件内 ...
- linux git 推送空文件夹
/********************************************************************************** linux git 推送空文件夹 ...
- git 推送出现 “fatal: The remote end hung up unexpectedly“ 解决方案
在使用git推送项目时候出现 "fatal: The remote end hung up unexpectedly " 原因是推送的文件太大. 解决方案: 在克隆/创建版本库生成 ...
- 功能分支重新设置后,Git推送被拒绝
好的,我以为这是一个简单的git场景,我缺少什么? 我有一个master分支和一个feature分支. 我在master上做一些工作,在feature上做一些,然后再在master上做更多的工作. 我 ...
- git推送密码_保护代码完整性(六):在 Git 上使用 PGP
我们继续我们的 PGP 实践系列,来看看签名标签的标签和提交,这可以帮你确保你的仓库没有被篡改. 在本系列教程中,我们提供了一个使用 PGP 的实用指南,包括基本概念和工具.生成和保护你的密钥.如果你 ...
- 使用git推送代码到开源中国以及IDEA环境下使用git
2019独角兽企业重金招聘Python工程师标准>>> 在学习Java的过程中我们会使用到git这个工具来将我们本周所编写的代码上传到开源中国进行代码托管,而在使用git的时候有很多 ...
- git推送代码详细教程
前言: 在写这篇文章之前,其实我已经写过一次教程:git码云的一次配置全记录,但是当时写那个教程的时候,对于git的使用还是懵懵懂懂的,如果是新手完全照着做可能会出现一些意想不到的问题,所以在经历N次 ...
最新文章
- 技术图文:如何利用C#实现Huffman编码?
- python画圆简单代码-python实现画圆功能
- 利用GAN实现QR Code超分辨率的研究
- mysql慢查询面试题_头条Java岗3面入职:事务+慢查询SQL+Redis+秒杀设计面试题等
- 素数 [2008年北京航空航天大学计算机研究生机试真题]
- linux下定时网站文件备份和数据备份以及删除旧备份标准代码
- 处女的第一次不一定会流血!很感人 我都流泪了!
- scratch安装包|scratch最新版安装包|scratch3安装包|scratch3最新版安装包
- 自动驾驶决策规划研究综述
- TiDB Data Migration (DM)介绍
- 在vue里使用codemirror
- 构建 GPRS 网络(转)
- 如何解决移动硬盘/U盘无法打开并在电脑上显示为“本地磁盘”的问题
- ibm tivoli_在Tivoli Access Manager环境中管理TDS 6.0代理服务器并进行故障排除
- MFC中得到2个SYSTEMTIME时间差的函数
- 爱企查青龙可跑 一个月一张爱奇艺月卡最细教程
- MAC Book Pro 使用 libmodbus
- vue中如何使用富文本编辑器(TinyMce)
- K8s——kubernetes集群中ceph集群使用【上】
- java 众数 中位数_中位数和众数
热门文章
- ViewPager中Fragment的生命周期和FragmentPageAdapter与FragmentStatePageAdapter对其的影响
- Android 自定义控件开发入门(一)
- android studio gradle版本太低问题解决方案
- python中绝对路径的区别,理解Python中的绝对路径和相对路径
- 人工智能实践:TensorFlow笔记学习(四)—— 神经网络优化
- Swift URL含有中文的处理
- c++数据结构中 顺序队列的队首队尾_数据结构 3.3 顺序队
- python使用gevent实现协程
- Dubbo下载-从missing artifactId说起
- Python应用——自定义函数:分割PDF文件函数