[英]Git (Bit Bucket) merge changes from two users to same branch
我已经在Git(位存储桶)中创建了一个分支。 两个人正在修改同一文件。 一个人提交了文件。 其他人在同一文件中也有本地更改。 第二个人应该能够合并他的代码而不会丢失其内容,并且较早的提交也应该是完整的。 我搜索了许多选项,但可以找到明确的答复。 请帮我。
Git不允许您(除非您--force
it)将一组提交推送到远程分支,除非该远程分支的HEAD是该提交集合的祖先。
换句话说,如果您推送,而另一个人在您之后推送,则另一个人的推送将失败,因为他们的提交不是您提交的后代。 他们将不得不fetch
你的变化, rebase
上变化的顶部的提交(或merge
了,作为替代垫底),只有这样,他们能够推动(前提是远程回购并没有改变甚至更多,而他们正在重新基地)。
是的,第二个人将能够提交他的更改。 但是在提交之前,他将不得不pull
第一个人的更改。 如果存在合并冲突,则在拉出更改后,第二个人必须修复那些冲突然后提交。 提示:同时处理同一文件不是一个好主意。 几乎总是会造成冲突。
好吧,您的问题与git提供程序的使用无关(github,bitbucket,代码库等)
您的情况可能的工作流程如下。
有两个开发人员, Alice和Bob 。 两者都用下一个内容修改了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.