首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git stash and apply

git stash and apply
EN

Stack Overflow用户
提问于 2013-12-06 04:20:14
回答 2查看 41.1K关注 0票数 44

我是git的新手,不太清楚stashing是如何工作的。

假设我正在处理分支主节点,并尝试git pull并收到错误消息,即我的本地更改将被覆盖,需要隐藏或提交。如果我还没有暂存我的任何更改并运行git stash,然后执行git pull并成功更新,那么当我git stash apply时会发生什么

一般来说,如果其他人修改了文件,而我运行了git pull,那么当我运行run git stash apply时会发生什么?它是否会覆盖刚刚更新的文件,而不管这些文件在我存储时是否已暂存?它会用隐藏的文件覆盖我刚刚用git pull更新的每个文件吗?

EN

回答 2

Stack Overflow用户

发布于 2013-12-06 04:37:13

stash git命令会记住stash的来源:

代码语言:javascript
运行
复制
   git stash list

输出输出

代码语言:javascript
运行
复制
   stash@{0}: WIP on master.color-rules.0: 35669fb [NEW] another step toward initial cube

在那里你可以看到它是在哪个SHA1上制作的。因此,如果你使用git stash,git pull,git stash apply,并且你得到了一个冲突,那么stash不会被删除(只有当你删除或者应用成功的时候才会被删除)。因此,您总是可以从git stash列表中获取SHA1,并且

代码语言:javascript
运行
复制
   git checkout 35669fb
   git stash apply

它被保证能正常工作。我建议使用-b选项并提供该恢复的分支名称。

也就是说,我最喜欢的工作流程是总是在新的"personnal“名字下结账,以避免这样的问题

票数 7
EN

Stack Overflow用户

发布于 2013-12-06 04:31:19

一般来说,未提交的更改总是不好的。要么你的更改是好的,然后提交它们,要么它们比放弃它们更糟糕。在有未提交的更改时执行任何git操作都会导致麻烦,并且git将无法帮助您,因为git不知道您未提交的任何内容。

说完了,回到你的问题上。;)

Git通常非常聪明。当您应用stash时,它会尝试将您的更改与其他更改合并。大多数情况下,这都是有效的。

如果更改确实冲突,因为您以不同的方式更改了相同的行,git会告诉您,您将不得不自己解决冲突。+即使在这种情况下,git也会通过git mergetool来帮助你,它会启动一个合适的命令来显示冲突,并允许你逐个解决它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20409853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档