我们的master
是主要分支,它的快照会在每个版本发送给我们的客户。同时,我们有时会将其部署到我们的暂存环境中,这与客户端的生产环境完全不同,因此需要进行大量分散的代码更改(太多不适合配置文件而与客户端无关)。我尝试维护一个staging
分支并根据对master
所做的更改来重新定位它,但我总是遇到一些问题,例如在staging
上进行开发并将更改发送到master
,而不进行通常的分段修改;合并而不是rebase并不是更好。目前我维护一个补丁文件,每当我想在我们的暂存环境中试用时,我都会应用master
:/然后我在继续开发之前撤消它。
我想知道是否有更好的工作流程允许这样的开发。
答案 0 :(得分:1)
如果我正确理解您的工作流程,问题的主要来源之一就是在staging
分支上进行开发。
如果staging
的唯一目标是维护在登台群集上运行所必需的更改,那么您可以尝试以下工作流程。
master
,staging
的提示保留为维护暂存群集更改的提交。答案 1 :(得分:1)
Git(> 2.5甚至在contrib文件夹之前)包含使用workdir
Workdir是一种使用单个仓库同时检出多个分支的方法。
git-new-workdir project-dir new-workdir branch
此命令允许您并排在多个分支上同时工作
该函数的作用只是创建git
文件夹的浅表副本(在新文件夹中键入树.git以查看它实际指向的位置),您将看到它指向原始git文件夹。
在新文件夹中,您可以创建新的提交,分支等,并且您将在所有new-workdir
个文件夹中看到它,因为它们共享“相同”的git仓库。
contrib/workdir
添加到您的路径git-new-workdir
导航到您当前的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)
: - )
Git(> 2.5)包含一项功能,允许您在不使用此脚本(git checkout --to=$path
)的情况下拥有多个工作目录。