0

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

  • 考虑一个最小的新功能/重构
  • 编码
  • 用 HEAD 查看 diff
  • 犯罪

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

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

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

在这一点上,我意识到最好先执行重构。承认吧,在代码修改的过程中,有时重构的需要变得很明显。

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

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

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

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

4

3 回答 3

2

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

另请参阅 'git add --patch' 和 git add '--interactive'

于 2009-07-26T11:32:28.150 回答
2

当你开始一个新特性时,创建一个新分支,然后在那里工作。当你认为你需要重构你不处理的代码时,切换回 master(或另一个专用分支)并执行它。完成后,将重构分支合并回 master。然后在更新后的 master 之上重新设置您的功能分支。

于 2009-07-26T11:33:59.503 回答
0

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

于 2009-07-26T11:32:47.883 回答