两个人如何同时编辑同一个文件?

时间:2010-10-26 23:17:16

标签: github bitbucket

我相信标题说的。我是源代码控制的新手。

所以,假设我有两个开发人员在同一个项目上工作,他们同时开始编辑同一个文件,然后每个人都会在稍微不同的时间发送新版本。根据我的理解,最后发送更改的人将保留他的更改,另一个人的代码将仅存档!

这是对的吗?

请澄清。感谢。

2 个答案:

答案 0 :(得分:35)

不,这不太正确。这在某种程度上取决于您使用的版本控制软件,但我喜欢Git所以我会谈论它。

假设我们有一个文件Foo.java:

class Foo {
    public void printAWittyMessage() {
        // TODO: Be witty
    }
}

Alice和Bob都修改了该文件。爱丽丝这样做:

class Foo {
    public void printAWittyMessage() {
        System.out.println("Alice is the coolest");
    }
}

和Bob这样做:

class Foo {
    public void printAWittyMessage() {
        System.out.println("Alice is teh suk");
    }
}

Alice首先检查她的版本。当Bob试图检查他的时,Git会警告他存在冲突并且不允许将提交推送到主存储库中。 Bob必须更新他的本地存储库并修复冲突。他会得到这样的东西:

class Foo {
    public void printAWittyMessage() {
<<<<< HEAD:<some git nonsense>
        System.out.println("Alice is the coolest");
=====
        System.out.println("Alice is teh suk");
>>>>> blahdeblahdeblah:<some more git nonsense>
    }
}

<<<<<=====>>>>>标记显示哪些行同时更改。 Bob必须以合理的方式解决冲突,删除标记并提交结果。

最终存储在存储库中的是:

原始版本 - &gt;爱丽丝的版本 - &gt;鲍勃的冲突修正版。

总结:第一个提交没有任何问题,第二个提交必须在进入存储库之前解决冲突。你应该永远不会因为某人的变化被自动破坏而结束。显然Bob可以错误地解决冲突,但版本控制的优点在于你可以回滚错误的修复并修复它。

答案 1 :(得分:4)

很大程度上取决于您使用的系统。

然而,在常见的情况是:谁提交他的更改第二将不得不执行“合并”操作。意思是他/她需要比较两个文件并提出合并版本。然而(!)许多流行的系统(包括IDE)都带有智能工具来帮助你做到这一点。

以下是一些比较的工具: http://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools