- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我最初尝试像这样推送我的(有史以来第一次!)git repo:
$ git push helloworld
但我得到了这个:
To git-smichaels@free5.projectlocker.com:helloworld.git
! [rejected] HEAD -> master (non-fast forward) error:
failed to push some refs to 'git-smichaels@free5.projectlocker.com:helloworld
git'
所以我找到了another StackOverflow question关于“修改后的提交”并尝试了那里的建议但实际上不知道它是否对我有帮助:
KaiserSosa@SMICHAELS /c/test/helloworld (master)
$ git push helloworld +master:master
成功了!
但我不知道为什么它解决了我的问题:(
有人可以解释为什么这行得通但“git push helloworld
”不行吗?
最佳答案
看来您已经在您的 master 分支中重写了您的历史记录(与您的提交关联的 SHA-1)。
这意味着,您不能再以快进模式 push 。
+master 强制推送发生:
通过使用可选的前导 +,您可以告诉 git 更新 <dst>
ref 即使更新不是快进。
注意:如果其他人已经克隆了您的存储库,这可能会很糟糕,因为他们将不再能够在不发生冲突的情况下 pull 您的 master 分支。
另见 SO answer for more .
注:如前所述by Junio C. Hamano :
There are two independent safety mechanisms:
the sending end safety can be overridden by "
git push --force
" and/or by using a refspec prefixed with a '+
');the receiving end safety can be overridden by the config variable
receive.denynonfastworwards
of the repository you are pushing into.The latter defaults to "unsafe", but if the safety is activated in the repository, forcing from the sending side will not deactivate it. IOW, both ends need to agree to allow the unsafe behavior.
如 Git FAQ 中所述,一个可能的行动方案是:
The most likely reason for this is that you need to pull from the remote first. You can see what changes the remote side has by fetching first and then checking the log. For example,
$ git fetch origin
$ git log master..origin/master
will list all the changes the remote side has that your side doesn't.
If you want a graphical representation, usegitk --left-right master...origin/master
.
The arrows to the left are changes you want to push, the arrows to the right are changes on the remote side.
其他解决方案(这是你所做的):
$ git push origin +branchname
This will force the update. If you don't have permission, then sometimes this will work:
$ git push origin :branchname
$ git push origin +branchname
i.e., delete the branch remotely first (this is often permitted), then re-push the "new" (or perhaps rewound) branch.
Be warned that if you rewind branches, others might get into problem when pulling.
There is the chance that they will merge in the branch that they fetched with the new one that you've published, effectively keeping the changes that you are trying to get rid of.
However, it will only be their copies that have the bad revisions. For this reason, rewinding branches is considered mildly antisocial. Nonetheless, it is often appropriate.
关于git - 为什么是 "git push helloworld +master:master"而不是 "git push helloworld"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1475665/
我在 2 个不同的节点中设置了 master-master mysql 复制。假设如果我要再添加一个节点,即 3rd master ,我是否需要在新服务器中拥有与节点 1 和节点 2 中完全相同的数据
我认为我在理解 git 的基本概念方面是正确的。 我已经设置并克隆了一个远程存储库。我还创建了一个服务器端空存储库,并将我的本地存储库链接到它。 我的问题是我不明白: origin/master 与
从概念上讲,Master-Master 复制是如何工作的? 我认为碰撞将是一种需要以某种方式解决的常见事件。 最佳答案 主-主复制(更一般地——多主复制)在概念上的工作原理是假设冲突并不常见,并且只保
众所周知,mysql 是异步复制的。我听说我需要一些额外的插件来做 同步复制。 那么让我们考虑一下异步复制的情况:master 将事件写入其二进制日志,但不知道 master2 是否或何时检索并处理了
我正在寻求有关 MySql Master-Master 配置问题的帮助。 我正在处理由另一名员工设置的服务器配置,该员工现在无法就此事提供任何帮助。这是我第一次体验这样的设置,在做了相当多的研究之后,
尝试使用 HADOOP 运行 HBASE 时出现以下错误HBASE 0.98.xHADOOP 2.4.0 ERROR [main] master.HMasterCommandLine: Mas
停止独立 Spark Master 失败并显示以下消息: $ ./sbin/stop-master.sh no org.apache.spark.deploy.master.Master to sto
我不确定这是否是一个正常的分支场景,但是...... 假设我从 master 创建一个分支,比如分支 C,然后 merge 回其他先前存在的分支,比如分支 A 和 B,回到 master,然后我需要分
我无法推送到我的 git 存储库。 git clone和 git pull工作正常,但 git push不起作用。 我检查了其他答案,如 here尝试了几种方法,例如 git push origin
所以如果我在 master 中做: git checkout -b my-branch 并在那里做几次提交+推送。然后我做: git checkout master git pull 我现在能以某种方
我设置了 2 个 MYSQL 服务器: my.cnf server1: auto_increment_increment = 2 auto_increment_offset = 1 my.cnf se
我想知道一个服务器是否可以同时是slave和master。我们的问题是我们有很多移动单元需要同步到主服务器,但它们只需要主服务器上 100 个表中的 6 个。除了延迟同步和增加数据成本之外,所有额外的
我有主-主 Mysql 复制。每个主控复制其他主控。谁能解释一下为什么该主机上的 log-bin 文件不同? (尺寸差异很小)。谢谢! 最佳答案 嗯。我们决定使用 mysql 5.6 及其功能 - G
我正在努力理解这里的逻辑,如果术语不正确,我深表歉意。 我正在尝试构建一个功能类似于邮件的应用程序,IE: 所有邮箱 > 特定邮箱 > 消息 其中“所有邮箱”和“特定邮箱”占据 Controller
我一直在使用 master 分支进行开发,并希望将其清除为只有发布提交,以及它的用途。如何将所有内容从 master 复制到开发分支,然后重新启动 master? 最佳答案 Create develo
两周前,我创建了一个新分支,我们称它为exp。在此期间,exp 和 master 中都有几次提交。在此期间,exp 尚未更新 master 的更改 现在我想把所有从 exp 到 master 的更改都
我克隆:https://github.com/vy2014/git_lesson.git 然后我做了一些改动,尝试通过命令git push推送到远程服务器,但是错误: Counting objects
有没有好的方法来解释如何在 Git 中解决“![rejected] master -> master (fetch first)'”? 当我使用此命令时 $ git push origin maste
我该怎么办: 1)恢复推送到主(远程)的更改 2)将这些更改移动到单独的分支 3) 稍后将这些更改移回 master 最佳答案 首先做 2),但前提是你真的需要分支。 git branch chang
符号上有什么区别? 在我的一个工作站上,我克隆的 git 存储库显示(master),而另一个工作站则显示(master -> origin) 我还创建了一个新的本地存储库,提交了一个文本文件,提示仍
我是一名优秀的程序员,十分优秀!