删除所有内容并上传新版本

时间:2012-06-17 12:52:50

标签: git version-control

我们正在使用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.

3 个答案:

答案 0 :(得分:21)

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

2。)运行git rm *告诉git删除所有文件(请查看git status是否还有任何未停止的文件)

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

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

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

6。)运行git add *告诉git添加所有新文件(查看git status是否还有任何未分段的文件)

7.)提交并推送新文件

现在您应该在远程git存储库上安装该版本。

答案 1 :(得分:14)

您无法推送,因为远程提交没有合并到您尝试推送的提交。如果要放弃当前遥控器中的所有更改,可以执行以下操作。

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

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

答案 2 :(得分:2)

如果您要永久删除远程存储库中的文件,并且回想起来就好像它们没有被推到一开始就重新开始,那么基于this answer您可以执行以下操作

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

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

这将清理远程存储库,就像没有文件存在一样。