我正在尝试应用我之前隐藏的更改git stash pop
并获取消息:
Cannot apply to a dirty working tree, please stage your changes
Run Code Online (Sandbox Code Playgroud)
关于如何处理的任何建议?
muh*_*hqu 195
当我必须将隐藏的更改应用于脏工作副本时,例如从存储中弹出多个变更集时,我使用以下内容:
$ git stash show -p | git apply -3 && git stash drop
Run Code Online (Sandbox Code Playgroud)
基本上它
我想知道为什么没有-f
(强制)选项git stash pop
应该完全像上面的单线程一样.
在此期间,您可能希望将此单行添加为git别名:
$ git config --global --replace-all alias.unstash \
'!git stash show -p | git apply -3 && git stash drop'
$ git unstash
Run Code Online (Sandbox Code Playgroud)
感谢@SamHasler指出-3
允许通过3向合并直接解决冲突的参数.
Ser*_*vyi 57
我是这样做的:
git add -A
git stash apply
Run Code Online (Sandbox Code Playgroud)
然后(optionaly):
git reset
Run Code Online (Sandbox Code Playgroud)
您可以通过将您想要的存储作为补丁文件导出并手动应用来隐藏当前更改,从而实现此目的.
例如,假设您要将存储@ {0}应用于脏树:
导出存储@ {0}作为补丁:
git stash show -p stash @ {0}> Stash0.patch
手动应用更改:
git应用Stash0.patch
如果第二步失败,则必须编辑Stash0.patch文件以修复任何错误,然后再次尝试git apply.
使用git reset清理工作目录,提交更改,或者,如果要隐藏当前更改,请尝试:
$ git stash save "description of current changes" $ git stash pop stash@{1}
这将隐藏当前更改,然后从存储堆栈中弹出第二个存储.
Mathias的解决方案绝对是最接近git stash pop --force(真的,来吧Git开发者,我们已经有了这个选项!)
但是,如果您只想使用git命令执行相同的操作,则可以:
换句话说,进行当前更改的提交(我们永远不会推送).现在你的工作区很干净,弹出你的藏匿处.现在,提交存储更改作为对先前提交的修正.完成后,您现在可以在一次提交中组合两组更改("Fixme"); 只是重置(--soft NOT --hard所以没有任何实际丢失)你的结账到"一次提交之前",现在你有两组更改,完全没有提交.
**编辑**
我才意识到它实际上更容易; 你可以完全跳过第3步,所以......
(提交当前更改,弹出隐藏的更改,重置第一次提交以将两组更改组合在一个未提交的状态.)
归档时间: |
|
查看次数: |
49481 次 |
最近记录: |