如何防止多个用户使用git编辑相同的文件

时间:2012-10-11 21:30:55

标签: git version-control

我目前正在与会议的博士后合作撰写论文。我们调查使用版本控制软件,git似乎是一个很好的候选人。现在我们必须真正体验它并面临一些问题。具体来说,我们有时会在推送之前编辑相同的文件,从而导致任何想要推送第二个的错误。

可以使用哪些提示/工具等来防止同时编辑?我知道git用于大型项目,许多合作者都没有遇到这些问题,所以我们做错了什么?

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

Git没有像TFS那样“锁定”文件的任何机制。如果两个人都在积极地编辑文件的同一部分,那么你应该会发生冲突。

主要事项:

与您的同事讨论您在做什么。如果可以,请协调,如果必须,请警告他们。这似乎是一种行人,但它通常发生在应有的时间。 Scrum很好,因为它使它成为你常规的一部分。

最重要的因素是您保持对自己的更改的时间。您拥有未完成的更改的时间越长,重叠更改集的机会就越多。

在您正在一起工作的功能上创建集成分支是一件好事。如果您经常创建检查点,推送和rebase,那么您就不太可能进行难以纠正的重大更改。虽然小冲突很容易处理。在推送到掌握之前,您可能必须返回并清理一些提交,但这通常很容易协调。

小事:

通过差异查看是一个了解一段代码如何变化的令人难以置信的工具。人们在不同的格式偏好之间切换会破坏这个工具。

具有一致的格式有助于解决这些无关紧要的冲突。选择一致格式的过程是另一回事。 ;)

如果您正在处理函数并注意到空格不正确,您将修复它。使用相同功能的其他人也会这样做。

例如,左缩进:

namespace foo {
namespace bar {

    class Foo {
    public:
        void something();
    };

    class Foo {
        public:
            void something();
    };

}}

namespace foo {
    namespace bar {
    }
}

我个人更喜欢将所有名称空间保持对齐,就像第一组一样。这可以将空白噪音降至最低。一致性是重要的事情。

标签与空格是另一个。从理论上讲,选择哪一个并不重要,但选择一个。

避免移动代码(显然没有充分的理由)。这很难做到,但是如果每个文件中有更多文件包含更少的文件,这就不是问题了。

将小型“内务管理”更改与您的功能/错误修复提交分开。这使得合并这些提交的更改变得非常简单。如果一个是特征更改而另一个是空白更改,那么您可以盲目地进行特征更改。

答案 1 :(得分:1)

实际上,当你正在写一篇论文而不是代码时,git可能不是一个完美的工具。通过使用谷歌文档或类似的东西,您几乎可以实时看到您的合作伙伴所做的更改。而且你不必完成提交/推送/合并的事情。

答案 2 :(得分:0)

“锁定”在某种意义上是自动的。你有自己的副本,他们不能把它带走!正如他们有他们的副本,你不能把它从他们身上拿走。这假设您 使用git DVCS的分布式特性(而不是两者都访问文件共享:-(您将各自拥有自己的克隆并交换分支或推送到共同的裸仓库。< / p>

下一步是确保您使用的文档处理器适合git合并,理想情况下,这将是纯文本源,如Latex或markdown。 Git很乐意合并您的单独贡献并突出您的冲突。不要使用很长的线。

如果您正在合作,您将能够讨论发生合并冲突的常见区域并同意最佳措辞。

享受两者同时工作的自由。