我有些本地修改(不是在单独的文件中,所以.gitignore不起作用),我不想提交它们。
有时我会执行git reset --hard
来清除偶尔出现的更改,但显然我也会失去我想要保留的有用更改。
如何保留我的有用更改?
您也可以尝试以下方法:
git update-index --skip-worktree -- file
# to cancel it:
git update-index --no-skip-worktree -- file
git reset --hard
。(请参阅此答案关于 '--
' 双短横线的用法)skip-worktree
非常努力地保护您的本地数据。但是,如果安全的话,它并不会阻止您获取上游更改。另外,git不会在拉取时重置标志。但忽略“reset --hard”命令可能会给开发人员带来不愉快的惊喜。assume-unchanged
标记可能会在拉取操作中丢失,并且这些文件内部的本地更改似乎对git并不重要。skip-worktree
很有用,当你指示git永远不要触碰特定文件时。这对于已跟踪的配置文件非常有用。上游主仓库托管了一些生产就绪的配置,但您想更改配置中的某些设置,以便能够进行一些本地测试。而且,您不希望意外检查此类文件中的更改以影响生产配置。在这种情况下,skip-worktree
非常合适。git update-index --no-skip-worktree -- aFile
即可。 - VonCgit update-index --no-skip-worktree my_file
是可行的。 - freemanoid
git stash
,但我不想每次都隐藏我的更改。 - freemanoidgit preserve-these-and-these-changes
命令确实存在;那么每次你想要保存一些内容以在git reset --hard
后恢复,你都需要调用这个虚构的命令,然后再调用另一个命令来“撤消”它设置在选定文件上的保留状态。那么这与git stash
/git stash pop
有何不同? - kostix