23

我在我的项目中进行了一次重大的重构:我重命名了文件,删除了,添加了......此外,我在 .gitignore 中添加了一些文件夹。但是,在重构之前,我已经对远程存储库进行了提交。

有什么可以为我的存储库制作 git “reinit”吗?如果没有,我该怎么办?

更新

我已经删除了 .git 文件夹,现在我有一个错误

提示:更新被拒绝,因为您当前分支的提示落后于提示:它的远程对应部分。合并远程更改(例如“git pull”)提示:在再次推送之前。提示:有关详细信息,请参阅“git push --help”中的“关于快进的说明”。

我不想将本地更改与远程存储库合并,我只想推送到那里,这意味着用本地存储库完全替换远程存储库。

4

4 回答 4

12

更新

如果您已删除该.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
于 2013-06-28T04:59:58.350 回答
8

以下是重新初始化存储库的步骤。

场景:我删除了一个我之前创建的本地项目文件夹 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
于 2017-11-11T07:23:07.447 回答
4

首先,通过此代码删除您的初始存储库

rm -rf .git

然后创建一个新的存储库并放置我们用于初始 git 存储库的给定代码。我相信它会毫无错误地工作..!!!

git init
git add README.md
git commit -m "first commit"
git branch -M main
于 2021-03-18T10:31:56.377 回答
3

懒惰的方法是添加所有新文件和更改以及删除:

git add -A .

只要您没有任何冲突,这应该可以很好地合并。

于 2013-06-28T04:51:50.353 回答