我有一些本地更改(不在单独的文件中,所以.gitignore不起作用),我不想提交。
我做了git reset --hard
有时在承诺清除偶然的变化但有意义之后,我也失去了我想离开的有用变化。
我如何保留我的有用更改?如何我可以存储一些本地更改,幸存下来git reset --hard
回答
你还可以尝试:
git update-index --skip-worktree -- file
# to cancel it:
git update-index --no-skip-worktree -- file
应该抵制git reset --hard
。 (请参阅this answer'--
'双连字符使用)
请参阅此blog post。
- 它看起来像
skip-worktree
是拼命的保护您的本地数据。但是,如果它是安全的,它并不妨碍你获得上游的变化。加上git不会重置拉标志。但是忽略“重置 - 硬”命令对于开发者来说可能会是一个令人讨厌的惊喜。assume-unchanged
在pull操作中标志可能会丢失,并且这些文件中的局部更改似乎对git并不重要。
假设 - 不变假定开发人员不应更改文件。如果一个文件被改变 - 比这个改变并不重要。此标志旨在提高不变文件夹(如SDK)的性能。但如果诺言被破坏并且文件实际上发生了变化,那么git会回复标志以反映现实。可能在通常不需要更改的文件夹中有一些不一致的标志是可以的。另一方面,当您指示git不触摸特定文件时,
skip-worktree
很有用。这对于已经跟踪的配置文件很有用。上游主存储库托管一些生产就绪配置,但您想要更改配置中的某些设置以便能够执行一些本地测试。并且您不希望意外检查此文件中的更改以影响生产配置。在这种情况下,skip-worktree
成为完美的场景。
您可以使用git stash
临时存储您的更改,然后稍后再将其更改 - 请参阅Pro Git chapter on stashing。
是我知道'''git stash'''但我不想每次都隐藏我的更改。 – freemanoid
@freemanoid,好吧,让我们假装你想象中的'git preserve-these-and-these-changes'命令确实存在;那么每次你想保留一些东西来保存'git reset --hard'时,你需要调用这个虚构的命令,然后调用另一个命令来“撤消”它在所选文件上设置的保存状态。现在这将如何不同于'git stash' /'git stash pop'? – kostix
如果您不希望这些更改被提交,但始终需要它们在本地,则考虑为您的本地更改创建并提交脚本或修补程序文件。然后,您可以保留并记录您的更改,并在硬重置后轻松应用它们。
如果您有针对您的环境的更改,那么可能需要将它们外部化为配置文件。
- 1. git reset --hard HEAD
- 2. “git reset --hard”与“git reset --hard HEAD”一样吗?
- 3. `git reset --hard`会为我改变吗?
- 4. 我可以使用'git -m'来更改远程存储库吗?
- 5. 如何在“git reset --hard”之后恢复更改
- 6. Git reset hard and going back
- 7. Git推后失败'git reset --hard HEAD〜1'本地回购
- 8. 如何取消`git reset --hard HEAD〜1`?
- 9. 运行git reset --hard手动
- 10. git reset后的冲突--hard
- 11. 如何/我可以在git存储库中完全删除变更集?
- 12. git reset --hard没有帮我用rake db:migrate
- 13. Git - 恢复从本地存储库提交的更改
- 14. 我如何保存和如何可以存储在铬本地存储阵列相关的铬本地存储
- 15. Git reset --hard和一个远程仓库
- 16. 我们可以使用HDFS来存储git存储库吗?
- 17. “git checkout tag-name”vs“git reset --hard tag-name”
- 18. 如何查看本地存储更改
- 19. Git如何更新本地存储库并保留我的更改
- 20. 使用git reset后无法推送更改--hard
- 21. 'reset hard head'和'reset hard'之间的区别是什么?
- 22. 我有一个Git存储库。我克隆了存储库,委托我的本地更改。当我将更改推送到服务器时,它显示错误
- 23. 保存一些contenteditables本地存储 - - -
- 24. 如何使我的本地存储库可用于git-pull?
- 25. 如何将我的本地Git存储库移动到远程Git存储库
- 26. 可以使用本地存储来保存iOS上的缓存
- 27. Git:我的本地存储库在哪里? (no .git directory)
- 28. 如何以低成本存储始终如一地更改文本的版本?
- 29. git reset --hard origin/master?是什么意思?
- 30. 如何重置“本地”git存储库?
谢谢,它的工作原理!我怎样才能删除这个标志? – freemanoid
@freemanoid只是'git update-index --no-skip-worktree -aFile' – VonC
嗯,我没有找到这个时候通过人看,但它在那里。所以'git update-index --no-skip-worktree my_file'''起作用。 – freemanoid