我只是想知道是否有人能帮我解决这个我几天都在努力解决的问题。。。
我想为我的项目制作私人的可重复使用的库,但我希望能够编辑这些库(例如,一些库可以为我提供准备好的登录屏幕,我想调整这个屏幕的设计(我已经尝试过子模块,但这不是真正合适的解决方案我也尝试过使用多个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或堆栈使用的任何依赖管理系统将其包含在项目中