借鉴于https://blog.csdn.net/u010629610/article/details/87335894
在拉取了E(字母代表一个提交对象)提交之后,我们忘记拉取最新的代码就进行了修改,这时候master分支上的提交已经变成了A'
A local
/
D---E---A' master
(1)如果用commit进行操作:本地就会产生一个A的提交对象,那么git pull的时候便需要把master分支合并到本地(可能需要解决冲突),然后再提交
A local
/ \
D---E---A' master
合并后产生了一个M提交对象:
A---M local
/
D---E---A' master
最后git push提交到master分支上,则会产生两个提交:
D---E---A'---A---M master
(2)使用git stash命令:本地就不会产生新的提交对象,而是把本地的更改先行缓存,那么git pull的时候便可以直接把本地的HEAD更新为A'
A' local
/
D---E---A' master
然后再使用git stash pop命令将本地的修改恢复(可能需要解决冲突),这就相当于我们在A'的基础上进行了修改,然后进行git commit产生了新的提交对象B
A'---B local
/
D---E---A' master
最后git push提交到master分支上,则只会产生一个提交:
D---E---A'---B master