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

标签 github bitbucket

我相信标题就是这样。我是源代码控制的新手。

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

那是对的吗?

请说清楚。谢谢。

最佳答案

不,那不是很正确。这在某种程度上取决于您使用的版本控制软件,但是我喜欢Git,因此我将在后面进行讨论。

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

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

爱丽丝和鲍勃都修改了文件。爱丽丝这样做:
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会警告他存在冲突,并且不允许将提交内容推送到主存储库中。鲍勃必须更新其本地存储库并解决冲突。他会得到这样的东西:
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必须以某种明智的方式解决冲突,删除标记并提交结果。

因此,最终存在于存储库中的是:

原始版本->爱丽丝的版本->鲍勃的冲突固定版本。

总结一下:提交的第一个命令没有任何问题,提交的第二个必须解决冲突,然后才能进入存储库。您永远都不应以别人的更改被自动破坏为最终目标。显然,Bob可以错误地解决冲突,但是版本控制的优点在于您可以回滚并修复错误的修复程序。

关于github - 两个人如何同时编辑同一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4028845/

相关文章:

github - 在 GitHub 合并事件上触发 Jenkins 构建

unity-game-engine - Unity 2019 - 如何修复 TextMeshPro 2.0 错误 cs0433

docker - 可以登录到 docker-registry 但不能推送图像(github)

android - 我如何为每个拉取请求托管一个 Android APK 文件,以便 QA 可以在合并之前测试它们?

json - 如何通过 Bitbucket API 创建拉取请求?

Git 克隆 EC2 实例权限错误

java - Bitbucket 与 Java Maven 项目和 JFX 的管道

bitbucket - 有没有用于 BitBucket 的代码审查工具(类似于 FIsheye),无需合并?

git - bitbucket,无法 pull 更新,导致 403 错误

git - 在 Jenkins 多分支管道上触发重复构建