当使用git时,如何在本地机器上同时工作两个分支?



我认为在git中创建这样的树是可能的:

----b1
/
---master

----b2

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

答案很简单,正如在注释中已经指出的那样:您必须提交。

我不能不提交吗?它可以保持它的状态,并且在将来我再次签出时,它可以恢复它的状态。

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

可以使用git stash…但是它的工作原理是让提交

您可以使用git worktree,它可能是您特定所需工作流的正确答案。git worktree提供的机制是向一些现有的Git存储库添加一个额外的工作树。这个额外的工作树不会影响任何现有的工作树,但是对每个添加的工作树有一个很强的约束:它必须在自己的分支上,或者使用Git的detched - head模式。此约束由您自己的起始需求满足,因此它不是问题,但值得提及。

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

正如Romain Valeri在评论中指出的那样,你可以"重置"。一种摆脱它的承诺。Git实际上不会立即丢弃提交:Git有一个机制来恢复意外删除的提交,有点类似于"废弃篮";许多桌面的图标。但它最终会消失,因为提交通常相当便宜(就磁盘空间而言),你可以忽略它,让Git稍后自己清理它。

最新更新