硬重置后推送git branch

重新考虑

我是git的初学者,所以请原谅我的愚蠢话语(如果有的话)。

好的,所以我有一个本地分支,在该分支中,我已硬重置为某个提交。现在,当我这样做时,git status它表明-

On branch product
Your branch is behind 'origin/product' by 3 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

nothing to commit, working tree clean

这就是为什么我不能推动分支的原因,因为我首先必须撤消更改。

现在,我确实理解了为什么会发生这种情况((因为硬重置会删除该特定提交之后的所有git历史记录,而远程分支确实具有那些提交,因此它告诉我Origin / product分支领先3个提交))(plz如我错了请纠正我)

那么我该如何推送硬重置所做的更改?

iBug

Git尝试在适用的情况下保留历史记录,因此使用默认设置时,它不会在推送时“还原”分支。

为了用本地分支的尖端(头部)强制覆盖远程分支,传统方法是使用“强制推送”:

git push -f
git push --force  # Equivalent

但是,请注意,上面的命令将所有分支入“强制模式”。如果要通过仅推送一个分支来更安全地执行此操作,请使用以下语法:

git push origin +master

加号表示“覆盖”,并且您已经指定了分支名称,master将仅强制按下该名称

两种方法都涵盖“还原”和“使用不同历史记录进行覆盖”的两种情况。


顺便说一句,这种理解是(部分)错误的:

硬重置会删除该特定提交后的所有git历史记录

硬复位也不会删除从Git的本地存储(任何提交.git的目录),但只出任何文件改为指向当前的分支(头)在目标提交和检查。

您的提交将保留在Git存储中,直到GC为止。验证它们仍然存在(并且完好无损!)的最简单方法是检查的输出git reflog您也可以使用与所需命令类似的命令将其检回git checkout/reset 'HEAD@{1}'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章