编码方法:在尝试新事物的同时保持好的事物

Coding methodology : keeping the good things while trying new ones

我觉得这个问题很笼统,很抱歉没有具体说明。当我修改一些代码来尝试新的东西时,无论是什么项目或语言,如果全部失败,我可能不得不恢复到以前的 Git 提交。但在做这些不确定的修改(姑且称之为X)的过程中,我也做了一些我想保留的不错的修正或补充(姑且称之为Y)。

有没有一个巧妙的方法来分离 X 和 Y,以便在一天结束时我可以保留 Y 而丢弃 X?

这是我的做法:

  1. 为我的 "uncertain modifications" 创建一个新分支。
  2. 在接下来的过程中,进行可以独立的小提交。
  3. 如果我的提交不够小,无法只保留我需要的更改,我将不得不返回并拆分旧的提交。交互式变基到有问题的提交,重置为 HEAD~,并将更改拆分为相关提交。
  4. Rebase/cherry-pick 提交我想保留到原来的分支。
  5. 压缩那些小的提交以保持历史清洁。

也许这在 0x5453 的回答中是隐含的,但我只是想添加一个精确度,这是我的问题的核心。要进行小型独立提交,一个非常好的功能是交互式 adding/committing。我个人使用git commit --interactive。这使我能够选择一小部分修改来收集一个逻辑上同类的提交。这样,我可以将几个更改组织到不同的提交中,例如 post 并留下未提交的不确定更改(如果我需要 push/pull 可能会隐藏它们)。当我在一个镜头中进行许多不相关的修改时,这会非常方便。

也就是说,经常(交互地)提交足够多以免迷失在大量更改中仍然非常重要。