【发布时间】:2020-04-30 20:50:21
【问题描述】:
我有一个客户做了一堆乱七八糟的事情,我想把它藏起来,这样我就有了一个原始状态,但可以在以后恢复到乱七八糟的状态。我想隐藏然后恢复的东西可能包括:
-
.gitignore范围内的东西 - 新的未跟踪文件
- 新的、已跟踪但未暂存的文件(即
git add -N) - 暂存但未提交的文件。
- 等
- 等
- 等
简而言之,我希望通过使用git clone 创建一个新客户端并在那里完成工作,但都在同一个客户端中获得相同的效果。
编辑:git stash -a 之类的东西无法完成我想要的特定情况:
touch new_file
git add -N new_file
git stash -a
这会导致错误,并使stash 什么都不做。
【问题讨论】:
-
将整个内容复制到其他地方是否可行?如果有帮助,您可以区分目录。
-
git stash在我看来并不是一个很好的工具。git worktree add更好,只要你的 Git 至少是 2.15 版本。制作新的克隆是唯一 100% 完美的解决方案。请注意,您可以克隆您的克隆,以加快速度,然后使用git remote add或git remote set-url添加第二个遥控器或更改与origin遥控器关联的 URL,然后使用git fetch。 -
@Inigo 我确实阅读了文档,只是没有谈论它。我提到的事情清单是我的调查没有找到干净的解决方案或(例如
git add -N)任何解决方案的事情清单。 - 而且,不,它不是开放式的,如果 git 没有专门针对此的功能,而不是我正在寻找的那个缺乏的精确陈述,我只会克隆另一个客户端而不是做任何其他类型复杂的hacky解决方法, -
@torek,我已经在使用带有备用遥控器的额外客户端。我没有发现它们是理想解决方案的原因是:1)它们固有地添加了其他要管理的东西(我
git pull'ed 我的所有分支机构 /everywhere/?),2)它们管理起来更复杂(做你知道 off hand 如何通过远程 git-stash/pop 吗?) 3)它强制文件位于不同的 OS 路径,(这有一些优势,但也可以增加上下文转换成本)。 --git worktree我想会解决其中的一些问题,但仍然会增加从根本上需要的微不足道的操作的复杂性。 -
@Inigo
touch new_file ; git add -N new_file ; git stash push -a-> 错误