Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在git存储库中放了我不应该放的东西';我没有_Git_Version Control - Fatal编程技术网

我在git存储库中放了我不应该放的东西';我没有

我在git存储库中放了我不应该放的东西';我没有,git,version-control,Git,Version Control,我是git的新用户,实际上是内容跟踪/源代码控制的新用户。大约6个月前我开始使用git,现在我真的开始喜欢它了 愚蠢的是,我一直在跟踪我的完整项目,包括包含每个项目所需库的lib目录。其中一些是我无法分发的库。我确实打算与同事分享我的git回购协议,我的一些项目在某个时候可能会成为自由和开放源码软件。能够分享我的git回购协议对我来说很重要 怎样才能在不失去我的历史的情况下走出这场混乱 另外,这很烦人,因为正如您所知,某些版本的软件需要特定版本的库,否则它们将无法编译。如果我不能将库放在git存

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

愚蠢的是,我一直在跟踪我的完整项目,包括包含每个项目所需库的lib目录。其中一些是我无法分发的库。我确实打算与同事分享我的git回购协议,我的一些项目在某个时候可能会成为自由和开放源码软件。能够分享我的git回购协议对我来说很重要

怎样才能在不失去我的历史的情况下走出这场混乱

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

我对使用git有什么误解吗?这似乎是一个巨大的问题


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

首先,依赖项跟踪。如果这些库是开源的,那么将它们作为子模块包含可以帮助它们保持更新。然而,因为这听起来不是你需要的。如果它们可以很容易地获得,免费但不开放,我在过去使用Maven取得了相当好的成功。不过,我发现它在Windows中并不是特别好用

对于git问题,请尝试以下方法:

  • 签出添加库的提交
  • 从该提交创建一个分支,即:哎哟
  • gitrm-rflibs
  • 将libs添加到.gitignore
  • git cherry pick..最近提交
  • 如果这是您现在想要的项目版本:
  • 耶!继续
  • 开枪。幸好你在树枝上
  • 收银台主机
  • git reset——来自其他分支的硬提交
  • 承诺
  • 用力一推,老主人就会变成孤儿。git-push-f

  • 要非常小心,否则可能会严重破坏存储库。这也不会完全删除对库的引用,因为第一次提交仍然会有对它的引用。有些人可能有另一种使用补丁功能的方法,可能更好

    FWIW当您的程序需要特定版本的库时,通常您在自述文件或其他文件中给出这些版本规范,但让其他人自己实际获取库。您不需要分发运行程序所需的所有内容。您可以使用来编辑历史记录,但要小心,因为这是一个复杂的命令。