Git 中是否有沙箱功能,可让您保存存储库的整个状态以安全地运行?

Mag*_*gne 5 git

因此,您现在知道需要在 git 存储库中进行一些清理,可能会使用 rebase 或其他东西,如果您做错了,可能会使撤消变得非常混乱。

有没有办法告诉 Git “保存整个本地 git 存储库的这个状态,以便我可以将所有内容回滚到这一点,以防出现问题?” 类似于“沙箱模式”的东西,它可以让您安全地使用您的存储库,执行潜在的灾难性操作,而没有搞砸任何事情的风险。

我不是在谈论在历史上的特定时间点添加标签或其他东西,而是在谈论可以及时重置在该特定状态的所有分支上的 git repo 中所做的所有更改的东西。回滚所有内容(所有 git 历史/状态)的潜力。类似于 OSX Time Machine 的东西。

2019 年 2 月 19 日更新:我应该澄清一下,“潜在的灾难性操作”,我不是指代码本身,而是实际使用 git 中的 repo 结构,使用例如git reset --hard或类似的命令。

axi*_*iac 6

Git 存储库本身是一个沙箱。

克隆您的存储库并在克隆的存储库中播放。你可以在里面做任何事情,你甚至可以完全摧毁它(移除它)。只要您不这样做git push,原件就不会受到影响。

如果您想重新开始,只需删除克隆并重新创建它。或者运行:

git checkout master
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

checkout命令master在本地存储库上创建当前分支。该reset命令恢复本地当前分支和工作树分支的状态masterorigin远程(假设你开始玩的master分支)。


Seb*_*020 1

我认为您搜索的是git worktree命令:

\n

另请参阅https://git-scm.com/docs/git-worktree

\n
\n

git 存储库可以支持多个工作树,允许您一次签出多个分支。使用 git worktree 添加一个与存储库关联的新工作树。这个新的工作树称为“链接工作树”,而不是 git-init 或 git-clone 准备的“主工作树”。存储库具有一个主工作树(如果它\xe2\x80\x99 不是裸存储库)和零个或多个链接工作树。当您完成链接工作树后,使用 git worktree remove 将其删除。

\n
\n