Git与远程资源库同步简析

目前,我参与的公司的一个项目把版本控制放到Github上了。多人协作开发的工程中,需要时常从服务器上更新代码。Git中有两种更新代码的方法:fetchpull

###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

###参考

  1. http://blog.csdn.net/hudashi/article/details/7664457
  2. http://blog.csdn.net/qinjienj/article/details/7475890
  3. Git建议指南