git stash save和git stash push之间有什么区别?

Dav*_*son 55 git git-stash

什么时候应该使用git stash save而不是git stash push反之亦然?

phd*_*phd 47

git stash save 接受一个非选项参数 - 存储消息.

git stash push接受带有选项的消息-m并接受存储为参数的文件列表.

  • @ void.pointer是的,它在2.16中最终[声明已弃用](https://github.com/git/git/blob/2512f15446149235156528dafbe75930c712b29e/Documentation/RelNotes/2.16.0.txt#L34). (5认同)
  • 可以公平地说,"save"是为了向后兼容而留下的,但最终会被`push`取代? (4认同)
  • 看起来版本2.13.1就是它的介绍时间.https://git-scm.com/docs/git-stash/2.13.0 (3认同)
  • @void.pointer 是的。Git 项目中的每次提交 [db37745](https://github.com/git/git/commit/db37745eef62c57e1609cbd50c6dbf9a8066f191):“虽然我们暂时仍保留‘git stash save’,但最好指向新用户'git stash' 到更现代(且功能更丰富)的界面,而不是教他们我们将来可能想要逐步淘汰的旧版本。” (2认同)

Von*_*onC 34

为了清楚起见,启动Git 2.15.x/2.16(2018年第一季度),将不会有任何git stash save,因为它将被弃用以支持" git stash push".

请参阅提交c0c0c82,提交fd2ebf1,提交db37745(2017年10月22日)作者:Thomas Gummerer(git stash save).
(由Junio C tgummererHamano合并- -提交40f1293,2017年11月6日)

gitster:标记" stash"在手册页中已弃用

' git stash save'修复' '界面中的历史疣git stash push.
由于' git stash save'具有' '的所有功能git stash push,因此使用更好,更一致的用户界面' git stash save'.

git stash save:现在删除superfluos帮助" stash"

使用' stash push'接口,用户很容易尝试添加一个以" git stash save" 开头的消息,这-将被解释为命令行参数,并且失败.
对于这种情况,我们添加了一些关于如何使用以" git stash save" 开头的消息创建存储的额外帮助.

对于' -',消息与stash push标志一起传递,避免了这个潜在的陷阱.
现在,只有使用" -m" 才能将以" " 开头的pathspec与命令行参数区分开来-.
这在git命令行界面中相当常见,我们不会在其他情况下猜测用户想要什么.

因为这种传递pathspecs的方式在其他git命令中很常见,我们不提供任何额外的帮助,在' -- --<pathspec>' 的错误消息中也这样做.


使用Git 2.18(2018年第二季度),命令行完成(in git stash push)已被教导" contrib/"已被弃用(" git stash save"是新世界中的首选拼写),并且在" git stash push"可以时不提供它作为可能的完成候选者是.

请参阅提交df70b19,提交0eb5a4f(2018年4月19日)作者:Thomas Gummerer(git stash push).
(由Junio C tgummererHamano合并- -提交79d92b1,2018年5月8日)

gitster:make completion和别名stash -p

我们在联机帮助页中将' stash push -p' 定义为' '的别名git stash -p.在完成脚本中执行相同操作,因此git stash push -p当用户使用' git stash push' 时,可以为' ' 提供所有选项.
目前,用户将获得的唯一附加选项是' git stash -p --<tab>',但将来可能会有更多.