【问题标题】:shared github codevelopment (only 2 users) creates unresolvable push/pull conflicts共享 github 共同开发(只有 2 个用户)会产生无法解决的推/拉冲突
【发布时间】: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


【解决方案1】:

理想情况下,Git(和 GitHub 中的存储库)应该用于源代码,而不是用于生成的文件(您的“结果文件”)。
“原始不可触碰的原始数据源文件。”如果它们是不可变的,也可以进行版本控制。

如果您需要添加生成的文件(每次提交新的源代码时可能会更改,并且会产生冲突),为了记住所述文件,您可以考虑:

  • 对所有这些非源文件进行归档(zip、tar、...)
  • add it as a "release" 关联到您的提交

但是对于 每个 提交来说,这似乎很麻烦。

【讨论】:

  • 谢谢。这就是我需要听到的。颠覆对此没有任何问题。我现在不清楚为什么世界更喜欢 git 与 svn 相比,这种设计理念有点破旧。
猜你喜欢
  • 2013-03-25
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 2012-12-28
  • 1970-01-01
  • 2016-09-24
相关资源
最近更新 更多