在不提交工作代码的情况下切换分支

12

我正在使用 git 作为源代码存储库,当前代码处于混乱状态,我想切换到其他分支进行一些工作。问题是,我不想只为了半成品的工作而进行提交,那么我如何才能稍后回到这个点呢?


这个回答解决了你的问题吗?当当前分支有未提交的更改时,切换到另一个分支 - Hritik
6个回答

15

您可以使用git stash暂时“丢弃”更改,然后在需要恢复之前的更改时使用git stash pop*。

您还可以(并且更安全地)提交您的WIP(正在进行的工作),切换到另一个分支,完成您的工作,再切换回原始分支,完成原始工作,然后将您的提交压缩成只有一个提交。
请记住,提交并不等同于推送,因此您可以在本地拥有混乱的历史记录,但是一旦重新设置并压缩,您(和您的团队)将只看到干净的版本。

*请注意,如果您多次stash,则git pop仅会弹出最后一个stash。在这种情况下,您需要使用git pop stash@{<revision>}


3

3
对我来说,链接似乎已失效。这是另一个有关"暂存"的有趣链接:https://www.atlassian.com/git/tutorials/git-stash - Lucas Delobelle

3
如果你使用的是较新版本的git(>=ver.2.5.0),你可以使用git worktree。通过以下命令,你可以检出一个临时工作目录进行使用。 git worktree add sourcetree_dir branch_name 完成这个分支上的工作后,你可以使用下面的命令来删除它。
git worktree prune

2

使用命令行,简短回答:

git stash
git checkout otherBranch

如果分支在起点使用:

git checkout origin otherBranch

..
do your changes/commits
..
git stash apply

使用git stash apply命令可以恢复之前的更改。您可能会遇到合并冲突...解决它们并重新提交。

1

1
请提供一些代码。链接应该只是答案的补充。 - Adrian Krupa
链接对我来说似乎已经失效了。另一个有关隐藏的有趣链接:https://www.atlassian.com/git/tutorials/git-stash - Lucas Delobelle

0

你不能只是创建另一个目录并将所需的分支克隆到其中吗?

如果你已经配置了运行时使用特定目录,那么将其链接到你当前正在使用的分支克隆目录。这样,你可以在本地拥有多个分支,而不需要重新整理本地资源(只需要一个简单的脚本来重新链接运行时/服务器使用的目录)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接