目录
0. 前言
1. git stash: 暂时保存本地修改
0. 前言
记录日常git使用过程中碰到的一些常见问题的解决,以及一些常用技巧。作为自己作为git使用者的从入门到进阶的成长过程。不求完备但求简洁实用。动态更新。。。
1. git stash: 暂时保存本地修改
多人工作的项目中,经常会碰到自己在本地做了一些修改(但是还没有经过验证,没有做好要提交的准备),这个远程库已经有更新,需要pull下来在这个最新版本基础上进行自己的修改的验证。这时,pull一下的话会碰到以下这种错误:
简而言之,就是因为本地有修改而且还没有commit(not yet being staged),所以git不允许你pull远程最新版本,因为它不知道该拿你本地修改的东西与远程版本中的更新怎么办。如果你本地commit了话,那么git会在pull时自动进行merge,如果merge时发生冲突,会在merge版本中留下标志。但是你本地修改没有commit,git就不知道该咋办了,干脆报警撂挑子不干了。
简单的对策(三板斧):
git stash
git pull
git stash pop
第一条命令是将本地修改暂时保存起来,这样本地版本就回到上一次pull下来的状态。这样的话,再执行第1条git pull命令就不存在冲突了。然后,第3条指令的意思是重新把刚才暂存起来的本地修改弹(pop)出来,再次patch到最新pull下来的最新版本上去。
那怎么确保在以上操作过程中自己原本所做的修改没有丢失呢?
在以上操作过程之前执行一下“git status”,然后在以上操作过程后再执行一次git status,两次git status所得到的结果应该一致,即应该都列举了本地修改过的文件有哪些。当然,更保险的做法是手动备份自己所作的本地修改,然后在执行以上操作之后,用diff进行手动备份文件与本地库中的文件确认自己所作的修改是否还在。
关于git stash的更全面的解说参见:git stash - Saving Changes | Atlassian Git Tutorial