我在我的项目中做了一个很大的重构:我重命名了文件,删除,添加...此外,我在.gitignore中添加了一些文件夹。但是,我已经在重构之前提交了一个远程存储库。
有没有为我的存储库制作git“reinit”?如果没有,我该怎么办?
更新:
我删除了文件夹.git,现在我的错误是
提示:更新被拒绝,因为当前分支的提示落后于提示:它的远程对应物。合并远程更改(例如'git pull')提示:再次按下之前。提示:有关详细信息,请参阅'git push --help'中的'关于快进的说明'。
我不想将本地更改与远程仓库合并,我只想推送到那里,这意味着完全用本地仓库替换远程仓库。
答案 0 :(得分:8)
<强>更新强>
如果你删除了.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
文件夹。创建一个新的仓库将丢失您在原始本地仓库中拥有的所有本地仓库信息,例如从未被推送过的本地分支。
END UPDATE
你可以
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
答案 1 :(得分:3)
懒惰的方法是只添加所有新文件和更改以及删除:
git add -A .
只要你没有任何冲突,这应该合并得很好。
答案 2 :(得分:3)
以下是重新初始化存储库的步骤。
场景我删除了之前已经创建git init的本地项目文件夹。之后,我想用同一项目的新文件夹更新到现有的git存储库。然后我通过以下程序解决了它。
<强>程序强>
git init
git add --all
git commit -am "re-init"
git remote add origin https://github.com/{yourgit}/{yourproject}.git
git push --force origin master
答案 3 :(得分:2)
首先,通过此代码删除您的初始存储库
rm -rf .git
然后创建一个新的存储库并放置我们用于初始 git 存储库的给定代码。我相信它会正常工作而不会出现任何错误..!!!
git init
git add README.md
git commit -m "first commit"
git branch -M main