gpt4 book ai didi

git - 多开发人员 Git 工作流程,保持干净的历史记录

转载 作者:太空狗 更新时间:2023-10-29 13:26:50 27 4
gpt4 key购买 nike

山多夫斯基 advocates对你的“主要” repo 的历史非常严格,保持它的干净而不用分支和检查点提交来混淆它。

You should never merge a private branch directly into a public branch with a vanilla merge. First, clean up your branch with tools like reset, rebase, squash merges, and commit amending.

Treat public history as immutable, atomic, and easy to follow. Treat private history as disposable and malleable.

这对我很有吸引力,我正计划实现一个工作流程,让我的同事每个人都有自己的远程存储库来推送,并在他们完成分支上的工作并清理提交历史后执行 pull 请求。随后,我(“集成经理”)将这些干净的提交 merge 到通用开发分支中。

我想这种方法意味着 blessed repo 除了 the master and develop branch 之外不会有任何分支。 .功能分支将仅存在于您的本地存储库中——如果需要在分支上进行协作,可以通过将分支推送到其中一名协作员工的远程存储库来实现。

然而,Pro Git book将其描述为“公共(public) 小型项目”的工作流程。这是否意味着在我们的案例中使用不同的工作流更好,比如将完成的分支推送到 blessed 仓库而不是个人仓库?

需要说明的是:我并不是要增加不必要的复杂性或开销。我的目


编辑:显然问题并不清楚,所以我会尝试总结一下:

让我的同事将他们的分支直接推送到我们的存储库是否有缺点(例如,它会以某种方式“污染”它的历史)吗?

最佳答案

我相信 Gitolite"personal" branches可能非常适合您的需求。这就像拥有一个个人区域(又名命名空间),每个开发人员都可以(甚至强制)推送。相反,master 对于除集成商以外的所有开发人员都是只读的。

如果Alice的.git/config包含如下配置:

[remote "origin"]
url = git@server:project
push = +refs/heads/*:refs/heads/personal/alice/*
fetch = +refs/heads/master:refs/remotes/origin/master
fetch = refs/heads/personal/alice/*:refs/remotes/origin/me/*
fetch = +refs/heads/personal/bob/*:refs/remotes/origin/bob/*

然后爱丽丝会看到

  • 她在服务器上的分支为origin/me/branch,和
  • Bob 的分支为 origin/bob/branch

这样,爱丽丝可以:

  • 在她的分支上工作并将它们 pull/推到服务器
  • master 开始一个新分支
  • 从 Bob 的分支开始一个新分支
  • 只需在服务器上推送即可备份她的工作。

Gitolite 可以配置为 Alice 不能在 Bob 的个人空间上写,反之亦然:

@users = alice bob
@integrators = john
@repos = repo1 repo2

repo @repos
RW+ = @integrators
RW+ personal/USER/ = @users

关于git - 多开发人员 Git 工作流程,保持干净的历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9700709/

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