如何从已保存在未跟踪状态的存储中获取文件?

时间:2018-03-09 15:23:56

标签: git

考虑以下工作流程:我在对类进行更改之后为类创建了新的(未跟踪)测试,这使得测试成为必要,然后意识到我需要更改另一组测试的逻辑,我认为这些测试会有所不同提交,所以我运行了git stash save -u。然后,我意识到我需要进行藏匿测试。如何让它们尽可能简单?

我的方法是git stash branch并检查未跟踪的测试文​​件(如How to get just one file from another branch中所述),但仅在应用存储时不发生冲突时才有效(警告:git stash branch无论如何都会弹出存储并弄乱你的工作目录,尽管失败时会出现详细的错误信息,这就是去这里的方法。)

我只想要藏匿的未跟踪文件,而不是其余文件。

我在Ubuntu 17.10上使用git 2.14.1。

1 个答案:

答案 0 :(得分:1)

以下是我根据评论解决这个问题的方法。

git checkout -b <clean branch, before changes>
git stash apply

在这里,您已经跟踪过&amp;未跟踪的文件。然后您可以使用:

git reset HEAD <tracked files>
git checkout <clean branch> -- <"tracked files">

这应该将它们重置为干净的分支状态。然后你只需要:

git add <untracked files>
git commit -m "Tests"
git checkout <old, dirty branch>

继续进行更改,直到准备好提交。

git commit -m "More Tests"
git merge <clean branch, before changes>

这里可能有一些错误,但我希望你能理解我想说的话。在这一点上,你可能会遇到冲突,但是你可以处理冲突。

编辑:当然,根据您拥有的更改次数,合并和处理冲突可能不是最佳/最快的方式。如果它像一个文件已更改,我会执行相同的流程,但在删除跟踪的文件后,我只会将<old, dirty branch>中的更改引入{ {1}}。