Git:如何在不提交更改的情况下 checkout 以前的提交?

ymdaylpp  于 2023-04-10  发布在  Git
关注(0)|答案(2)|浏览(162)

我想 checkout 以前的提交,但我已经做了更改,所以它提示我先提交或隐藏更改。在我想提交它们的时候,我还没有更改。这是git stash的工作吗?它会保存我的更改,这样如果我 checkout 以前的提交,然后返回HEAD,完成我的更改,然后提交,我在stashing之前和之后的所有更改都将包含在该提交中?

xxb16uws

xxb16uws1#

是的,这正是git stash的作用。它将保存您的更改,您可以稍后使用git stash pop恢复它们。(这是简单的用法。git stash pop将获得您保存的最后一项内容。)
假设您正在处理main

git stash             # Saves and removes your changes
git checkout HEAD^    # Checkout previous commit
# Play around here.
git checkout main     # Go back to the branch you were using.
git stash pop         # Restore your work.
snz8szmq

snz8szmq2#

我还没有在我想要提交它们的地方进行更改。
是的!你确实想创建一个commit,只是这个commit不会是最终的形式,所以它需要在以后修改,这很好-这基本上是使用git的核心功能!

  • 如果你认为提交和分支是不可变的对象,那么你就错过了Git的绝大多数好处。

虽然git stash存在,但你比never using it好得多,而是创建普通的temporary commits(使用命名约定使它们可见为such 1)。
1并且它不仅必须是====前/后固定,如建议的,我有一个commitci别名,通常运行git ci -am ci来完成git stash所能完成的任务,但没有创建真实的提交的好处。很明显,在任何final分支上都不是有效的提交消息,它不会冒被留在最后一个分支上的风险。

相关问题