【问题标题】:Clear Git repository清除 Git 存储库
【发布时间】:2017-05-24 17:10:11
【问题描述】:

我必须将 TFS 服务器转移到 GIT(Bitbucket) 服务器。

我们目前正在使用git-tfs 来做这件事,但是我们在迁移之前做一些测试(比如配置jenkins,检查一切是否正确传输)。

问题是,现在我似乎无法运行 git push 命令,因为我的存储库中已经装满了之前运行的大量内容。

有没有办法“重置”存储库(就像我从未做过任何提交一样)?不删吗?

我找到了这个:Clear git repository on Bitbucket?,但问题是我投入了 6 年的工作,拥有 60 多个分支机构,所以我不能一个一个地清理它们。

我也不能只删除存储库,我们已经配置了很多东西(钩子,与 jenkins 的连接,...)。

【问题讨论】:

  • ...有60多个分支,所以我不能一个一个地清理它们。编写脚本有什么问题?
  • @Leon 我愿意接受建议,但可能以前的导入无法正常工作,或者可能留下一些不清楚的东西(不是垃圾收集)?

标签: git tfs bitbucket git-tfs


【解决方案1】:

这实际上取决于 TFS 版本/bitbucket。您可以只删除所有分支和标签并将 Master 重置为第一个提交以获得一个干净的状态。但是根据您的 TFS 服务器版本,这实际上可能不会导致“垃圾”被收集。我不确定 BitBucket 上的垃圾收集策略。

Git 垃圾回收是在 TFS 2015 更新 3 中引入的,旧版本实际上不会清理服务器上的任何内容,即使您已删除对它的所有引用。

您可以轻松编写清理过程的脚本。使用git fetch --all 确保您的本地仓库包含所有分支信息,然后使用git branch --list -r 列出所有远程分支。有了它,您可以轻松地编写脚本删除这些分支并将其删除推送到服务器。

Then use git update-ref refs/heads/master a12d48e2 (insert your own commitish) to reset the master.

然后git push --force --all 将所有内容发送回服务器。

【讨论】:

  • 嗨,不知道为什么 TFS 版本很重要,但目前它是 TFS 2015。我在做git --fetch --all 时遇到的问题:它将更改我刚刚完成的 git 存储库以在 8 之后生成很长的时间,不是吗?如何只删除远程分支而不删除本地分支?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 2011-03-23
  • 1970-01-01
相关资源
最近更新 更多