7

我目前正在将 Git 用于我的一个项目,我喜欢它。

但是,因为我是唯一一个在我的项目上工作的人,所以我一直在使用的唯一命令是

git status
git add .
git commit -m 'message here'
git push origin master

很久以前我已经将项目推送到远程(我使用 Capistrano 进行部署),并且一切正常。

现在我想改变网站的设计,但保持逻辑不变。我猜我需要为此创建一个新分支(我们称之为newdesign)。

不过,我想知道的是:如果我在分支上工作newdesign,并且在分支中看到一个错误,master我该如何修复该错误master,然后将该错误修复集成到newdesign分支中,以便后者成为跟上实际的逻辑?

4

2 回答 2

36

这是一个可以利用 Git 分支的经典案例。这是您应该使用的工作流程。

假设您创建了一个develop分支,master并在该分支上进行了一些提交:

在此处输入图像描述

突然,你意识到 有一个错误master,一个你需要快速修复的错误。master您应该创建一个短暂的错误修复分支,以将错误修复任务与您的master分支隔离,而不是直接在 .

git checkout master
git checkout -b bugfix

在此处输入图像描述

bugfix分支上进行一次(或多次)提交以解决问题后,

在此处输入图像描述

您应该确保一切正常(运行测试等)。当您对代码的状态感到满意时bugfix,将其合并到master

git checkout master
git merge bugfix

在此处输入图像描述

在那个阶段,您可以将您的(现已修复的)master分支推送到远程,并删除该bugfix分支:

git push origin master
git branch -d bugfix

现在,要将最新的更改集成masterdevelop中,您基本上有两种选择。

  1. 通过运行合并masterdevelop中:

    git checkout develop
    git merge master
    

    在此处输入图像描述

  2. 或者,通过运行以下命令develop在 之上重新设置基准:master

    git checkout develop
    git rebase master
    

    在此处输入图像描述

无论哪种情况,您的develop分支现在都将包含修复程序,您可以继续在develop.

于 2014-09-19T12:49:57.487 回答
1

假设您有 master 和 dev 分支。

你为你的新特性在开发上工作,你在 master 上做你的修复。

然后你签出 dev 并将 master 合并到 dev 中。这样,master 是固定的,dev 可以从您所做的修复中获利并保留它自己的历史。

或者,您可以将 dev 重新设置在分支之上。从没有合并点的意义上说,这为您提供了“更清晰”的历史记录。

请参阅有关合并的 git 指南:http: //git-scm.com/docs/git-merge

于 2014-09-19T11:41:36.400 回答