我通常在git上工作,但这一次它让我烦恼!我在某个分支上,自创建以来就允许说3次提交(即001
,002
,003
)。因此,当我在003
时,我检查了002
并进行了一些更改,然后我提交到002
现在我想用新提交覆盖我的分支,使其成为分支。
我试图推动,我得到了以下git push origin HEAD:<name-of-remote-branch>
。所以我接着尝试git push origin HEAD:my-branch
并被拒绝(甚至不确定这是否是我应该做的)。
关于如何解决它的任何想法?
答案 0 :(得分:2)
也许您的推送被拒绝了,因为您已经将003
推送到服务器存储库,并且您的本地分支在002
之上进行了更改并移除了003
(如果我理解正确的话)< / p>
您可以尝试使用--force
选项git push
强制推送并覆盖遥控器(如果那真的是你想要做什么)。即:
git push --force
如果您打算使用--force
选项,如果您不确定自己在做什么,我建议您进行相应的备份......
答案 1 :(得分:0)
git push -f origin HEAD:<name-of-remote-branch>
将使用本地分支覆盖远程分支,将提示设置为当前分离的HEAD。
答案 2 :(得分:-1)
git clone
之后的本地回购状态:
001----002----003 HEAD/master
当您签出002
并进行了一些更改并提交时,状态为:
001----002----003 master
\
+----004 HEAD/detached branch
你想要的是:(a)
001----002------005----003 HEAD/master
\ /
+----004 detached branch
或者,这:(b)
001----002----003----004 HEAD/master
在上述情况下,005
将是合并提交。
我认为它不是(b)因为在这种情况下检查002
没有意义。如果是(a)你必须:
如果你改变,而不是在步骤2中合并,那么历史将是线性的,IMO,干净,如下:
001----002----004----003 HEAD/master
这会解决您的顾虑吗?