我正在开展一个项目,我即将做一些实验性的事情。
但我还没准备好提交。
是否可以制作一个我可以恢复的检查点?在这种情况下,Git stash似乎不合适,因为我想在同一个分支上工作。
答案 0 :(得分:8)
为什么你想在同一个分支上工作?建立一个新的分支,比如git checkout -b experimental/ni_shrubbery
,提交它,然后将其合并回来或者不要。无论您正在开发什么,您都可以随时返回master
或develop
或feature/shrubbery
。对于此方案,分支存在完全。只是不要推出那个分支,你所有的工作都是本地的,直到你合并到你推出的分支。
答案 1 :(得分:3)
本地提交正是您想要的:您可以恢复的检查点。在公开推送本地提交之前,可以修改/压缩/删除本地提交,这样您就不需要准备好进行提交了。您必须准备好进行推送(例如,在推送之前将所有本地提交压缩为1次提交)。 您可以在ProGit book中阅读有关本地提交修改的更多信息(我链接到重写历史章节,但建议您阅读所有章节)
答案 2 :(得分:0)
提交。您可以随时回滚,或在您开心时组合提交。 只要你不把它推到你的远程存储库,没有人会看到它。
我的git座右铭是"提前提交并经常提交 - 在推送之前清理它"。
另一种选择是创建分支。然后,所有实验提交将与主提交分开。一旦你完成了实验,你就可以将它们合并或重新组合。
答案 3 :(得分:0)
提交。给它一个像“临时提交”之类的消息。然后切开一个分支并从那里开始工作。如果您想避免最新的更改(即您刚刚提交的更改),请从HEAD^
剪切一个分支并从那里开始工作。
如果您对实验后的状况感到满意,可以将master
(或您所在的任何分支)移动到当前HEAD
,从而删除临时提交。如果您想要临时提交,请返回master
,重置为HEAD^
,重做,提交,然后将您的实验分支合并到master
。
如果您不喜欢实验性工作,只需删除该分支,返回主分区并重置为HEAD^
。
提交非常轻,以这种方式使用它们是完美的。
答案 4 :(得分:0)
提交更改(无论是否进行临时的实验分支)的主要缺点是,您无法跟踪总体工作范围,即直到检查点为止执行的合并更改。
在IDE中,我个人使用IntelliJ IDEA,可以在装订线(滚动条附近)中看到颜色块,这些颜色块指示已编辑或添加了哪些行。 已删除代码块由一个可单击的三角形指示,通过单击它,我可以轻松看到那些已删除的行。
所有这些精巧的IDE东西仅在您提交更改之前有效。
因此,我想建议的是上述答案的组合-即经常提交,有可能在将更改推送/发布到远程设备之前编辑/重写您的提交历史记录。 也,在确认后执行 soft 重置。 git reset --soft HEAD^
这样,您将(1)在git repo中进行提交,如果需要,可以回滚到该提交。 (如果以后需要将其还原,请使用git reflog
来获取提交的哈希值。)您还(2)将所有更改保持为未提交状态,以便您的IDE可以向您显示视觉效果。变化的指标。
如果您要迅速放弃非常糟糕的更改,请将硬重置回最近的良好检查点,然后将软重置重置为开始进行大更改的点。 / p>