12

我们正在使用 git 进行版本控制,现在我们在尝试上传最新版本时收到很多警告。我是 git 新手,对限制没有耐心,有没有办法删除所有内容并上传当前版本?

这是我现在尝试上传时得到的。

$ git push origin master
Username for 'https://code.google.com':
Password for 'https://<removed>@code.google.com':
To https://code.google.com/p/<removed>/
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://code.google.com/p/<removed>/'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
4

3 回答 3

21

1.) 删除存储库文件夹中的所有内容

2.)运行git rm *告诉git删除所有文件(检查git status是否还有未暂存的文件)

3.) 执行 agit commit -a -m "commitmessage"删除git push origin master远程 git 服务器上的所有文件

4.)检查您现在是否有一个空的远程存储库

5.) 将所有新文件复制到本地存储库文件夹

6.) 运行git add *告诉 git 添加所有新文件(检查git status是否还有未暂存的文件)

7.) 提交并推送新文件

现在您应该在远程 git 存储库中拥有该版本。

于 2012-06-17T13:03:11.283 回答
16

您无法推送,因为远程上的提交未合并到您尝试推送的提交中。如果您想丢弃当前在遥控器中的所有更改,您可以执行类似的操作。

git fetch
git merge -s ours origin/master
git push origin master

请注意,这会丢弃远程中引入的本地存储库中没有的更改。

于 2012-06-17T15:18:42.353 回答
2

如果您想从远程存储库中永久删除文件,并且回想起来,就好像它们没有首先被推送以重新开始,那么基于这个答案,您可以执行以下操作

在本地运行以下命令(注意*删除每个文件夹/文件):

git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch *" -- --all

现在是时候在本地更新 git 引用以强制它忘记这些文件的所有历史记录

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now

git gc --aggressive --prune=now

现在使用 FORCE 将所有更改推送到远程存储库,以确保远程存储库也清除所有这些文件

git push --all --force

这将清理远程存储库,就好像不存在任何文件一样。

于 2017-10-02T09:56:35.610 回答