使用 git 时如何在我的本地计算机上同时在两个分支上工作?

How to work on two branches simultaneously in my local machine when using git?

我认为在 git 中可以创建这样一棵树:

         ----b1
        /
---master
        \
         ----b2

首先,我使用 git checkout -b b1 创建了一个分支 b1。然后在那里做了一些改变。他们没有承诺。然后我使用 git checkout master 切换到 master 分支。从哪里开始,我想我会创建分支 b2 并在那里工作。但是检查 master 带来了 b1 中所有未提交的更改。如何避免这种情况?

答案很简单,如评论中所述:您必须提交。

Can't I do it without committing? Something such that it holds its state, and in future when I checkout back again, it restores its state.

这种东西——保存状态并在以后恢复它的东西——叫做提交。

可以使用git stash ...但它通过提交.

来工作

您可以使用 git worktree,这可能是您特定所需工作流程的正确答案。 git worktree 提供的机制是向一些现有的 Git 存储库添加一个额外的工作树。这个额外的工作树不会影响任何 现有的 工作树,但是对每个添加的工作树都有一个严格的限制:它必须在自己的分支上,或者使用 Git' s 分离头模式。这个限制是你自己的启动要求满足的,所以这不是问题,但值得一提。

每个添加的工作树都有自己的状态。但是,工作树不是 inGit,以后不能从另一个克隆中提取。只有 提交 在 Git 中。所以最终你必须提交:添加的工作树只允许你推迟 运行 git commit.

作为 ,您可以“重置”提交以摆脱它。 Git 实际上并没有立即 丢弃 提交:Git 有一种机制可以恢复意外删除的提交,与许多网站上的“废纸篓”图标有些相似台式机。但它最终会消失,而且因为提交通常很便宜(就磁盘而言 space),你可以忽略它并让 Git 稍后自行清理它。