我制作了一个git repo(只有一个master分支),其中有一个远程和一个本地。没有其他用户克隆了它,但是可以由几个用户克隆远程路径。
我的本地克隆在提交#17处,并且我将提交#12推送到远程。我已经意识到,不应该共享#6之后的每次提交,并且远程需求(暂时)仍保持在#6。
我不想丢失所有提交1-17和历史记录,但是为了重置远程,我的理解是我必须首先将local重置为#6并按-f that。我是否有可能将遥控器重置为#6,同时本地保持在17的前面,以便如果有人克隆遥控器,他们就看不到易受攻击的提交?
我的想法是,我需要先将我的本地克隆到另一个本地,以便第二个本地在执行重置以及后推-f之前保留所有17个提交和历史记录。这是一种应对这种情况的方式吗?
答案 0 :(得分:2)
我建议从本地master
创建一个新的功能分支,以记录#17之前的提交。然后,对您的本地master
进行硬重置并强制执行以下操作:
# from local master
git branch feature
# now hard reset to commit #6
git reset --hard HEAD~10
# force push
git push --force origin master
现在,本地feature
分支表示您的master
分支的先前状态,直到提交#17,而本地master
处于提交#6,并与远程master
。
答案 1 :(得分:0)
因此,您想推送另一个分支,但是在本地(专用)存储库上有来自远程的提交。
git branch <branch_name>
的本地副本git reset --hard
git force --push
我不确定的部分是新的本地git克隆可能仍在其远程控制器中具有相同的远程控制器-从那里推送到远程控制器是否无效?
我不确定您要问的是什么,但是当您将某个内容推送到远程时,克隆后应该有一个远程遥控器-这是正常的。
顺便记住:
不要对存储库外部存在的提交进行基准化,否则人们可能会基于它们进行工作。 如果您遵循该准则,就可以了。如果您不这样做,那么人们会讨厌您,并且您会受到朋友和家人的嘲笑。