玖叶教程网

前端编程开发入门

git入门教程0110(git完整教程)

hello各位好,上一节呢学会了用git pull来同步代码,但是我说了,我不推荐使用这种方式,为什么呢,因为使用git pull的方式,git 为我们做了两步:1.将远程的提交同步到本地的远程分支,2.将远程分支的内容合并到当前的本地分支。那这样看起来没什么毛病,可是为什么我不推荐呢?当我们啪啪写了很多代码的时候,突然就想去更新一下代码,可是不更不知道,一更吓一跳,妈妈咪呀,一大堆冲突,怎么办呢,得浪费很多时间去解决冲突,怎么办??这时就得老老实实解决冲突才能继续工作了。好,我们先来模拟一下:分别在trunk本地仓库中编辑another.cpp和在本地仓库中编辑another.cpp

好,我们先在trunk中提交代码,并push到远程仓库。在debug中,将代码提交到本地仓库,然后使用git pull同步远程仓库的代码:git pull,可以看到代码冲突了,老老实实解决冲突吧

ha

好看看合并之后的样子

可以看到,解决冲突之后,产生了一个合并代码的提交记录,虽然代码上看上去没问题,可是多了一个提交记录。

那如果使用git fetch是怎样的呢?同样我们再来模拟一下:在trunk找那个,编辑another.cpp,然后提交并同步到远程仓库:

在debug中编辑another.cpp并提交到本地:

好,现在执行git fetch来更新远程仓库的代码:

咦,看提示代码更新成功,可是居然没有冲突,看看我们的提交记录:如下,提交历史并没有我在trunk中提交日志。

其实呢,git fetch只是将我们的代码更新到了远程分支上面,并没用同步到现在工作的master分支上,

看看远程分支的log,确实是这么回事

那怎样才能将代码同步到本地分支master呢?我推荐使用git rebase,当然git merge也是可以的,不过我更推荐git rebase,关于Git rebase更多的使用,在之后的教程中我会一一道来。。。

好,执行一项 git rebase,冲突是必然的:

根据提示,git给我们三种选择,1。先解决冲突,在执行git rebase --continue继续。2.git rebase --skip,跳过这个冲突的内容不合并。3.git rebase --abort停止合并。当然第2中方式通常我们是不会这样做的。第3中你就可以取消合并,改干嘛干嘛去,等有时间了再来执行git rebase继续合并代码,这里呢我选择1来演示:git mergetool 解决一下冲突;然后执行 git rebase --continue即可。可以看到,虽然使用 git fetch比执行git pull多了一些步骤,但由于不像git pull这么直接,使得我们使用git fetch就有了更多的选择和操作,随心所欲。git fetch 常用的一下操作如下:

git fetch orign更新同步远程仓库oring下的所有分支的代码。

git fetch origin master 更新远程仓库orign下的master分支。

git fetch oring -p 更新远程仓库origin下的所有分支,当远程仓库下的分支有删除的时候,加上-p参数就会将本地对应的远程分支删除,否则他会一直存在。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言