Git 我可以在不进行提交的情况下切换分支吗?

Git 我可以在不进行提交的情况下切换分支吗?,git,Git,好吧,假设我有两个分支 1) 新分支 2) 主人 我对新分支做了一些更改,但尚未提交,我现在想切换到master,但我的工作区不干净,因为自从上次提交新分支以来,我做了一些更改。 我不想做出承诺,也不想将这些更改带到主分支,我只想快速查看主分支,然后回到我在新分支中留下的位置,有可能吗?如果是,怎么做?您需要使用 git stash 隐藏将获取工作目录的脏状态–即, 您修改的跟踪文件和阶段性更改–并将其保存在 可以随时重新应用的未完成更改的堆栈 以示例查看官方文档: 通用工作流: git c

好吧,假设我有两个分支

1) 新分支

2) 主人

我对新分支做了一些更改,但尚未提交,我现在想切换到master,但我的工作区不干净,因为自从上次提交新分支以来,我做了一些更改。 我不想做出承诺,也不想将这些更改带到主分支,我只想快速查看主分支,然后回到我在新分支中留下的位置,有可能吗?如果是,怎么做?

您需要使用

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
    run
    gitcommit-a-mtmp
  • 返回
    master
    run
    git 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的