Git 我可以在不进行提交的情况下切换分支吗?
好吧,假设我有两个分支 1) 新分支 2) 主人 我对新分支做了一些更改,但尚未提交,我现在想切换到master,但我的工作区不干净,因为自从上次提交新分支以来,我做了一些更改。 我不想做出承诺,也不想将这些更改带到主分支,我只想快速查看主分支,然后回到我在新分支中留下的位置,有可能吗?如果是,怎么做?您需要使用Git 我可以在不进行提交的情况下切换分支吗?,git,Git,好吧,假设我有两个分支 1) 新分支 2) 主人 我对新分支做了一些更改,但尚未提交,我现在想切换到master,但我的工作区不干净,因为自从上次提交新分支以来,我做了一些更改。 我不想做出承诺,也不想将这些更改带到主分支,我只想快速查看主分支,然后回到我在新分支中留下的位置,有可能吗?如果是,怎么做?您需要使用 git stash 隐藏将获取工作目录的脏状态–即, 您修改的跟踪文件和阶段性更改–并将其保存在 可以随时重新应用的未完成更改的堆栈 以示例查看官方文档: 通用工作流: git c
git stash
隐藏将获取工作目录的脏状态–即,
您修改的跟踪文件和阶段性更改–并将其保存在
可以随时重新应用的未完成更改的堆栈
以示例查看官方文档:通用工作流:
git checkout master
... do some work ...
git stash <- save all the uncommitted works
git checkout new-branch
... do some work on new-branch ...
git commit <- commit on new-branch
git checkout master
git stash pop <- reapply all the changes you previously have on master
git签出主机
... 做一些工作。。。
git stash要临时保存更改,请使用
git stash
要在切换回使用后再次检索它们
git stash pop
您也可以应用更改,但将更改保留在您的存储中,如下所示:
git stash apply
使用此命令,您可以在多个分支上应用更改
来源:这里有一个可能的工作流程(YMMV)
您在新分支
,进行了一些更改,但希望快速返回到主分支
运行git stash
运行git签出主机
在master
回到新分支
;运行git签出新分支
重新应用您的更改;运行git stash pop
<>代码> Git Stase是绝对要考虑的事情,你不应该担心如果你需要的话,你可以把垃圾扔掉:
在newbranch
rungitcommit-a-mtmp
返回master
rungit checkout master
在主人身上做事情然后回去;运行git签出新分支
要么继续修改临时承诺;运行git提交-a--amend
或重置到倒数第二位;运行git重置磁头^
我建议考虑使用git worktree add
,至少在git版本至少为2.15的情况下。为此,您可以从工作树的顶层运行以下命令:
git worktree add ../project.master master
这将在。/project.master
中创建一个完整的独立工作树。然后,您可以随时在这个单独的工作树中查看您的master
分支。你甚至可以在master
中工作,如果这是你通常会做的事情(尽管许多团体和组织建议根本不要这样做)
我想这里确实有两三个问题。特别是,我认为您已经进入了一个新的领域:您目前在您的新分支
工作,但您希望查看您的主分支
中看到的文件。于是你想:我知道如何查看文件,并从那开始,我如何在不进行提交的情况下保存所有内容?我问了你问的问题,而不是原来的实际问题:如果我签出了其他分支,如master
,我如何查看我将拥有的文件
git stash
答案是对您实际提出的问题的某种回答。查看和/或的任何答案。也就是说,您可以运行git stash
,它将您尚未保存的工作保存在某个位置,然后删除您尚未保存的工作(实际上现在已保存),并允许您切换分支
从技术上讲,git stash
所做的只是进行一些没有“在”任何分支上的提交(通常是两次;如果要求第三次提交,有时是三次)。所以,虽然这是对您所问问题的某种回答,但也有点不是,因为您问我可以在不进行提交的情况下切换分支吗?并且git stash
进行提交
有时,即使有未保存的更改,也可以在不进行提交的情况下切换分支。也就是说,git-switch-master
或git-checkout-master
实际上可以正常工作。这里的缺点是,它带来了未提交的工作以及分支中的更改。Git新手也不清楚Git为什么会这样做。最终(更多)了解这一点;先别看了
但是你不需要真正地交换分支。您确实想查看master
顶端快照中的文件。要获取这类文件的整个集合,可以使用git-worktree
。git 2.5中首次引入的git worktree
子命令允许您同时拥有多个不同的git签出
-s,只要每个都位于文件系统中不同的分支和不同的工作树(目录/文件夹使用您喜欢的术语)
如果您只想从<代码>主< /代码>查看一个文件,请考虑使用:
git show master:path/to/file.ext
它将只显示该文件的内容,如分支master
的提示commit中所示。如果您需要在一个奇特的查看器中同时查看许多文件,您只需要一个完整的签出,如在git worktree add
中。使用git stash
@customcommander您能解释一下如何使用它吗?git stash不会将这些更改带到master,对吗?@apitsch已经链接到一篇关于如何使用git stash的文章。非常好的帖子,谢谢!我不知道git worktree的