在Git中维护同一源代码树的两个版本的工作流程

时间:2016-01-11 17:49:22

标签: git

我们的master是主要分支,它的快照会在每个版本发送给我们的客户。同时,我们有时会将其部署到我们的暂存环境中,这与客户端的生产环境完全不同,因此需要进行大量分散的代码更改(太多不适合配置文件而与客户端无关)。我尝试维护一个staging分支并根据对master所做的更改来重新定位它,但我总是遇到一些问题,例如在staging上进行开发并将更改发送到master,而不进行通常的分段修改;合并而不是rebase并不是更好。目前我维护一个补丁文件,每当我想在我们的暂存环境中试用时,我都会应用master:/然后我在继续开发之前撤消它。

我想知道是否有更好的工作流程允许这样的开发。

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的工作流程,问题的主要来源之一就是在staging分支上进行开发。

如果staging的唯一目标是维护在登台群集上运行所必需的更改,那么您可以尝试以下工作流程。

  1. master
  2. 上进行所有开发
  3. staging的提示保留为维护暂存群集更改的提交。
  4. 每当您需要运行暂存测试时,请对主服务器进行底层登台。

答案 1 :(得分:1)

Git(> 2.5甚至在contrib文件夹之前)包含使用workdir

一次处理多个分支的选项

Workdir是一种使用单个仓库同时检出多个分支的方法。

git-new-workdir project-dir new-workdir branch

此命令允许您并排在多个分支上同时工作 该函数的作用只是创建git文件夹的浅表副本(在新文件夹中键入树.git以查看它实际指向的位置),您将看到它指向原始git文件夹。

在新文件夹中,您可以创建新的提交,分支等,并且您将在所有new-workdir个文件夹中看到它,因为它们共享“相同”的git仓库。

演示:(Unix)

  1. contrib/workdir添加到您的路径
  2. 将执行标志设置为git-new-workdir
  3. 导航到您当前的git存储库

    git new-workdir . my_new_path 
    cd my_new_path
    tree .git ( you should see links to the original git repository)
    git checkout -b new_branch
    git branch (your new branch is listed)
    cd original_path
    git branch (the new branch is listed but the current branch is the original branch)
    
  4. : - )

    Here is a screenshot of the 2 diffent branches

    Git(> 2.5)包含一项功能,允许您在不使用此脚本(git checkout --to=$path)的情况下拥有多个工作目录。