将重构与Git中的新功能混合在一起的最佳工作流程是什么?

时间:2009-07-26 11:07:08

标签: git git-workflow

我一直在使用Git作为源代码管理工具。 目前我的工作流程很简单:

  • 考虑一个最小的新功能/重构
  • 代码
  • 使用HEAD审核差异
  • 提交

我希望通过提高其灵活性来改进此工作流程。原因是我几次遇到以下情况,我认为这是一个典型的情况:

提交后,我开始修改工作目录以添加新功能。

我编码了一段时间,让工作目录的状态在此刻为A.这里重要的是状态A工作目录尚未准备好提交,因为新功能尚未完成。

此时我意识到首先执行重构会更好。承认这一点,有时在代码修改过程中需要进行重构。

现在我需要从HEAD重新开始并首先进行重构。但我不想失去代码HEAD的修改 - >状态A.所以基本上我需要:

  • 在最后一次提交后尚未更改的工作目录副本中进行重构
  • 提交
  • 合并我已经启动的新功能的工作,并在工作目录处于状态A时停止它
  • 完成新功能的工作
  • 提交

我相信这是分支可以帮助我的地方,但是我在解决正确的git命令时遇到了问题。我很困惑的事实是,在提交后更改工作目录时我需要创建一个分支,而我不知道正确的方法可以解决这个问题。

根据Git命令描述上述工作流程的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

你想要git stash。当您的工作目录处于您尚未准备提交的中间状态时,请运行'git stash'或'git stash save“some text”'。这会将您的工作目录恢复为HEAD。现在进行更改并提交。然后运行'git stash pop',您之前的中间工作将合并到工作目录中。你可以有多个藏匿处;列出他们gith'git stash list'。 ('some text'将标识它们。如果不提供任何消息,则使用最后一个提交日志。)

另见'git add --patch'和git add'--interactive'

答案 1 :(得分:2)

当您启动新功能时,请创建一个新分支,然后在那里工作。当您认为需要重构您未使用的代码时,请切换回master(或其他专用分支)并执行此操作。完成后,将重构分支合并回master。然后在更新的主数据库之上重新设置功能分支。

答案 2 :(得分:0)

我相信,git stash是你正在寻找的东西。