我已经看过了: Temporarily switch working copy to a specific Git commit Is it possible to switch between GIT commits? Git switching between commits 但是,我想找出一个特定主题:
我目前不在团队中工作,
我使用Git在本地保存我的项目历史(没有GitHub或Bitbucket)并且只有主分支,
我不会在我的工作目录外推送我的提交.git直到项目结束。 我的问题很简单:
我怎样才能安全地返回我之前的一个提交(有点时间机器),而不是想要打破现有的树索引?
在此实验期间,如何确保在此特定提交后添加的文件不会出现在工作目录中?
我怎样才能安全地返回到树的HEAD并再次 - 确保在过去的那段特定提交之后删除的文件(很久以前,不是这次)将不会出现在工作目录中?
我问这个问题的原因很简单:我现在正在学习,因此希望不时地回来看看(只读) - 过去发生的事情(比如一个月前)。
谢谢。
答案 0 :(得分:3)
我认为这可以满足您的需求。
git stash --include-untracked
git checkout <commit>
git checkout master
git stash pop --index
对于完全干净的工作树,您可以将--include-untracked
替换为--all
以隐藏被忽略的文件。
答案 1 :(得分:0)
一个简单的解决方案是:
那样:
git checkout anOldCommitSHA1
进行git stash
您可以保留在主仓库中并检查您想要的任何旧提交,但是:
git clean -d -f -x
之后(再次结帐时),清除使用旧提交工作树时可能生成的任何本地文件。