如果团队renames a remote branch中的一位开发人员也签出了另一位开发人员,那么第二位开发人员更新本地存储库的最佳方法是什么呢? >
答案 0 :(得分:2)
如您的链接所述,没有“重新分支”;因此,第一个开发人员要做的是创建一个新分支,然后从正在使用它的其他用户下删除旧分支。[p]
可以通过手动处理与分支相关的配置设置等来独立更新每个本地存储库-甚至更危险的是,直接破解元数据...但是我更喜欢这样的解决方案:
鉴于old-branch-name
已删除,new-branch-name
已创建以替换它:
1)在本地获取并创建新分支。
git fetch -p
git checkout new-branch-name
请注意-p
的{{1}}参数,这将导致fetch
的远程跟踪引用消失(因为old-branch-name
不在远程上)。 / p>
假设old-branch-name
尚未使用(无论是在本地存储库中,还是在其配置的其他远程数据库中),这将创建具有适当跟踪的新分支,并将其检出。然后
new-branch-name
现在,有许多不同的情况会导致这一点,我们可以遍历所有可能涉及的问题,但是最重要的是,这使得分支看起来像一直是git reset --hard old-branch-name
git branch -D old-branch-name
。
例如,如果您以前有过
new-branch-name
而x -- A <--(origin/old-branch-name)
\
B <--(old-branch-name)
的{{1}}副本仍在origin
,那么new-branch-name
会给您
A
在fetch -p
,x -- A <--(origin/new-branch-name)
\
B <--(old-branch-name)
和checkout
之后,您拥有
reset
如果branch -D
的远程副本已升级(例如,已升级到x -- A <--(origin/new-branch-name)
\
B <--(new-branch-name)
),则提取将为您提供
new-branch-name
最后你会拥有
C
这与您的本地分支位于远程站点后面的正常情况没什么不同。
就像我说的那样,有很多情况,因此,如果有特别关注的问题,请随时发表评论,我可以添加它。但是无论如何,无论您有没有“重命名”的集成状态,这都应该用新分支有效地替换旧分支。
[1]这并不是说如果团队同意的流程要求这样做,那肯定是错误的事情;但这确实意味着这样做的人应该负责传达变更,自然而然的结果是有人 将以其原始名称重新创建分支-几乎可以肯定会创建不同的分支-否则。>
答案 1 :(得分:1)
如果您在分支机构上没有任何工作或出于其他原因保存名称,通常可以采用Mark Adelsberger's answer中的方法删除旧名称。
如果您要做有理由将其重命名,则可以通过两个命令来完成它:
git branch -m old-name new-name
git branch --set-upstream-to=origin/new-name new-name
您可以按其他顺序执行这些操作,只需在当时使用正确的名称即可。