git:分离磁头并强制覆盖
我通常在git周围工作,但这次它让我烦恼!我在某个分支上,该分支自创建以来(即git:分离磁头并强制覆盖,git,branch,commit,Git,Branch,Commit,我通常在git周围工作,但这次它让我烦恼!我在某个分支上,该分支自创建以来(即001,002,003)有3次提交。因此,当我在003上时,我签出到002并进行了一些更改,然后提交到002,现在我想用新提交覆盖我的分支,使其成为分支的头 我试着推,得到了如下git推原点头:。因此,我随后尝试git推送originhead:my branch,但它被拒绝了(甚至不确定这是否是我应该做的) 关于如何解决这个问题有什么想法吗?也许您的推送被拒绝了,因为您已经将003推送到了服务器存储库,并且您的本地分支
001
,002
,003
)有3次提交。因此,当我在003
上时,我签出到002
并进行了一些更改,然后提交到002
,现在我想用新提交覆盖我的分支,使其成为分支的头
我试着推,得到了如下git推原点头:
。因此,我随后尝试git推送originhead:my branch
,但它被拒绝了(甚至不确定这是否是我应该做的)
关于如何解决这个问题有什么想法吗?也许您的推送被拒绝了,因为您已经将
003
推送到了服务器存储库,并且您的本地分支机构在002
上进行了更改,删除了003
(如果我理解正确的话)
您可以尝试使用--force
选项对git push
强制推送并覆盖遥控器(如果您确实想这样做的话)。即:
git push --force
如果您不确定自己在做什么,我建议您使用
--force
选项进行适当的备份…git clone之后的本地回购状态:
001----002----003 HEAD/master
当您签出
002
并进行一些更改并提交时,状态为:
001----002----003 master
\
+----004 HEAD/detached branch
你想要的是:(a)
或者,这个:(b)
在上述情况下,005
将是合并提交
我假设不是(b),因为在这种情况下,签出002
的点没有意义。如果是(a),您必须:
001----002----004----003 HEAD/master
这能解决你的担忧吗 git-push-f原点磁头:
git push -f origin HEAD:<name-of-remote-branch>
将用本地分支覆盖远程分支,将tip设置为当前分离的头。投票否决,甚至不发表评论!干得好,nawb!当您签出
002
时,它是否在新的分支机构上?我想不是。因此,HEAD
处于分离状态。如果是,分支机构不知道它的远程回购(或来源),对吗?您希望通过新提交(我们称之为004
)实现什么?@Bhaskar Yes!正如你所描述的那样。所以我想做的是把分离的头部设置为我检出的分支的头部。因此,最终的结果将类似于重置分支上上次提交的所有更改,即003
(使002
成为分支的负责人),进行一些更改,然后再次提交。是的,P想到了这一点,但不确定如果您希望更改远程上的现有历史记录,我是否应该强制
,这是最简单的方法。我会支持并尝试一下。将接受答案,如果它工作!刚刚使用了备份并在我的分支上再次提交。。。找不到别的办法
001----002----004----003 HEAD/master
git push -f origin HEAD:<name-of-remote-branch>