gpt4 book ai didi

Git:放弃远程分支上的所有更改并在不强制推送的情况下推送本地更改

转载 作者:太空狗 更新时间:2023-10-29 13:31:17 25 4
gpt4 key购买 nike

案例类似于:Git: Discard all changes on a diverged local branch .

区别:

  • 我想放弃已经推送到远程的更改存储库,
  • git push origin foo:foo --force 被拒绝(来源不允许强制 push )。

给定的提交图:

A--B--C--O1--O2--O3 (foo)
\
L1--L2--L3 (origin/foo)

如果可能我想实现这个:

A--B--C--O1--O2--O3 (foo origin/foo)

如果以上不可能,那么以下对我来说就可以了:

A--B--C--O1--O2--O3--M1 (foo)
\ /
L1--L2--L3 (origin/foo)

但我希望 git diff M1..03 为空,即丢弃 origin/foo 中引入的所有更改。 -s ours 策略无济于事,因为这仅适用于冲突,非冲突更改仍将添加到 M1

我该怎么做?

SOLUTION (作者 Mohan Kumar P)

删除远程分支并推送。如果被跟踪,git 应该自动创建远程分支(检查 git branch -vv)。

要实现这一点:

A--B--C--O1--O2--O3 (foo origin/foo)
\
L1--L2--L3

类型:

git push origin --delete foo
git checkout foo # Git ≥ 1.6.6.
git push origin foo

最佳答案

-s ours 策略确实有效。 -X ours“策略参数”不起作用(出于您给出的原因)。

我认为将这两者称为我们的,然后进一步将其中一个称为“战略”,将另一个称为“战略论点”充其量是糟糕的计划,至少可以说是令人困惑。 (它的出现是因为 -X 值是传递给由 -s 参数选择的驱动程序的参数——但这种解释只会让它变得更糟:“-s 参数是策略,-X 参数是从第一个参数到策略的参数。” “什么,所以它们是参数参数!? ...等等,我们又在争论什么?”)

尽管如此,-s ours 策略确实完全符合您的要求:它假装 merge ,甚至没有查看其他分支。因此,如果您在上游为 origin/foo 的分支 foo 上,并且您将绘制的图形作为起始位置,则:

git merge -s ours origin/foo

(也许还带有明确的 -m 消息,或者您可以在编辑器运行时使用它来解释 merge )将为您提供您绘制的最终图形。

关于Git:放弃远程分支上的所有更改并在不强制推送的情况下推送本地更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39785043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com