以前使用SVN的思想来使用Git,在项目合作中,push代码到远程之前并不知道别人是否改过这个文件,所以要先pull下来,后再push到远程仓库中去,具体步骤:
- 拉取远程仓库中的文件,在本地新建一个分支(tmp)把文件写进去(git fetch origin master:tmp )
- 对比一下本地的文件和拉取的文件(分支里的)有什么不同(git diff tmp ),这一步有可能会有冲突需要手动解决
- 冲突解决了,就可以合并分支了(git merge tmp)
- 合并完成以后就删除分支(git branch -d tmp)
下面是两种方式:
使用Git 拉取远程仓库文件与本地合并
// fetch 方法
$ git fetch origin master:tmp
//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
$ git diff tmp
//来比较本地代码与刚刚从远程下载下来的代码的区别
$ git merge tmp
//合并temp分支到本地的master分支
$ git branch -d temp
//如果不想保留temp分支 可以用这步删除
// pull 方法
// git pull : 首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,
// 然后git fetch 获得当前指向的远程分支的后续版本的数据,
// 然后再利用git merge将其与本地的当前分支合并。所以可以认为git pull是git fetch和git merge两个步骤的结合。
git pull <远程主机名> <远程分支名>:<本地分支名>
// 取回远程主机某个分支的更新,再与本地的指定分支合并。
因此,与git pull相比git fetch相当于是从远程获取最新版本到本地,但不会自动merge。如果需要有选择的合并git fetch是更好的选择。效果相同时git pull将更为快捷。
网友评论