尝试使用 git 重置远程分支时出现问题
Problem trying to reset remote branch with git
我在origin/master后面有我想使用的master分支。如何删除远程上的最新提交?我无法进行推送,因为我当前分支的尖端在其远程分支的后面,但我不想合并两者。
How can I delete the latest commit on remote?
从技术上讲,你不能——但你 可以 使另一个 Git 的 master
指向最后一个之前的提交。这将使另一个 Git “忘记”最新的提交。该提交将 最终 被删除,只要另一个 Git 开始执行 运行 维护命令。这已经足够好了,只要没有其他人重新引入该提交即可。 (其他任何人都可以同时从该服务器获取提交。)
I cannot do a push because the tip of my current branch is behind its remote counterpart ...
您可以并且通常必须进行推送。你需要告诉你的 Git 是以命令的形式发送它的最终请求,而不是礼貌的请求。
A git push
作品作者:
- 让你的 Git 调用其他 Git;
- 让您的 Git 在需要时提供 Git 新提交;
- 结束会话,你的 Git 礼貌地询问其他 Git:如果没问题,请将你的分支 _____ 设置为提交 _____(用分支名称和哈希ID填空)。
您的 Git 将发送他们的 Git 无提交(因为您对他们没有任何新内容),然后要求他们将他们的 master
设置为指向提交 Rediseño del header y del overlay ...
(无论它的实际哈希 ID 是什么,都可以在您的名字 master
中找到)。
他们会说 不,他们说不的原因——他们也传递了这一点——是:如果我这样做,我将失去访问权限到主题为“Cabiados componentes y header” 的提交(无论其哈希 ID 实际是什么)。这种拒绝采用 rejected (non-fast-forward)
的形式,这意味着 我可能会丢失一些提交 。
但这正是您想要他们Git做的:“丢失”该提交,以便它“被遗忘”并最终被删除真实。
那么,您需要做的就是停止礼貌地询问。向他们发送一个强制命令:设置你的 master
! 他们 可以 仍然拒绝,但如果你有允许这种类型的权限强推,他们会服从,并失去提交。
这个强制命令有两种形式:
一个——不太细心的那个——就是你 运行 git push --force origin master
得到的结果。这只是发送命令:Set your master
to _____!(通过在您自己的 Git 存储库中找到正确的哈希 ID 来填充空白).
更谨慎的做法是git push --force-with-lease
。这一个发送命令,但格式为:我认为你的 master
是 _______。如果是这样,请将其设置为 _______!如果不是,请告诉我我的想法是错误的。 你的 Git 用你的 origin/master
中的内容填充第一个空白:你的 [=105] 的哈希 ID =] 记得你的 Git 与他们的 Git 的最后一次谈话。您的 Git 按照常规方式填写第二个哈希 ID。
如果没有其他人向另一个 Git 存储库添加任何 new 提交,您的 origin/master
仍将匹配他们的 master
。如果 --force-with-lease
失败 ,这意味着其他人可能利用了您试图丢弃的提交;您应该 git fetch origin
获取新的提交,并与其他人进行实际的人与人之间的对话,以弄清楚该怎么做。
如果您知道没有其他人在使用另一个 Git 存储库,或者至少是 Git 存储库中的 分支 ,则 git push --force master
就足够了。如果您不确定,最好先 与其他用户协商,即使您打算使用 --force-with-lease
选项以确保安全。
我在origin/master后面有我想使用的master分支。如何删除远程上的最新提交?我无法进行推送,因为我当前分支的尖端在其远程分支的后面,但我不想合并两者。
How can I delete the latest commit on remote?
从技术上讲,你不能——但你 可以 使另一个 Git 的 master
指向最后一个之前的提交。这将使另一个 Git “忘记”最新的提交。该提交将 最终 被删除,只要另一个 Git 开始执行 运行 维护命令。这已经足够好了,只要没有其他人重新引入该提交即可。 (其他任何人都可以同时从该服务器获取提交。)
I cannot do a push because the tip of my current branch is behind its remote counterpart ...
您可以并且通常必须进行推送。你需要告诉你的 Git 是以命令的形式发送它的最终请求,而不是礼貌的请求。
A git push
作品作者:
- 让你的 Git 调用其他 Git;
- 让您的 Git 在需要时提供 Git 新提交;
- 结束会话,你的 Git 礼貌地询问其他 Git:如果没问题,请将你的分支 _____ 设置为提交 _____(用分支名称和哈希ID填空)。
您的 Git 将发送他们的 Git 无提交(因为您对他们没有任何新内容),然后要求他们将他们的 master
设置为指向提交 Rediseño del header y del overlay ...
(无论它的实际哈希 ID 是什么,都可以在您的名字 master
中找到)。
他们会说 不,他们说不的原因——他们也传递了这一点——是:如果我这样做,我将失去访问权限到主题为“Cabiados componentes y header” 的提交(无论其哈希 ID 实际是什么)。这种拒绝采用 rejected (non-fast-forward)
的形式,这意味着 我可能会丢失一些提交 。
但这正是您想要他们Git做的:“丢失”该提交,以便它“被遗忘”并最终被删除真实。
那么,您需要做的就是停止礼貌地询问。向他们发送一个强制命令:设置你的 master
! 他们 可以 仍然拒绝,但如果你有允许这种类型的权限强推,他们会服从,并失去提交。
这个强制命令有两种形式:
一个——不太细心的那个——就是你 运行
git push --force origin master
得到的结果。这只是发送命令:Set yourmaster
to _____!(通过在您自己的 Git 存储库中找到正确的哈希 ID 来填充空白).更谨慎的做法是
git push --force-with-lease
。这一个发送命令,但格式为:我认为你的master
是 _______。如果是这样,请将其设置为 _______!如果不是,请告诉我我的想法是错误的。 你的 Git 用你的origin/master
中的内容填充第一个空白:你的 [=105] 的哈希 ID =] 记得你的 Git 与他们的 Git 的最后一次谈话。您的 Git 按照常规方式填写第二个哈希 ID。如果没有其他人向另一个 Git 存储库添加任何 new 提交,您的
origin/master
仍将匹配他们的master
。如果--force-with-lease
失败 ,这意味着其他人可能利用了您试图丢弃的提交;您应该git fetch origin
获取新的提交,并与其他人进行实际的人与人之间的对话,以弄清楚该怎么做。
如果您知道没有其他人在使用另一个 Git 存储库,或者至少是 Git 存储库中的 分支 ,则 git push --force master
就足够了。如果您不确定,最好先 与其他用户协商,即使您打算使用 --force-with-lease
选项以确保安全。