目前,我参与的公司的一个项目把版本控制放到Github上了。多人协作开发的工程中,需要时常从服务器上更新代码。Git中有两种更新代码的方法:fetch
和pull
。
###fetch 和 pull的区别
1.git fetch
:从远程获取最新版本,不会自动merge。
git fetch origin master #从远程获取最新版本
git log -p master..origin/master #比较本地与远程的差别
git merge origin/master #合并
2.git pull
:从远程获取最新版本,并且自动合并
git pull origin master
上述两种方法中,git fetch
比较安全,能够在合并之前查看本地与远程的区别。
使用git pull
的话,有的时候会因为本地有改动而执行失败。
###git stash
如果要获取最新版本的时候本地已经有改动了,而且这些改动是有意义的,怎么办呢?
可以使用git stash
暂时搁置当前已做的改动。具体如下
1、先把本地改动加到staging area:
git add .
2、将改动搁置:
git stash
3、找回之前搁置的改动:
git stash apply
4、查看所有的搁置版本:
git stash list
5、stash的其他用法还有如下:
git stash apply stash@{1} #找回栈中的第二个
git stash pop #找回第一个
git stash drop <id> #删除一个stash
git stash clear #删除所有stash
###参考