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

时间:2017-06-21 15:14:34

标签: git git-stash

我应该何时使用git stash save代替git stash push,反之亦然?

2 个答案:

答案 0 :(得分:30)

git stash save接受一个非选项参数 - 隐藏消息。

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

答案 1 :(得分:27)

为了清楚起见,启动Git 2.15.x / 2.16(2018年第一季度),将不会有任何git stash save,因为它将被弃用,而不是“git stash push”。 / p>

commit c0c0c82点击commit fd2ebf1commit db37745Thomas Gummerer (tgummerer)(2017年10月22日)。{ Junio C Hamano -- gitster --合并于commit 40f1293,2017年11月6日)

  

stash:在手册页

中弃用了“git stash save”      

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

     

stash:现在删除“stash push

的superfluos帮助      

使用“git stash save”界面,用户可以轻松实现   尝试添加以“-”开头的邮件,其中“git stash save”   将解释为命令行参数,并失败   对于这种情况,我们在如何使用以“-”开头的消息创建存储时添加了一些额外的帮助。

     

对于“stash push”,消息以-m标记传递,避免了这种潜在的陷阱。
  现在,只有使用“-”才能将以“-- --<pathspec>”开头的pathspec与命令行参数区分开来。
  这在git命令行界面中相当常见,我们不会在其他情况下猜测用户想要的内容。

     

因为这种传递pathspecs的方式在其他git命令中非常常见,我们在那里没有提供任何额外的帮助,所以在“git stash push”的错误消息中也这样做。

使用Git 2.18(2018年第二季度),已经教导命令行完成(在contrib/中)已弃用“git stash save”(“git stash push”是首选拼写新世界)并不提供它 完成候选人“git stash push”可以。

commit df70b19commit 0eb5a4fThomas Gummerer (tgummerer)(2018年4月19日) (由Junio C Hamano -- gitster --合并于commit 79d92b1,2018年5月8日)

  

completion:为stash -p

制作stash push -p和别名      

我们将“git stash -p”定义为“git stash push -p”的别名   手册页。在完成脚本中执行相同操作,因此所有选项都可以   当用户是“git stash push”时,可以给予“git stash -p --<tab>”   使用“--message”   目前,用户将获得的唯一附加选项是“1. FROM clause (JOIN is lumped in here) 2. WHERE clause 3. SELECT clause 4. GROUP BY clause 5. HAVING clause 6. ORDER BY clause ”,但将来可能会有更多选项。