git 重置 --hard <target branch>

git reset --hard <target branch>

我有一个 master 分支 / Production,它现在处于干净状态,还有一个 develop 分支,它在某个地方出现问题,许多人在分支上工作并提交更改。我想要做的是将开发分支重新设置为与主分支相等,但不影响实际的主分支/生产。所以基本上 develop 仍然是 develop 但看起来就像 master.

这样安全吗?

git结帐开发 git 重置 --hard master

Is this safe?

是的,安全,但是,更好的问题可能是这是否是个好主意。您遗漏了一个步骤,突出了这一点。将 develop 重置为 master 的方法如下:

git fetch
git switch develop
git reset --hard origin/master
git push --force

请注意,最后一步是强制推送,这是重写远程服务器上的 develop 分支所必需的。通常不赞成强制推送共享分支,因为这会影响使用该分支的每个人,因为他们的所有 in-progress 分支都需要使用 --onto 标志重新定位以修复它们。此外,在您的情况下,您可能会在 develop 上有很多 好的 工作,您将失去这些工作,并且所有这些工作都需要重新设置基础,然后 re-merged进入新的develop.

通常,这里更好的方法是隔离问题提交并在 develop 上还原那些(或通过修复添加新提交)。听起来您似乎已经尝试过并准备认输并进行硬重置。没关系,只要您和您的团队了解这样做的效果。