繁体   English   中英

Git(位桶)将两个用户的更改合并到同一分支

[英]Git (Bit Bucket) merge changes from two users to same branch

我已经在Git(位存储桶)中创建了一个分支。 两个人正在修改同一文件。 一个人提交了文件。 其他人在同一文件中也有本地更改。 第二个人应该能够合并他的代码而不会丢失其内容,并且较早的提交也应该是完整的。 我搜索了许多选项,但可以找到明确的答复。 请帮我。

Git不允许您(除非您--force it)将一组提交推送到远程分支,除非该远程分支的HEAD是该提交集合的祖先。

换句话说,如果您推送,而另一个人在您之后推送,则另一个人的推送将失败,因为他们的提交不是您提交的后代。 他们将不得不fetch你的变化, rebase上变化的顶部的提交(或merge了,作为替代垫底),只有这样,他们能够推动(前提是远程回购并没有改变甚至更多,而他们正在重新基地)。

是的,第二个人将能够提交他的更改。 但是在提交之前,他将不得不pull第一个人的更改。 如果存在合并冲突,则在拉出更改后,第二个人必须修复那些冲突然后提交。 提示:同时处理同一文件不是一个好主意。 几乎总是会造成冲突。

好吧,您的问题与git提供程序的使用无关(github,bitbucket,代码库等)

您的情况可能的工作流程如下。

有两个开发人员, AliceBob 两者都用下一个内容修改了parameters.yml文件。

# parameters.yml
database_user: 'root'
database_password: 'root'

爱丽丝添加了一个参数来打开/关闭缓存。

# parameters.yml
database_user: 'root'
database_password: 'root'
cache: true

Bob添加其他参数以在应用程序中打开/关闭调试模式时。

# parameters.yml
database_user: 'root'
database_password: 'root'
debug: false

爱丽丝将她的更改推送到super-cache分支。 之后, Bob还将其更改也推送到super-cache分支。 但是,他的推送失败,因为正如@PSkocik所说, Bob的提交不是Alice提交的后代。

鲍勃必须先推送Alise的提交,然后再推动其提交。 他选择使用rebase进行一次pull git pull --rebase origin/super-cache

鲍勃parameters.yml会有冲突。 解决冲突后的文件将是

# parameters.yml
database_user: 'root'
database_password: 'root'
debug: false
cache: true

现在, Bob可以继续使用git rebase --continue合并

此后, Bob拥有super-cache分支的所有提交以及他的提交。

最后, 鲍勃可以推动他的提交。

您可以看到: Atlassian的Git重新定位

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM