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

时间:2015-07-11 18:01:07

标签: git bitbucket

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

3 个答案:

答案 0 :(得分:1)

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

换句话说,如果你推动,而另一个人推动你,那么另一个人的推动将失败,因为他们的提交不是你提交的后代。他们必须fetch您的更改,rebase他们的提交会在此更改之上(或merge它,作为变基的替代方案)并且只有这样他们才能推动(前提是远程仓库在变装时没有变化更多。)

答案 1 :(得分:0)

是的,第二个人可以提交他的更改。但在提交之前,他必须pull第一人的变化。如果存在合并冲突,则在提取更改后,第二个人必须修复这些冲突然后提交。提示:同时处理同一个文件不是一个好主意。几乎总是会产生冲突。

答案 2 :(得分:0)

嗯,你的问题与git提供者使用的无关(github,bitbucket,codebase等)

您的案例的可能工作流程如下。

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

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

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

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

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

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

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

Bob 必须在推送提交之前获取 Alise 的提交。他选择使用rebase git pull --rebase origin/super-cache

进行拉动

Bob 将在parameters.yml中发生冲突。解决冲突后的文件将是

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

现在, Bob 可以继续与git rebase --continue

合并

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

最后, Bob 可以推送他的提交。

您可以看到:Git rebase of Atlassian