Git 为什么我必须在切换分支之前隐藏/提交更改?

Git 为什么我必须在切换分支之前隐藏/提交更改?,git,Git,我觉得这很烦人,因为我想快速切换分支并做一些事情,然后切换回以前的工作。我意识到我可以先藏起来,然后再取回藏起来的东西,但我每次都必须键入这些行:/ 有没有办法避免这样做 我还发现这很烦人,因为我保留了大约5或10个功能分支,很难管理哪些分支有需要检索的隐藏,哪些分支可以继续工作。您可以使用git stash来隐藏更改。然后您可以更改分支,然后恢复分支并恢复更改: $ git stash $ git checkout other_branch $ git checkout original_br

我觉得这很烦人,因为我想快速切换分支并做一些事情,然后切换回以前的工作。我意识到我可以先藏起来,然后再取回藏起来的东西,但我每次都必须键入这些行:/

有没有办法避免这样做


我还发现这很烦人,因为我保留了大约5或10个功能分支,很难管理哪些分支有需要检索的隐藏,哪些分支可以继续工作。

您可以使用git stash来隐藏更改。然后您可以更改分支,然后恢复分支并恢复更改:

$ git stash
$ git checkout other_branch
$ git checkout original_branch
$ git stash pop

您可以使用
git checkout
--merge
-m
)选项。
使用它会导致在切换分支时进行三向合并。如果发生合并冲突,您可能需要解决这些冲突

至于发生这种情况的原因,手册中指出

切换分支时,如果对一个或多个分支进行了本地修改 当前分支和当前分支之间不同的更多文件 要切换到的分支,命令拒绝切换 分支,以便在上下文中保留修改


有关更多详细信息,请参见。这实际上是您的一个问题的解决方案,但您可以在每个存储中添加一条消息,以了解哪个存储属于哪个分支。这样做,你将很容易知道哪些分支有藏匿处,哪些没有

要执行此操作,请使用以下命令:

git stash save -u branch1

其中“branch1”是您为藏品提供的消息或名称

使之更容易的一种方法是使用以下内容。我喜欢Legit中的一个命令是
git-switch

$git开关
#切换到分支。隐藏和恢复未老化的更改。

Legit使用遵循特定命名约定的描述来存储存储。这样,当您使用
git switch
返回到第一个分支时,它可以自动取消为该分支保存的更改。

我发现自己每天都处于相同的场景中:

我保留了大约5到10个功能分支,很难管理哪些分支有需要检索的存储,哪些分支可以继续工作

对我来说,最有效的解决方案也是最简单的(并在问题标题中提到):

提交正在进行的更改

我总是用大写字母写我真正的提交(如下),我所有正在进行的提交都以小写字母开头,所以在我推之前,它们会立即显示为需要一个交互式的回退。因此,如果我需要切换分支以帮助某人完成某些事情,我只需提交所有更改并使用提交消息,如:

在制品:新CoolFeature API的草稿

顺便说一句,如果我也出去喝咖啡,即使我不打算换分行,我也可能做出同样的承诺。在正常的一天中,我会向自己承诺并写下如下信息:

s into abcd123: First few words of that commit
f into bcde234: First few words of that commit
wip: rough draft of this thing
下次我
rebase-I
我会按照自己的指示去做(s=squash,f=fixup)

需要读者思考的问题:

  • 为什么我给自己的笔记有时会有“s”,有时会有“f”
  • 为什么“s”和“f”除了提交ID之外还包括“该提交的前几个单词”
  • 答案:

    一,。如果我使用“s”,这意味着我不仅要挤压提交消息,还要根据我添加到提交中的更改修改提交消息。fixup的“f”表示提交消息已足够

    二,。我会定期做一次分支基础调整,以使我的分支与我要合并回的目标保持最新。如果我碰巧在交互重基之前先这样做,我的提交ID将改变,但我仍然可以与提交标题匹配


    Git可能无法在没有提交或隐藏的情况下了解分支的状态,因此它不知道如何重建回购的状态…这不是一个好答案,但有时我只是将存储库的多个版本拉下来。您是否建议为了避免隐藏更改,你应该隐藏变化吗?+1我认为这更符合OP的要求。我正要发布一些基本上可以做到这一点的代码,因为我不知道legit。
    s into abcd123: First few words of that commit
    f into bcde234: First few words of that commit
    wip: rough draft of this thing