如何在我的项目(fe.Android)中拥有可编辑的git依赖项



我只是想知道是否有人能帮我解决这个我几天都在努力解决的问题。。。

我想为我的项目制作私人的可重复使用的库,但我希望能够编辑这些库(例如,一些库可以为我提供准备好的登录屏幕,我想调整这个屏幕的设计(我已经尝试过子模块,但这不是真正合适的解决方案我也尝试过使用多个remote的子树,但我认为当我在项目中有大约10个库时会很混乱(git树将是巨大而复杂的(

在我的脑海中,行为应该是这样的:

  • 我将依赖项添加到我的项目中
  • 我编辑和调整这些库
  • 当我提交这些更改时,我希望这些更改在我的主git项目中,而不是在库git中
  • 当我在库中进行一些错误修复时,我会使用TAG推送这些更改,然后将这些更改拉到我的主项目中,并在出现冲突时解决冲突

我发现了这个插件https://github.com/alexvasilkov/GradleGitDependenciesPlugin它看起来很有希望,但与子模块有相同的缺陷(我必须提交对库git的更改,而不是主项目git(

这样的事情可能吗?感谢的帮助

不幸的是,您无法按照问题中描述的进行操作。

Git通过拍摄整个项目的快照来工作。假设这是你的项目:


myproject
|
|src
|
|tmp
|
|lib
|  |
|  |lib1
|  |
|  |lib2

当您在该项目中提交某些内容时,git将获取整个代码的快照(myproject内所有文件夹中所有文件中的所有修改(,并将其存储在.git文件夹中。这是对所发生事情的简化描述,但为了回答你就足够了。

当你说:

  • 我编辑并调整这些库
  • 当我提交这些更改时,我希望这些更改在我的主git项目中,而不是在库git中

您不能这样做,因为库在您的项目中!!Git会在您提交时对您的所有文件进行快照,包括lib文件夹中的文件。请记住,git在快照级别工作,而不是在文件级别。

正如您所说,您希望提取库,以便在其他项目中重用它们。唯一的方法是将这些库提取到它们自己的存储库中(可能每个库一个存储库(,并将它们作为依赖项包含在项目中。

现在,如果你想将这些库作为依赖项包括在内,你可以:

  • 使用git模块或git子树,就像您已经尝试过的那样。正如您所说,如果lib文件夹中有很多东西,可能会有点麻烦
  • 为每个库创建一个包,并使用maven、npm、pip、bundler、trunk或堆栈使用的任何依赖管理系统将其包含在项目中

最新更新