以下情况已经发生过几次,我正在寻找一种自动方法来在我重复错误之前阻止自己。说“记住”或“不要这样做”的解决方案不会被标记为正确。
经常,我会在 git 分支上工作,有一些未提交的代码,并且很快需要对另一个分支进行更改。我使用
git stash
存储未提交的代码,git checkout
交换到另一个分支,我进行并提交更改,然后我 git checkout
到另一个分支。并且希望,我记得git stash pop
。问题是我并不总是记得,特别是如果我最终不得不在另一个分支上进行一些更改,而这最终需要几个小时/几天的时间。
是否有一个 git hook 我可以写,当我签出一个有存储的分支时,会向我发送一条小消息?比如:
$ git checkout foo
Switched to branch 'foo'
You have 1 stash on this branch, use `git stash pop` to unstash it.
它不一定很花哨,但我认为它会帮我省去很多头痛。像“只要记住运行
git stash list
”之类的答案将不会被接受。
建议的解决方案:临时提交。
作为示例,让我们以您的典型场景为例:
很多时候,我会在 git 分支上工作,有一些未提交的代码,并且很快需要对另一个分支进行更改。
这确实是一个很常见的情况。但随后你就会:
我使用 git stash 来存储未提交的代码,使用 git checkout 交换到另一个分支,我进行并提交我的更改,然后我使用 git checkout 到另一个分支。
此时我们要改变路线。仅对您想要删除的片段使用存储,但可能需要稍后检查,以防事后想起。
对于有效但未完成的代码,不要隐藏,而是提交。为此使用几个快速别名:
git config alias.wip 'commit -am "WIP - DO NOT MERGE"'
git config alias.unwip 'reset HEAD~'
您必须急着换分行吗?
git wip
并在其他地方结账。当您更改回分支时,使用 git unwip
撤消临时提交并继续工作。
您很快就会习惯它,并且储藏室将保留(它应该被命名为)纸箱。 (与 Windows 一样,它不会立即删除内容,而是让您检查并恢复最近删除的文件,如果需要的话,偶尔检查和恢复)