Github 如何处理两个人同时编辑同一个文件?
我相信标题说明了这一点。我不熟悉源代码管理 所以,假设我有两个开发人员在同一个项目上工作,他们在同一时间开始编辑相同的文件,然后他们每个人在稍微不同的时间发送新版本。据我所知,最后发送更改的一方将保留其更改,另一方的代码将仅在存档中 对吗Github 如何处理两个人同时编辑同一个文件?,github,bitbucket,Github,Bitbucket,我相信标题说明了这一点。我不熟悉源代码管理 所以,假设我有两个开发人员在同一个项目上工作,他们在同一时间开始编辑相同的文件,然后他们每个人在稍微不同的时间发送新版本。据我所知,最后发送更改的一方将保留其更改,另一方的代码将仅在存档中 对吗 请澄清。谢谢。不,那不太正确。这在某种程度上取决于您使用的版本控制软件,但我喜欢Git,所以我将讨论它 假设我们有一个Foo.java文件: class Foo { public void printAWittyMessage() {
请澄清。谢谢。不,那不太正确。这在某种程度上取决于您使用的版本控制软件,但我喜欢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");
}
}
class Foo {
public void printAWittyMessage() {
System.out.println("Alice is teh suk");
}
}
鲍勃这样做:
class Foo {
public void printAWittyMessage() {
System.out.println("Alice is the coolest");
}
}
class Foo {
public void printAWittyMessage() {
System.out.println("Alice is teh suk");
}
}
爱丽丝先检查她的版本。当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>
}
}
class-Foo{
public void printAWittyMessage(){
>布拉德布拉德布拉德布拉:
}
}
标记显示同时更改的行。Bob必须以合理的方式解决冲突,删除标记,并提交结果
因此,存储库中最终存在的是:
原始版本->爱丽丝的版本->鲍勃的冲突修复版本
总而言之:第一个提交的人没有任何问题,第二个提交的人必须在进入存储库之前解决冲突。你不应该以某人的改变被自动破坏而告终。显然,Bob可以错误地解决冲突,但版本控制的好处在于,您可以回滚错误的修复并修复它。很大程度上取决于您使用的系统 然而,常见的情况是:第二次提交更改的人必须执行“合并”操作。这意味着他/她需要比较这两个文件并得出一个合并的版本。然而(!)许多流行的系统(包括IDE)都配有智能工具来帮助您实现这一点 以下是一些类似的工具:
你说得很好!鼓掌:-)