我正在寻找一种方法来从一些由几个变化编译的藏匿中删除一个变化,有谁知道这样做的方法?
描述它的最佳方式(由于git commit
和git stash
如此相似)是我希望我知道通往git commit --amend
存储的方法。
这一切都是在我从共享存储库中提取之前git stash
进行一些更改时开始的。
当我试图从藏匿处git pop
代码时,我遇到了一个冲突(我无法解决)与一个我不关心的文件,因为我有一个自动生成它的脚本,并且对我藏匿处的其他文件更感兴趣。
当我在寻找解决方案的时候,我发现了这个问题:How would I extract a single file (or changes to a file) from a git stash? - 它看起来很有希望,而且还有其他人向我提出类似的问题,但它没有帮助......
答案 0 :(得分:1)
不,无法从存储中删除单个更改 - 至少不能使用git stash
提供的高级命令。由于存储内部只是一个提交,你可以使用低级命令来操作它,但这可能比它的价值更麻烦。
我的经验法则是:如果事情开始变得复杂git stash
,那么现在是时候将存储转换为真正的提交(通常在单独的分支上)。然后你可以使用所有好的git命令来操作提交(checkout,reset,rebase等)。
在您的情况下,我建议采取以下步骤:
如果git stash pop
产生冲突,请清理工作副本(重新签出带有冲突标记的文件等)。
然后运行:
git stash branch wip-branch
这将创建并签出名为" wip-branch"的新分支,从最初创建存储的提交开始。然后它将应用来自存储的更改。这样就不存在冲突,因为隐藏的更改会重新应用于它们所基于的提交。
现在你有一个真正的分支" wip-branch"随着你的变化,你可以改变,合并,挑选等等你心中的内容: - )。
注意:虽然我过去经常使用git stash
,但我几乎已经停止了,因为在真正的分支上创建一个真正的(临时)提交并不是更多的工作,并且给了我更多的选择(更不用说我可以使用正确的提交注释,因此我不会忘记更改的含义。
答案 1 :(得分:0)
也许更容易: