更新
如果您已删除该.git
文件夹(不是一个好主意),您可以创建一个新的 repo 克隆并将您的东西移动到该文件夹,然后继续。像这样的东西
cd ..
git clone <remote-repo-url> new-repo
rm -rf new-repo/* // this will not remove new-repo/.git
cp -f <original-local-repo> new-repo
cd new-repo
然后继续如下。
.git
请注意,如果您可以恢复该文件夹,那就更好了。创建新的 repo 将丢失您在原始本地 repo 中的所有本地 repo 信息,例如从未推送过的本地分支。
结束更新
你可以
git reset --soft HEAD^
git add -A .
git commit -m "rewriting history"
git push --force origin master
这将备份到上一次提交(同时保留工作树和索引),提交您的更改,然后将重写的历史记录强制推送到远程。
push --force
是危险的东西。它会打扰已经拉过的其他人,并且被认为非常粗鲁,但如果没有其他人开始工作,那不是问题。
这是正在发生的事情:
--- A -- B master
^
|
origin/master
git push
--- A -- B master, origin/master
git reset HEAD^
git commit -am "rewriting"
--- A -- B origin/master
\
\
B' master
git push --force
--- A -- B
\
\
B' master, origin/master