Git push-f在影响主机的分支上
比方说,我从master上做了一个分支,对我的分支做了一些承诺,commit1,commit2。同时,另外两个人将两个请求合并到master,因此我的分支将落后两个提交。如果我做一些更改并在我的分支上执行gitpush-f,这会删除来自master的最后两个pull请求吗 另外,是否可以查看如何使用Github从主服务器删除两个提交?是否为此保存了任何日志/历史记录?Git push-f在影响主机的分支上,git,github,git-branch,Git,Github,Git Branch,比方说,我从master上做了一个分支,对我的分支做了一些承诺,commit1,commit2。同时,另外两个人将两个请求合并到master,因此我的分支将落后两个提交。如果我做一些更改并在我的分支上执行gitpush-f,这会删除来自master的最后两个pull请求吗 另外,是否可以查看如何使用Github从主服务器删除两个提交?是否为此保存了任何日志/历史记录? 谢谢您的回答。git push-f会获取您的本地副本,并强制将其发送到远程,无论发生什么情况。远程服务器将成为本地分支的精确副本
谢谢您的回答。
git push-f
会获取您的本地副本,并强制将其发送到远程,无论发生什么情况。远程服务器将成为本地分支的精确副本。这意味着远程分支而不是本地分支上的所有内容都将被擦除;这是无法挽回的。除非有意重新编写历史记录,否则决不能使用-f
标志
无法“删除”提交。您只能使用'-f'重写历史记录来重写它们。因此,如果某个东西由于-f
而消失,它将永远不会回来。它永远失去了。换句话说,无法在github中查看历史记录,因为您的历史记录已被重写
从 -f ——力 通常,该命令拒绝更新不是祖先的远程引用 用于覆盖它的本地引用的。还有,什么时候
--force with lease
选项被使用时,该命令拒绝更新远程引用
当前值与预期值不匹配
此标志禁用这些检查,并可能导致远程存储库
失去承诺;小心使用
请注意,--force
适用于所有按下的参照,
因此,将其与push.default设置为匹配或与多个push一起使用
使用remote.*配置的目标。推送可能会覆盖其他引用
比当前分支(包括严格落后的本地引用)
他们遥远的对手)。要仅强制推送一个分支,请使用+
在refspec前面推送(例如git推送原点+master强制
推动主分支)。有关详细信息,请参阅…
部分
细节
从个人经验来看,我不同意@Humdinger。如上所述,push.default设置可以更改git push的行为。例如,如果push.default=matching,git push会推送所有分支,也就是说,两端具有相同名称的所有分支都被认为是匹配的
在您的情况下,如果您有push.default=matching,并且如果您的克隆在主分支后面有两次提交,那么您将覆盖主分支以及远程分支(假设branch!=master),即使您只是想在分支上推送更改。使用push.default=upstream应该可以避免这个问题 不,推送分支不会影响master,即使您使用-f。我明白了,本地副本指的是所有内容,而不仅仅是它所执行的分支?谢谢@没有,只有树枝。(除非该分支是主分支)不知何故,对我来说,即使我在一个落后2次提交的分支上按了git-f,主分支的2次提交也消失了。如果不是这个,你知道还有什么可能导致它吗?@Tad它仍然可能是-f
标记,因为force也可以更改引用。用力会导致一些严重的奇怪行为。我在规范中的回答中添加了一个注释。注意最后一段提到的,-f
覆盖了参考。如果你落后两次,那就意味着你重写了那些承诺。您应该在使用强制推送覆盖远程之前重新设置分支的基础…不知道推送。默认值=匹配设置。谢谢你的信息。