如何将远程分支重置为旧提交

萨汉德

我有一个有太多提交的远程分支。我想从中删除 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将远程分支重置为特定提交?

如何重置远程分支的提交?

如何将git分支重置为给定的先前提交并修复分离的HEAD?

如何将分支的起点移动到较旧的提交

如何将远程上的开发分支重置为主节点

将本地 Git 分支重置为远程

如何将开发分支重置为母版

将远程重置为特定提交

Git,如何将原点/主节点重置为提交?

如何将文件重置为某个提交?

如何将git工作树重置为更新的提交

如何将一个提交从一个远程分支推送到另一远程分支

如何将旧提交移至git中的另一个分支?

执行硬重置后如何将开发分支推送到远程存储库?

如何将本地分支 A 中的多个本地提交推送到远程分支 B 并从本地分支 A 中清除它们?

git:将子模块分支重置为远程标签

如何将另一个远程分支连接到提交树

临时签出远程分支的旧提交

如何将当前本地分支与远程存储库中不同分支的特定单个提交合并?

git:如何将更改添加并提交到一个远程分支,而不提交到另一个远程分支?

如何将压缩的提交视为分支?

如何将git head重置为先前的本地提交,然后将该提交推送到我的远程

如何将长时间运行的git分支重置为master?

如何将git分支与远程分支同步?

如何将远程tfs分支合并到git分支?

如何将远程分支与主分支 azure repo 合并?

我如何将远程修剪只是特定的远程分支?

GIT如何将提交从分支拆分为不同的分支?

如何将本地文件重置为 GitHub 上的最新提交?