- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我觉得这个问题已经被问过很多次了,但解决方案通常是“我删除了目录并重新检查了我的工作”。我进行了提交和推送,但意识到我在提交消息中引用了错误的票号。所以我快速查看了 SO solution并最终在终端中输入以下内容:
$ git reset --soft HEAD^
$ git commit -m "... correct message ..."
唯一的问题是我收到以下错误消息:
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'Note about
fast-forwards' section of 'git push --help' for details.
我正在使用 git-flow 模型并在开发分支上工作。我怎样才能将东西 merge 回去让 git 再次开心?
最佳答案
如果您将提交推送到服务器,然后在本地重写该提交(使用 git reset
、git rebase
、git filter-branch
或任何其他历史操作),然后将重写的提交推送回服务器,你会搞砸其他 pull 过的人。这是一个例子;假设你提交了 A,并将其推送到服务器。
-*-*-A <-- master-*-*-A <-- origin/master
Now you decide to rewrite A, in the way you mentioned, resetting and re-committing. Note that this leaves a dangling commit, A, which will eventually be garbage collected as it is not reachable.
-*-*-A \ A' <-- master-*-*-A <-- origin/master
If someone else, let's say Fred, pulls down master
from the server while you're doing this, they will have a reference to A, which they might start working from:
-*-*-A' <-- master-*-*-A <-- origin/master-*-*-A-B <-- fred/master
Now if you were able to push your A' to origin/master, which would create a non-fast-forward, it wouldn't have A in its history. So if Fred tried to pull again, he'd suddenly have to merge, and would re-introduce the A commit:
-*-*-A' <-- master-*-*-A <-- origin/master-*-*-A-B-\ \ * <-- fred/master A'--/
If Fred happens to notice this, then he could do a rebase, which would prevent commit A from reappearing again. But he'd have to notice this, and remember to do this; and if you have more than one person who pulled A down, they would all have to rebase in order to avoid getting the extra A commit in the tree.
So, it's generally not a good idea to change history on a repo that other people pull from. If, however, you happen to know that no one else is pulling from that repo (for instance, it's your own private repo, or you only have one other developer working on the project who you can coordinate with easily), then you can forcibly update by running:
git push -f
或
git push origin +master
这些都将忽略对非快进推送的检查,并将服务器上的内容更新为新的 A' 修订版,放弃 A 修订版,因此它最终将被垃圾收集。
receive.denyNonFastForwards
配置选项可能会完全禁用强制推送。默认情况下,此选项在共享存储库上启用。在那种情况下,如果你真的非常想强制推送,最好的选择是删除分支并重新创建它,使用 git push origin :master; git push origin master:master
.但是,启用 denyNonFastForwards
选项是有原因的,如上所述;在共享存储库上,这意味着现在使用它的每个人都需要确保他们 rebase 到新的历史。
在共享存储库上,通常最好将新提交推送到最上面以解决您遇到的任何问题;你可以使用 git revert
生成将撤消先前提交更改的提交。
关于Git 非快进被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667476/
我只想允许一个国家/地区访问,但排除该国家/地区内的代理。 这就是我所拥有的(为了方便起见,缩短了版本) order deny,allow deny from all allow from 139.
这个问题在这里已经有了答案: What is an unhandled promise rejection? (9 个回答) 关闭 4 年前。 我目前正在尝试实现我自己的 Promise,以便在 A
我在使用 Gitolite 推送 git 时遇到问题。 当我尝试这个时: git push origin :refs/tags/deployment 我收到这个错误: remote: D NAME/i
我已经为我的 laravel 5.0-dev 项目配置了 mysql,如下所示: 'mysql' => [ 'driver' => 'mysql', 'host' =>
我对 Web 和 SOF 进行了一些研究,但发现对于该错误没有任何真正的帮助。 我使用 Windows 10 Ubuntu Bash 安装了 Node 和 Puppeteer,但未能使其工作,但我设法
在我的应用审核期间,我收到了以下信息: “17.2:要求用户共享个人信息(例如电子邮件地址和生日)才能正常运行的应用将被拒绝 具体来说,您的应用仅使用Facebook登录名进行身份验证,但不包括该网站
我正在开发 VeriFone VX 终端的接口(interface)。虽然,这确实是一个普遍的 EMV 问题。我们的处理器的下限为零,因此它将始终在线发送。但是,如果它发生变化,您如何知道(哪些标签)
我编写了一些宏代码,根据表单提交向经理发送电子邮件(用于费用/审批流程),这是我使用谷歌表单/电子表格的第一个项目,所以也许我可能会错过一些简单的东西,但我为此浏览了 2 个教程,我的代码与重要的部分
clang 3.4 接受以下代码;而 vc++ NOV 2013 CTP 拒绝它并出现错误: error C2668: 'AreEqual' : ambiguous call to overloade
使用 nginx,您可以允许和拒绝范围和 ips (https://www.nginx.com/resources/admin-guide/restricting-access/)。使用realip模
官方编辑: 非常感谢您的帮助,但我仍然遇到问题。 我的 ffserver.conf 文件是这样的: # Port on which the server is listening. You must
我有一个问题:我是 Ubuntu 系统的根。我想授予用户(比如用户名是 X)执行任何命令的权限,但同时我有一个文件夹,除了我的用户(当然不是 X,因为它是 Admin ) 或根。有什么建议么?谢谢!
我使用 Apache2.2 作为 tomcat 服务器的前端。我想限制对某个位置的访问,但允许对子位置的所有访问,但遇到了一些麻烦。 我目前拥有的是: AllowOverride None
就像 this person ,我一直在为浏览器缓存 SSL session 而苦苦挣扎。简而言之,如果选择了客户端证书,则无法以编程方式清除状态,除非在 IE 中使用 document.execCo
我的网站是在由 Apache 服务器提供服务的 Angular 上设置的。我通过 View 将内容动态加载到主页上。 现在以下是我的问题: 我建立这个网站的主要目的是通过 google adsense
我最近遇到了我的应用程序的问题,当它突然被 Google Play 拒绝时因为他们发现我使用的是背景位置 .但实际上我并没有使用这个功能。我只有 ACCESS_COARSE_LOCATION和 ACC
function sendPushNotification(subscription, urlEncodedData){ try { webpush.sendNotification(su
我包裹了一个 request-promise-native调用返回 promise 的函数。 import request from 'request-promise-native'; functio
我正在开发我的 meteor 项目,并开始设置我的第一个更复杂的允许/拒绝规则。我发现很难看出哪些允许触发,哪些不允许触发,以及这些函数中的某些变量包含什么。例如: List.allow({ u
我正在 AngularJS 中创建一个 Factory,它是这样的: if (href) { return $http({ method: method, url: item.href });
我是一名优秀的程序员,十分优秀!