.gitignore/lib来自项目,但将其保留在(所有成员的)所有本地存储库中



有比我尝试过的更简单的解决方案吗?

我想和朋友们一起开始一个git项目,我已经创建了一个包含所有相关库的模板(这样他们就不必手动添加它们)。我现在如何确保他们得到了库,我们都可以在不推送的情况下修改这些文件,即使我们每个人都更改了这些文件?

我找到了一个可行的解决方案:我提交并推送模板,每个人都克隆repo。然后每个人都必须做以下事情:

  1. 创建一个包含所有库的.gitignore

  2. 从repo(git rm --cached <all the lib files>)中删除这些文件

  3. 将更改添加到暂存区(git add .

  4. 拉动远程(使用单个模板提交)并再次推送

这应该有效,但对于更大的群体来说,必须采取不同的做法,所以我想知道是否有更好的方法来解决这个问题?关于使用git进行小组工作的一般描述也是可取的。

注意:上述库文件代表我们项目中的各种文件,这些文件将保存在本地存储库中,但不保存在远程存储库中(因此不会推送/拉取)。例如.classpath、.profile、/bin。。。(eclipsejava项目):这些文件由每个用户在本地更改,但当然不应该被推回!

通常共享IDE配置不是一个好主意,因为通常有适用于一个开发人员的路径(和/或路径分隔符),但不适用于其他开发人员。

然后我将排除这些配置。您是否想过使用maven来管理这些文件,而不是复制属于库的大量文件?

也就是说,如果你想达到你的要求,你应该看看子树来管理这些配置和库。简言之,您将拥有项目的存储库,以及不想要的文件夹的子树(例如lib/、.classpath、.profile、/bin——您真的想对bin进行版本控制吗?)。

你的朋友和那些曾经克隆存储库的人将获得所有信息来(让git)恢复一切。

请查看Git子树手册页面以了解更多信息。同一页有意大利语版本,还有完整的git手册!

对于Eclipse项目文件,您可以考虑查看

git update-index --assume-unchanged [file]

文档可在此处找到。

或者,请参阅此答案以获得一个替代解决方案,该解决方案涉及基本lib/文件/目录的占位符名称,并让开发人员在本地将其重命名为.gitignore已经忽略的内容。

最新更新