我在大学的教授希望我的每个同学将他们的名字添加到带有出席列表的文件中。
我的问题是最有效的方法是什么?创建22个分支并委派一个人来管理这些分支或确定学生写入文件之间的顺序?也许您知道更好的方法。
答案 0 :(得分:1)
假设这是一个文本文件,确保尽可能少的冲突的最简单方法是让每个学生都按字母顺序(或其他顺序)知道他们的排名;第一个创建带有22个空行的文件的学生;并将每个学生的姓名放在适当的行中。 (编辑:仔细考虑,将其设置为43个空行会更安全,因此,每对名称之间可以有一个空行;然后由最后一个人删除空行。)
从技术上讲,第二个最简单的方法是使用此订单来设置时间表,尽管要与22名学生一起上班真是一场噩梦。从理论上讲,放牧猫很容易,实际上却很可怕。
第三种最简单的方法(在实践中也更容易实现)是每个人都可以在任意时间(尤其是前几个人)随机地编辑文件,添加自己,提交和推送尽可能快的方法,以便为diff与之合作。
答案 1 :(得分:0)
在我看来,您对此太想了。如果您根本不做任何协调,会发生什么?也就是说,假设您只是让每个人都克隆存储库,编辑文件并推送结果,而不必担心其他人在做什么...
有人会“碰巧”首先推动。这种推动将持续下去。下一个人会收到一条错误消息,说他们不是最新的。因此,他们将拉动,解决简单的冲突(如果存在 冲突,可能存在或可能不存在),推动并完成。
最糟糕的情况是,多个人正在同时解决冲突,因此除了其中一个人之外,所有其他人都必须重新解决。如果每个人都试图同时完成此操作,那么这无疑会很烦人。但是,假设您有一个合理的时间窗来执行此操作,则可能不会有什么大问题。实际上,使用git或多或少是很重要的-大量的人可以在无需人为协调的情况下同时处理同一个文件。
现在,有些人会认为结果历史记录是“混乱的”,因为任何时候有人必须先拉然后推,都会创建合并提交。最坏的情况是,这还不比每个人都在一个单独的分支上添加自己的名字时的情况还要糟糕。并且,甚至可以避免这种情况发生(例如,在提示在推送之前进行拉动时使用“ get pull --rebase”)。