如果你将你的git远程源切换到新的repo和git pull会发生什么?

时间:2014-03-05 14:27:00

标签: git bitbucket

我的问题背后的背景是我不小心上传了一个5gb文件夹,里面装满了媒体文件(实际上是drupal sites / default文件夹,应该是.gitignore文件)到bitbucket上的远程存储库。当我发现错误时,我继续删除它并推送该提交。

之后我意识到git历史记录仍然有这些文件。在我的本地机器上,我做了以下事情:

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch sites/default' --prune-empty --tag-name-filter cat -- --all
git prune
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now

之后,我使用以下方法将其克隆到新的本地仓库中:

git clone --no-hardlinks file://path/to/old-repo new-repo

它给了我一个“干净”的存储库,重写历史记录以删除目标文件夹。 之后,我将新存储库的原点更改为我的bitbucket repo并强制使用以下命令推送更改:

git push origin master --force

git push origin development --force

即使提交已从历史记录中删除,并且检查bitbucket上的源根本不显示这些文件,但存储库大小仍为5gb。由于我找不到删除这些文件的方法,我选择在bitbucket上创建一个新的存储库,并将我的新本地存储库推送到它。

如果正在处理同一项目的另一个开发人员更改了他的git remote以指向这个新的存储库并执行git pull,那么他的机器上的文件是否与新存储库相同?

1 个答案:

答案 0 :(得分:0)

我成功找到了一位原始存储库中的同事,但因为她没有提取任何最近的更改,所以在提交后面有不需要的文件夹。将源切换到新存储库后,git pull成功,并且在任何提交中都没有跟踪不需要的文件夹。

希望这有助于处于类似情况的人。