避免混乱的最简单方法是给服务器更多的磁盘。
这是困难的一个。删除文件也需要将它们从历史记录中删除,这只能通过git filter-branch
. 例如,此命令<file>
将从历史记录中删除:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch <file>' \
--prune-empty --tag-name-filter cat -- --all
问题是这会重写 SHA1 哈希,这意味着团队中的每个人都需要重置到新的分支版本,否则会有一些严重的头痛风险。如果没有人在进行中并且你们都使用主题分支,那一切都很好。如果您更集中,您的团队很大,或者他们中的许多人在工作时保留肮脏的工作目录,那么没有一点混乱和不和谐就没有办法做到这一点。你可以花很长时间让每个人的本地工作正常。那写的,git filter-branch
可能是最好的解决方案。只要确保你有一个计划,你的团队理解它,并确保他们备份他们的本地存储库,以防一些正在进行的重要工作丢失或被破坏。
一种可能的计划是:
- 让团队生成他们正在进行的工作的补丁,例如
git diff > ~/my_wip
.
- 让团队为他们已提交但未共享的工作生成补丁:
git format-patch <branch>
- 运行
git filter-branch
。确保团队知道在这种情况下不要拉动。
- 让团队问题
git fetch && git reset --hard origin/<branch>
或让他们重新克隆存储库。
- 应用他们之前承诺的工作
git am <patch>
。
- 应用他们正在进行的工作
git apply
,例如git apply ~/my_wip
。