推送到远程强制我撤消本地硬重置

时间:2017-10-31 14:43:13

标签: git atlassian-sourcetree

我正在使用git CommandLine 进行学习,以及 SourceTree 用于可视化各种命令的效果。

我开始新鲜,进行4次更改,然后进行4次提交,并向我的原始主人推送4次:

commit a
commit b
commit c
commit d

然后,我发出命令git reset --hard <initialID>,在创建这些提交之前,它将我带到我刚开始的地方。

我可以在SourceTree上看到我已成功删除了所有提交并将所有内容重置为初始状态。

当然,我收到来自SourceTree的通知,我现在已经在远程原始大师后面提交了4个提交,这是真的!

现在,我尝试推送当前状态,以便我的遥控器也会更新;即重新开始,就像我现在的当地州一样。

然而,这被拒绝了,所以我想知道是否有一个特殊命令强制推送并删除我的所有提交并将所有内容重置为远程上的初始状态?

p.s。显然,当我接受SourceTree的建议并再次拉动时,我回到了我最近的4次提交情况;这意味着我的硬重置没有,所以我不应该拉,但是尝试将我当前的新状态推到遥控器上,所以我的硬重置也反映在遥控器上,但是我该怎么做?

2 个答案:

答案 0 :(得分:2)

Git非常善于在大多数情况下为您提供有用的错误消息,我只是在本地复制了您的示例并且我被提供了

! [rejected]  

error: failed to push some refs to {myRepo}
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

'git push --help'然后显示'git push'的文档(包含很多有用的信息!),包括--force标志的文档

  

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

     

此标志禁用这些检查,并可能导致远程存储库丢失提交;小心使用它。

     

请注意, - force适用于所有推送的引用,因此将push.default设置为匹配或使用配置了remote。*。push的多个推送目标时使用它可以覆盖当前分支以外的引用(包括本地) refs严格落后于他们的远程对手)。要强制推送到一个分支,请使用refspec前面的+来推送(例如git push origin + master以强制推送到主分支)。见&lt; refspec&gt; ...以上部分了解详情。

答案 1 :(得分:1)

强行(-f)推。

注意:该命令很危险,它会用您当地主人的提交历史记录替换远程主人的提交历史记录。

$ git push -f origin master