我把东西放在我不应该拥有的git仓库中

时间:2011-09-07 23:23:35

标签: git version-control

我是git的新用户,实际上是内容跟踪/源代码控制的新用户。大约6个月前我开始使用git,并且真的很喜欢它。

愚蠢的是,我一直在跟踪我的完整项目,包括包含每个项目所需库的lib目录。其中一些是我无法分发的库。我打算与同事分享我的git repo,我的一些项目可能在某些时候成为FOSS。能够分享我的git repo对我很重要。

在不丢失历史的情况下,从这个混乱中走出来的方法是什么?

此外,它很烦人,因为如您所知,某些版本的软件需要某些版本的库,否则它们将无法编译。如果我不能将库放在git存储库中,这意味着我可能必须进行手动修改才能使我的程序的特定提交版本再次工作。换句话说,这是一个巨大的麻烦。

我误解了使用git的一些事情吗?这似乎是一个巨大的问题。

编辑:我可以很容易地想象大型项目受到非自由材料提交的污染。我可以想象这个问题很长一段时间都未被发现,所以这似乎是分布式内容跟踪的致命弱点。我还认为,每次你想要调查一些小的变化是完全不可行时,必须手动查找和使用数十个库。因此,这使得git在实践中只能用于完全免费的项目。我错了吗?

1 个答案:

答案 0 :(得分:2)

首先,依赖关系跟踪。如果这些库是开源的,那么将它们作为子模块包含在内可以帮助它们保持更新。但是,因为这听起来不像你需要它们。如果它们可以轻松获得,免费但不开放,我过去使用过Maven并取得了相当不错的成功。 http://maven.apache.org/我发现它在Windows中效果不佳。

对于你的git问题,试试这个:

  1. 检查添加库的提交。
  2. 从该提交创建一个分支,即whoops。
  3. git rm -rf libs
  4. 将库添加到.gitignore
  5. git cherry-pick ..most_recent_commit
  6. 如果现在是您想要的项目版本:
    1. 耶!继续。
    2. 拍摄。 。 。你在树枝上好事!
  7. 结账大师
  8. git reset --hard commit_from_other_branch
  9. 提交
  10. 强行推动,老主人将成为孤儿。 git push -f
  11. 如何做到这一点非常小心,你可能会严重搞乱你的存储库。这不会完全删除库的引用,因为第一次提交仍然会引用它。有人可能有另一种方法使用可能更好的补丁工具。 。 。