gpt4 book ai didi

git - 如何与多个开发人员共享一个 git 功能(或主题)分支

转载 作者:太空狗 更新时间:2023-10-29 12:58:23 26 4
gpt4 key购买 nike

我遵循描述的工作流程 here ,因为我发现许多引用资料都指向此页面是一个很好的工作流程。正如文章中提到的,“功能”分支在开发者之间共享,但不去中央存储库。

假设开发人员“A”使用 git checkout -b newfeature develop 开始了一个新的功能分支。现在假设开发人员“B”也需要处理此功能。这是我的问题。

我做了什么:

  1. 开发人员“B”将开发人员 A 的机器添加为远程
  2. 开发人员“B”运行 git branch remoteA/newfeature
  3. 开发人员“B”在此分支上工作,提交他的工作并将更改推送回 remoteA。

第 3 步现在不起作用。我收到一条消息:

remote: error: By default, updating the current branch in a non-bare repository is denied, because it will make the index and work tree inconsistent with what you pushed, and will require 'git reset --hard' to match the work tree to HEAD.

remote: error: You can set 'receive.denyCurrentBranch' configuration variable to 'ignore' or 'warn' in the remote repository to allow pushing into its current branch; however, this is not recommended unless you arranged to update its work tree to match what you pushed in some other way.

remote: error: To squelch this message and still keep the default behaviour, set receive.denyCurrentBranch' configuration variable to 'refuse'.

我已经设置了 sharedRepository = true,但没有用。

我有两个问题:

  1. 在开发人员之间共享功能分支的正确方法是什么?
  2. 我如何才能将开发人员 B 的存储库中的更改推回到开发人员 A 的原始存储库中?

最佳答案

共享功能分支的最简单方法是将它们简单地推送到中央存储库,这样任何人都可以从中提取。这样您就可以简单地使用主存储库已有的基础设施,并且可以轻松地共享代码。

一旦不再需要远程上的功能分支,您可以通过执行以下操作简单地删除它

git push <server> :branch

我建议不要在开发人员机器之间直接共享,因为这很容易出现用户位于不同网络(未相互连接)等问题。

如果可能,您还可以使用 GitHub 模型,其中服务器上有一个中央存储库(受祝福的主存储库)。除了主存储库之外,每个开发人员都有该存储库的“分支”,他可以在其中拥有完全的提交访问权限,并可以根据自己的喜好推送分支。

在这种情况下,您可以将同事的 fork 作为远程服务器添加到您的存储库,同时保持对一个集中式服务器的轻松访问(省去了在每台机器上设置 SSH key 等的麻烦)。

关于 GitHub 模型的描述可以在这里找到: http://www.eqqon.com/index.php/Collaborative_Github_Workflow

更新:正如评论者所指出的,这是开始使用集中式功能分支工作流程的一个很好的链接:http://nvie.com/posts/a-successful-git-branching-model/

更新 2:扩展您的第二个问题:

您要做的是推送到另一个开发人员的非裸存储库。Git 在以前的一些版本(我认为是 1.6 左右)中引入了裸存储库的概念——这是一个没有 checkout 状态但只包含通常进入 .git 的数据库的存储库

此更改背后的原因是,每当您推送到同事的存储库(他目前正在做某事)时,您就是在他的眼皮子底下操纵存储库。所以他 checkout 版本 featureA-1 .. 开始工作 .. 然后你将 featureA-2 推到他的 repo 上,当他想要提交时他遇到了麻烦,因为他所在的分支已经推进了一个他在期间没有看到的提交发展。

因为这非常具有破坏性 - 大多数人都采用了本地 git 存储库(你积极工作的地方)的概念应该是私有(private)的,而你有一个公共(public)的 git-repo(< em>fork) 您接收和共享更改的地方。这样你就不会在工作期间被其他人打扰(无论如何,这就是分散模型背后的整个想法)并且只能 merge 你想要的更改。 (没有人可以将某些东西强加到您当前的工作上)。

关于git - 如何与多个开发人员共享一个 git 功能(或主题)分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com