我应该何时使用git stash save
代替git stash push
,反之亦然?
答案 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 fd2ebf1,commit db37745,Thomas 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
”。的superfluos帮助
stash
:现在删除“stash push
”使用“
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 df70b19见commit 0eb5a4f,Thomas 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
”,但将来可能会有更多选项。