我♥ git stash -p.但有时,一个令人满意的会议结束后y,n和s,我得到这个:
Saved working directory and index state WIP on foo: 9794c1a lorum ipsum
error: patch failed: spec/models/thing_spec.rb:65
error: spec/models/thing_spec.rb: patch does not apply
Cannot remove worktree changes
Run Code Online (Sandbox Code Playgroud)
为什么?
我是Git的新手,我正在使用EGit eclipse插件来提交.
我修改了几个文件,然后我修改了这些更改,然后我git pull在命令行中完成了所有最新的提交.然后我Apply stashed changes从EGit 做了.现在它应用了我的更改,并且从上次提交的存储文件中提取的更改消失了.我不确定为什么它没有问我合并冲突并覆盖我的更改并丢失了以前的提交更改.
如何获得这些变化?
假设在由git版本化的项目中进行了两组更改.一套是上演的,另一套则没有.
我想通过在此状态下运行我的项目(在提交之前)来重新检查暂存的更改.什么是简单的方法来收起所有未分阶段的变化并且只留下上演?所以我需要从我的项目中消失的非分段更改,但是要存储在某个地方以便进一步工作.
这听起来非常像git stash命令.但是git stash会将未分阶段和分阶段的更改从我的项目中移除.我找不到类似的东西git stash uncached.
我进了一个分店做了一些工作.我想进入另一个分支,但不想承诺,所以我做了git stash.然后我做了git checkout <otherbranch>.我在那里做了一些工作,就像在第一个分支中一样,我想在提交工作之前切换它.所以我git stash也在那里.我切换回第一个分支并尝试解除它(git stash pop)认为它将从该特定分支获取存储.我感到惊讶的是它从<otherbranch>最近的藏匿中释放了藏匿物.我的印象是存储是特定于分支的,但是这种行为表明整个本地存储库只有一个存储.
是git stash分支特定的还是整个存储库?如果是整个存储库,我可以将选项传递给它以使其特定于分支吗?
我有一个为未来保存的藏匿处,我想给出一个有意义的名字.虽然可以将消息作为参数传递给git stash save,但是有没有办法将消息添加到现有的存储中?
如果我在分支A上工作并且在准备好在分支A上提交之前突然需要在分支B上工作,我将我的更改存储在A,结账B,在那里做我的工作,然后结账A并应用存储.
如果我在A上工作并且我想停止工作那一天,我应该把我的工作藏起来然后第二天应用它,当我恢复工作时,或者我应该保留原样 - 工作中未提交的修改文件目录.我不明白为什么在这种情况下我需要使用藏匿,除非有一些安全性好处.
另外,另一种情况 - 我在工作和家庭工作.如果我想回家的时候还没准备好提交,我可以把我的工作藏起来,把它推到GitHub然后把它藏在家里吗?
这是frontend过去两周内分行的管道.
| Stash@{3}是所有代码Stash@{1}(不包括两个微小的提交)
| 微小的承诺
| 微小的提交
| 两周前巨大的批量提交,现在已经重新定位并转移到了Stash@{1}
我的工作树目前很干净.
Stash@{1}是两周前一般开发代码的批量提交的内容(这应该首先被隐藏).这个提交被撤消并转移到藏匿处.
Stash@{3}是自那以后的最新工作Stash@{1}(减去已经提交的几个更改).
我需要在我的工作树中将这两个存储块组合在一起,这样我就可以从这个巨大的工作池中做出一些提交.
我跑了git stash apply stash@{1}然后我试过:
git stash apply stash@{3}
git stash show -p | git stash apply stash@{3}
但在这两种情况下我都得到了"肮脏的工作树".我如何将这项工作合并在一起?因为stash@{3}更新,我希望它在stash@{1}任何有冲突的地方取代.
什么时候应该使用git stash save而不是git stash push反之亦然?
所以我有一大堆更改和一些未跟踪的文件.我需要调整一些东西,所以我使用git stash -u,修改了一些东西,提交了这些修改,推动了它们,然后尝试了git stash pop.
因为我修改了一些我藏匿的文件,所以收到了以下消息:
error: Your local changes to the following files would be overwritten by merge:
file_1.py
file_2.py
Please, commit your changes or stash them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,我已经提交了所有新的更改,当我运行命令时,我的结账很干净.
似乎git stash pop操作没有隐藏我的一半更改和未跟踪的文件,但如果我git stash pop再次尝试,我得到的输出如下:
some_file.html already exists, no checkout
some_other_file.html already exists, no checkout
yet_another_file.html already exists, no checkout
Could not restore untracked files from stash
Run Code Online (Sandbox Code Playgroud)
git stash show 仍然显示了我的藏匿变化列表,但我对我现在所做的事情感到茫然.
我怎么能让自己脱身?
我在一个分支上有一些变化.更改分支是一种痛苦,因为某些文件被进程锁定,因此要更改分支,我必须停止所有具有锁定的进程,然后stash在签出其他分支以查看其日志之前进行更改.
是否可以查看不同分支的日志,而无需查看它?