我有一个有太多提交的远程分支。我想从中删除 37fba70e 之后的所有提交。这是它在 bitbucket 上的样子:
我在git branch -f origin/start-defblock-on-long-hyphen 37fba70e
本地做了,现在我的日志看起来像:
commit 37fba70ef7db1ce244d6e0c0d4e3b42d95dd7cb0 (HEAD -> origin/start-defblock-on-long-hyphen)
Author: First Last <[email protected]>
Date: Thu Apr 11 13:28:51 2019 +0200
added ')].' to valid end
commit 30fa3879845184405aba590b85380a6793ed5051
Author: First Last <[email protected]>
Date: Wed Apr 10 16:02:31 2019 +0200
accept to start def on moment start if start element is long dash
commit 57157406ab149b2934bfb2db7e6a6021bf950e02
Author: First Last <[email protected]>
Date: Wed Apr 10 15:42:06 2019 +0200
added long dash to valid start
这看起来是正确的,所以我想将这些更改推送到 bitbucket,但git push origin start-defblock-on-long-hyphen
不会更改任何内容。输出很简单:
Everything up-to-date
并且 Bitbucket 提交历史看起来和以前一样。
我怎样才能达到我想要的?
你跑了:
git branch -f origin/start-defblock-on-long-hyphen 37fba70e
这是一个错误!这创造了一个地方名为分支origin/start-defblock-on-long-hyphen
。这种情况(对每个人)都非常令人困惑,因为通常以 开头的名称origin/
是为您自己的远程跟踪名称保留的。
您的git log
输出现在开始于:
commit 37fba70ef7db1ce244d6e0c0d4e3b42d95dd7cb0 (HEAD -> origin/start-defblock-on-long-hyphen)
这意味着您还运行了git checkout origin/start-defblock-on-long-hyphen
,它现在是您当前的分支。
要解决此问题,您可能应该首先将此本地分支重命名为更本地化的名称:
git branch -m origin/start-defblock-on-long-hyphen start-defblock-on-long-hyphen
我希望这将失败,因为我相信你也有一个地方叫分支start-defblock-on-long-hyphen
。如果是这样,您可以:
origin/
完全删除本地名称。采取哪些行动的确切选择取决于您——每个行动都略有不同,但最终它们可能都会产生相同的效果。在最安全的是重命名当地一个第一,那么origin/
-named地方之一:
git branch -m start-defblock-on-long-hyphen old-start-defblock-on-long-hyphen
git branch -m origin/start-defblock-on-long-hyphen start-defblock-on-long-hyphen
(请注意,如果您已经有一个名为 的本地分支start-defblock-on-long-hyphen
,则您有一个单独的问题)。完成后,您可以重复您的:
git push origin start-defblock-on-long-hyphen
这应该立即失败,因为您必须--force
在此操作的接收端使用或等效命令来命令 Git(即 Bitbucket 上的 Git)来丢失所有额外的提交,但如果这是目标,以及任何其他用户这个 Bitbucket Git 同意丢失它们是可以的,继续使用--force
. 您可能还想在推送期间使用-u
或--set-upstream
标志,即:
git push --force -u origin start-defblock-on-long-hyphen
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句