来自mercurial,我使用分支来组织功能.当然,我也想在我的历史中看到这种工作流程.
我使用git开始了我的新项目并完成了我的第一个功能.合并该功能时,我意识到git使用快进,即如果可能,它会将我的更改直接应用到主分支并忘记我的分支.
因此,思考未来:我是唯一一个从事这个项目的人.如果我使用git的默认方法(快进合并),我的历史将导致一个巨大的主分支.没有人知道我为每个功能使用了一个单独的分支,因为最后我只有那个巨大的主分支.这看起来不专业吗?
通过这种推理,我不想要快进合并,也不知道为什么它是默认的.这有什么好处的?
场景:我正在尝试在git下获取我的unix点文件.我必须在(至少)cygwin环境和一些标准的Linux发行版(ubuntu和opensuse)之间工作,并且我有特定于cygwin的文件/代码行.由于我不想检查无用的文件或者不得不处理我的dotfiles中的大量案例,我正在为我的每个环境创建分支.但是我做的大部分编辑对所有环境都是通用的,所以几乎每次我提交时我都需要将该更改传播到我的所有分支.
所以基本上我有几个几乎相同的分支,除了一些提交,并且我需要在所有分支中进行大多数提交.
问题:如果有的话,推荐的git工作流程是什么?或者,对于我的场景,是否有更好的设置(不使用多个分支?)?
[我尝试过采摘樱桃,但这涉及到相当多的工作,更不用说这里的所有重复提交以及保持我的分支同步的噩梦.]
背景:我们在项目中使用github,并且在我自己的主存储库的fork上工作.我们使用rebase而不是merge来避免大型合并提交.
场景:我想要的工作方式是这样的:
问题:第4步是我遇到问题的地方.我几乎总是要处理非快速转发的提交并使用git push --force.
我看了看
并没有找到一种方法使我的工作流程工作.在git工作流上进行谷歌搜索主要返回的结果是假设你们都在本地分支上工作,而不是在github上保留远程副本(例如 http://nvie.com/posts/a-successful-git-branching-model /).
我对Git比较陌生,所以我想知道我是否遗漏了一些东西.我希望能够在没有--force的情况下完成第4步.另一个工作流仍然允许我使用rebase而不是merge并保留我的本地分支的远程副本也非常有用.