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

Git(比特桶)将两个用户的更改合并到同一个分支,git,bitbucket,Git,Bitbucket,我已经在Git(BitBucket)中创建了一个分支。两个人正在修改同一个文件。一个人提交了文件。其他人在同一文件中也有本地更改。第二个人应该能够在不丢失内容的情况下合并他的代码,并且之前的提交也应该是完整的。我搜索了很多选项,但都能找到一个清晰的答案。请在这方面帮助我。是的,第二个人可以提交他的更改。但在提交之前,他必须提取第一人称的变化。如果存在合并冲突,则在拉取更改后,第二个人必须修复这些冲突,然后提交。提示:同时处理同一个文件不是一个好主意。它几乎总是制造冲突 Git不允许您(除非您--

我已经在Git(BitBucket)中创建了一个分支。两个人正在修改同一个文件。一个人提交了文件。其他人在同一文件中也有本地更改。第二个人应该能够在不丢失内容的情况下合并他的代码,并且之前的提交也应该是完整的。我搜索了很多选项,但都能找到一个清晰的答案。请在这方面帮助我。

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

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


换句话说,如果您推送,而另一个人在您之后推送,那么另一个人的推送将失败,因为他们的提交不是您的提交的后代。他们必须
获取
您的更改,
在更改的基础上重新设置其提交的基础(或者
合并
它,作为重新设置基础的替代方案),只有这样他们才能推送(前提是远程回购在重新设置基础时没有更大的更改)。

好吧,您的问题与git提供商使用的是无关的(github、bitbucket、codebase等)

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

有两个开发人员,AliceBob。他们都用下一个内容修改了
参数.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合并--继续

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

最后,Bob可以推动他的提交


您可以看到:

非常感谢您的快速回复。在这种情况下,隐藏是否有效?我要解释的场景是:我在从其他用户的提交中触发之前隐藏我的工作隐藏应用我的更改它将我的更改与我在本地repo中看到的较早提交合并。这是正确的过程吗?或者是否存在任何错误更好的方法?