Git在影响master的分支上推送-f



假设我从master中创建了一个分支,并对我的分支commit1、commit2进行了一些提交。同时,另外两个人将两个pull请求合并到master,因此我的分支将落后2个提交。如果我做一些更改并在分支上执行git push-f,这会删除master的最后两个pull请求吗?

另外,有没有可能看到两个提交是如何使用Github从master中删除的?是否为此保留了任何日志记录/历史记录?谢谢你的回答。

我不同意@Huddinger的个人经验。正如在git-push.default=当前和push.default=上游之间的区别是什么?,push.default设置可以更改git-push的行为。例如,如果push.default=matching,git-push会导致所有分支都被推送,即所有两端名称相同的分支都被认为是匹配的。

在您的情况下,如果您有push.default=matching,并且您的克隆在master后面两次提交,那么您将覆盖master分支和远程分支(假设branch!=master),即使您只是想在分支上推送更改。具有push.default=upstream应该可以避免这个问题。

git push -f获取您的本地副本,并强制将其发送到远程,无论发生什么。遥控器将成为本地分支机构的精确副本。这意味着远程分支上的所有内容,而不是本地分支上的内容,都将被擦除;这是无法挽回的。除非您有意重写历史记录,否则不应使用-f标志。

无法"删除"提交。你只能用"-f"重写历史。因此,如果某些东西由于-f而消失,它将永远不会回来。它永远失去了。换句话说,没有办法在github中看到历史,因为你的历史已经被重写了。


根据规范

-f

-强制

通常,该命令拒绝更新不是祖先的远程ref用于覆盖它的本地ref的。此外,当如果使用--force-with-lease选项,则命令拒绝更新远程ref当前值与预期值不匹配。

此标志将禁用这些检查,并可能导致远程存储库失去承诺;小心使用。

注意,CCD_ 5适用于被推送的所有ref,因此将其与push.default一起使用,将其设置为匹配或与多个push一起使用配置有remote.*.push的目的地可以覆盖其他引用比当前分支(包括严格落后的本地引用它们的远程对应物)。要强制只推到一个分支,请使用+在refspec前面进行推送(例如git推送原点+master强制对主分支的推动)。参见<refspec>...部分详细信息。

不,即使使用-f,推送分支也不会影响master。

最新更新