预览存储将对当前 HEAD 进行的更改而不应用
Preview changes stash will make to current HEAD without applying
正如这个 question 的答案所示,您可以通过以下方式查看存储的变化:
git stash show -p stash@{N}
但是,这是将存储与其原始父级进行比较,并没有表明在应用存储后您将剩下什么(例如,存储可能已经被合并或者可能存在冲突)。
是否有一种简单的方法可以在不应用存储和执行差异的情况下预览这些更改(因为这会离开您当前的工作状态 'dirty')?
预览应用存储结果的快速方法是创建主题分支:
git checkout -b teststash
应用存储后,"accept" 或 "deny" 更改将变得微不足道。
要"deny"更改,只需删除更改并返回到您之前的分支:
git checkout . # or re-stash if you still want that patch
git checkout - # switch back to previous branch
至"accept" 更改只需提交,切换回您之前的分支,并合并到您的临时分支。这将是一个快进合并,所以你的历史不会表明你有预览分支(你以后可能不会关心):
git add path/to/file.txt
git commit -m "re-apply fix foo"
git checkout -
git merge -
或者,如果您想 "accept" 更改但不想在此时提交,只需切换回原始分支并继续工作:
git checkout -
所以,总而言之,没有内置的 "preview after I apply" Git 命令,但是 Git 的轻量级分支使这成为一个非常简单的操作。
正如这个 question 的答案所示,您可以通过以下方式查看存储的变化:
git stash show -p stash@{N}
但是,这是将存储与其原始父级进行比较,并没有表明在应用存储后您将剩下什么(例如,存储可能已经被合并或者可能存在冲突)。
是否有一种简单的方法可以在不应用存储和执行差异的情况下预览这些更改(因为这会离开您当前的工作状态 'dirty')?
预览应用存储结果的快速方法是创建主题分支:
git checkout -b teststash
应用存储后,"accept" 或 "deny" 更改将变得微不足道。
要"deny"更改,只需删除更改并返回到您之前的分支:
git checkout . # or re-stash if you still want that patch
git checkout - # switch back to previous branch
至"accept" 更改只需提交,切换回您之前的分支,并合并到您的临时分支。这将是一个快进合并,所以你的历史不会表明你有预览分支(你以后可能不会关心):
git add path/to/file.txt
git commit -m "re-apply fix foo"
git checkout -
git merge -
或者,如果您想 "accept" 更改但不想在此时提交,只需切换回原始分支并继续工作:
git checkout -
所以,总而言之,没有内置的 "preview after I apply" Git 命令,但是 Git 的轻量级分支使这成为一个非常简单的操作。