【发布时间】:2020-07-10 08:45:29
【问题描述】:
我们正在尝试使用 github,但我们似乎使用它非常错误。我创建了一个包含原始数据文件、源代码、处理过的数据文件、结果文件(如 png 和 html 以及 csv 文件)的存储库。只要我是唯一使用它的人,一切都很好。但是,我已授予合作者访问权限,现在她和我完全无法从存储库中拉取或推送。似乎处理数据文件的创建正在创建不兼容性,使我们双方都无法进行数据拉/推。实际上,我们必须删除所有新工作才能获取,这使得 github 无法实现其预期目的,即代码(以及结果和数据等)的共同开发
我们陷入了僵局。当前的解决方法都非常次优: a) 在 github 是单用户范式的概念下运行 b) 使用 git hub 进行文件传递,但不涉及主动开发,因此它变成了一个复杂的 Dropbox。
我认为最好的策略是删除除最简单的源文件之外的所有源文件,并且可能是原始不可触及的原始数据源文件。少即是多。 (没有什么是最好的?)但显然不支持从活动存储库中删除文件。也就是说,我可以将文件添加到 .gitignore。我可以从我的本地图像中删除它们。但是我必须先拉,然后再推,它们都会再次出现。变基不是答案。
有什么方法可以“推送”文件删除事件吗?或者从 github.com 帐户中删除除 3 或 4 个文件之外的所有文件?还是我应该删除整个存储库并重新开始?或者我应该回到svn,它对png文件等分层没有问题,并且只有在源文件中有冲突时才声明冲突?
有什么方法可以教 github 只合并那些应该可以合理合并的文件,比如后缀为 .R、.h、.c、.cpp、.py、.javac、.html 等的文件。并简单地以适当的版本号增量覆盖其他文件,例如在 svn 中?
努力在文档中和在线上寻找这些问题的答案只会让挫败感持续下去。
感谢您的建议。
【问题讨论】:
-
建议使用“git rm --cached *.png”后跟“git commit --amend -CHEAD”会导致错误“你正在合并——不能修正”这可能是真的,但它让我无处可去。
-
如上所述,我要做的一件事是不提交生成的工件 - 我将添加一个 CI/CD 挂钩来生成它们并创建独立于个人机器的工件。您还可以做的一件事是将任何非合并文件的 git 属性设置为二进制 - 然后它不会尝试复杂的合并。
-
谢谢你,煤灰。将 git 属性设置为二进制似乎是要做的事情。我很惊讶这是一个“自定义”功能(不是介绍性功能),因为我想大多数用户会在开始使用 git 的一天内遇到这个问题。或者,在使用 git 进行共同开发的一天内。这是第二个打破管理良好的存储库设计的用户。想象一下当第三个用户加入时形成的结,然后没有人可以推或拉任何东西!
-
我将发布一个新问题来解决最后一点。使用单个源文件,我和我的合作者已经能够创建绝对静止。即使我们解决了代码的合并部分并且代码运行良好,所有提交/所有推送/所有拉取都被阻止。 git 真是个噩梦!
标签: git github version-control repository multi-user