版本控制-使用快进提交进行合并的git工作流



我在许多开发人员的几个项目中使用git。我通常的工作流程是针对特定的特性/请求进行本地分支,将我的更改合并到上游跟踪的本地分支中,然后推送更改。即使只有一个提交,我也总是会进行分支。我从来不会在与他人共享的分支上进行本地提交,所以我可以自由地在本地进行重基/混混,直到我将更改推送到上游。作为一种偏好,我希望我的合并尽可能快地向前提交。作为一个例子,如果一个项目的版本1是由origin/v1分支上的所有开发人员推动的,我将:

git checkout v1
git checkout -b feature-A
#Do work on feature-A branch.  Test, rebase --interactive to clean up

最终,我想将我的更改合并到v1本地并推送到origin/v1。我要做一个git fetch origin,检查一下feature-A。如果有更改,我将签出v1并合并

git fetch origin
#If New changes are present checkout v1 and merge
git checkout v1
git merge origin/v1 #I could pull but I prefer to fetch, log origin/v1, and then merge

现在,为了实现feature-A的快速合并,我签出feature-A,重新定位到v1,签出v1,合并feature-A,并将v1推回origin

git checkout feature-A
git rebase v1
git checkout v1
git merge --ff-only feature-A
git push origin v1

非快进提交和合并提交都没有错。再说一次,这只是个人偏好的问题。我想知道是否有更好的工作流程来完成同样的事情,而不需要通过所有的分支签出。可能有一个git命令,我不知道它会在我在更新的v1分支上重新设置feature-A之后工作。

https://stackoverflow.com/a/4157106/620304看起来有帮助。一个可能的工作流程是更新v1与最新的变化从原点和更新v1 feature-A的头部本地后,我rebase:

#Starting from feature-A currently checked out
git fetch origin
#New changes are present
git checkout v1
git merge origin/v1
git checkout feature-A
#In I didn't fetch anything from origin's v1 branch I can skip the commands between the comments
git rebase v1
git branch -f v1 feature-A
git push origin v1

我肯定会有更好的方法。

只使用快进合并的工作流本质上是一个重基工作流。一般的rebase工作流程与您给出的示例非常相似,除了git rebase origin/v1而不是合并。

我看过的引用最多的文章是Randy Fay的博客文章:A Rebase Workflow for Git。

请务必阅读本文开头链接的后续文章,了解一些便于使用的快捷方式。

相关内容

  • 没有找到相关文章

最新更新