【问题标题】:How can i stash without cleaning the working area?我如何在不清洁工作区域的情况下存放?
【发布时间】:2019-04-06 05:38:46
【问题描述】:

我想保存我的工作区域的状态,但不是作为提交。我应该创建一个新分支,还是有办法在不清理工作区域的情况下进行存储?

【问题讨论】:

  • 你为什么要这样做?
  • git stash 进行提交,所以从某种意义上说,您是在问如何在不提交的情况下提交。隐藏提交的唯一(或至少主要)特别之处在于它们不在任何分支上。
  • @TimBiegeleisen 因为我的程序做了一些意想不到的事情,我通过做一些改变来解决它,但我不完全确定为什么这个改变解决了问题,并且想稍后分析它并继续工作没有问题。
  • git stash store "$(git stash create)" 应该这样做。结帐stackoverflow.com/a/53329520/658497

标签: git


【解决方案1】:

有一些方法可以要求 stash 保存而不是从工作树中删除更改...但这会起作用

git stash save "I'm saving"
git stash apply # apply stash, but don't remove it from list of stashes

【讨论】:

    【解决方案2】:

    您可以进行提交,然后进行软重置以将该提交的状态退回到阶段和工作目录:

    git commit -m 'commit for saving'
    git reset --soft HEAD~1
    

    如果您想应用它,您首先所做的提交仍将在 reflog 中可用。我实际上更喜欢@eftshift0 给出的答案,但如果您想要在存储堆栈之外进行实际提交,这是一个选项。

    【讨论】:

      【解决方案3】:

      你可以试试下面

      $ git stash
      $ git pull - if you want to pull from the master/develop branch
      $ git stash pop - To bring your changes back. You might need to resolve conflicts if there are any.
      

      【讨论】:

        【解决方案4】:

        您可以创建一个分支并在那里保存您的更改,但作为提交

        我假设你在masterbranch。

        首先做出一个承诺。

        git commit -m "your commit message"

        git checkout -b NEWBRANCH

        现在你需要回到主分支

        git checkout master

        再次将您的提交转换为更改(取消暂存)

        git reset --soft HEAD^

        【讨论】:

          【解决方案5】:

          来自@Noam Manos 的评论,使用git stash store "$(git stash create)"。此命令的优点是不会触及工作树(这可能会影响某些文本编辑器/IDE)。

          查看https://stackoverflow.com/a/53329520/10462623

          【讨论】:

            猜你喜欢
            • 2015-12-03
            • 2023-04-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多