git - 如何存储工作树的完整状态,包括忽略、未跟踪、暂存和/或未暂存文件?
问题描述
我有一个客户做了一堆乱七八糟的事情,我想把它藏起来,这样我就有了一个原始状态,但可以在以后恢复到乱七八糟的状态。我想隐藏然后恢复的东西可能包括:
- 范围内的事情
.gitignore
- 新的未跟踪文件
- 新的、已跟踪但未暂存的文件(即
git add -N
) - 暂存但未提交的文件。
- 等等
- 等等
- 等等
简而言之,我希望通过git clone
创建一个新客户端并在那里完成工作获得相同的效果,但都在同一个客户端中。
编辑:一个特定的情况,比如git stash -a
无法完成我想要的事情:
touch new_file
git add -N new_file
git stash -a
这会导致错误并且stash
什么都不做。
解决方案
可以使用git stash -a
. 这是可用的最完整的选项git stash
。
如果您需要更复杂的东西或需要其他功能,例如保留可执行位以外的权限,那么您将不得不求助于将文件复制到另一个目录或使用tar
.
您还可以使用git branch
创建另一个具有相同历史记录的分支并使用git worktree
在其他地方检查它,然后将文件复制过来。
推荐阅读
- php - PHP删除匹配字符后替换3个字符
- android - 如何在 Oreo 中控制 WindowManager 覆盖优先级?
- firebase - Cloud Functions for Firebase 中的套接字挂起错误
- javascript - 如何使用本机 javascript 从窗口中删除特定事件侦听器
- jsf - 尝试从 icefaces 迁移到 primefaces 时出错
- javascript - 如何在单独的 javascript 文件中引用传递给局部视图的参数?
- python - 搜索和替换引用列表
- javascript - 未捕获的 RangeError:无效的字符串长度
- vba - 引用 html 元素
- javascript - 防止表单提交在没有 jQuery preventDefault 的情况下刷新页面?