Git 两个用户试图推送具有相同名称的两个分支

Git 两个用户试图推送具有相同名称的两个分支,git,git-branch,Git,Git Branch,下面是我的场景:有两个用户,他们都克隆了相同的存储库(因此这意味着他们有相同的远程数据库)。 我们在本地创建一个分支,比如说“branch1”在其中开始一些开发/提交,最后希望将分支推到远程。 这是可能的 然而,第二个也做了同样的事情,创建了一个同名的分支('branch1'),在其中提交了一些内容,最后希望推送; 这可能吗?他应该运行哪些命令才能工作?推之前的拉力够吗 谢谢。这两个用户实际上在同一个分支上工作,因此所有的限制都应该适用 这种协作的最佳实践有些主观。I喜欢的是在远程上重新设置我的

下面是我的场景:有两个用户,他们都克隆了相同的存储库(因此这意味着他们有相同的远程数据库)。 我们在本地创建一个分支,比如说“branch1”在其中开始一些开发/提交,最后希望将分支推到远程。 这是可能的

然而,第二个也做了同样的事情,创建了一个同名的分支('branch1'),在其中提交了一些内容,最后希望推送; 这可能吗?他应该运行哪些命令才能工作?推之前的拉力够吗


谢谢。

这两个用户实际上在同一个分支上工作,因此所有的限制都应该适用


这种协作的最佳实践有些主观。I喜欢的是在远程上重新设置我的工作,然后将一些提交的补丁推送到远程。

首先,这听起来很危险,可能会导致意外删除或合并代码。我认为更好的情况是第一个人创建分支并将其向上推,然后第二个人将分支向下拉并从那里开始工作

但是,我认为有一种方法可以做到这一点,即第二个人可以获取历史记录,然后将远程分支合并到本地分支,然后将其分支向上推

git fetch
git checkout branch1
git merge origin/branch1
git branch -u origin/branch1
git push

从这一点开始,第二个人应该让他们的本地分支跟踪同一个远程分支,并完全合并和集成

一般来说,这应该是可以的,因为无论用户a和b推入哪个订单,另一个都可以将它们拉到一起并合并在一起。这:

usera$ git push

userb$ git pull
userb$ git push
将导致如下结果:

C1 -- C2 -- ... <master
       |\
       | a1 -- a2 -- a3          <user a branch
        \                >- ab4    <remote branch (merge commit)
         b1 -- b2 -- b3          <user b branch

C1--C2-- 第二个用户的推送将被拒绝,因为分支不是最新的。当他们检查他们的状态时,他们会让他们的状态显示分支已分叉,他们领先于x提交,落后于y提交。x提交数将是自两个分支的公共合并基以来的提交数。y提交将是第二个用户分支上的提交,而不是推送分支上的提交


第二个用户需要执行合并/重设基础操作以同步分支,然后才能推送分支。这应该不是问题。

本地分支名称和推送到远程的分支名称不需要相同。这对于这种情况非常有用,尤其是与“名称空间”分支结合使用时。您的用户可以执行以下操作:

git push origin branch1:<username>/branch1
git推送原点branch1:/branch1
这将导致
原点
远程上出现两个不同的分支,即使它们在本地分配的分支名称相同。这将允许每个用户
git fetch
其他用户分支也进行比较。除了一些特定的“知名”分支名称集(
master
dev
test
,等等),这样做实际上是一个非常有用的工作流