通过git学习(一)的内容,我们已经掌握了如何再本地建仓,接下来,就来学学如何添加远程仓库

首先是在github上建立账号,然后就可以 create  a new repository,接下来就是在gitbash上连上我们的reposity


这就是让git连接到我们的repository_name,但是这里有个抽象的origin名字,用于后面的git命令,相当于一个repository的别名

  • git push -u origin master

这里就是把本地仓库push到远程仓库,第一次push的时候,会跳出登陆github的页面,登陆之后,就可以直接push了,可以把命令简化为git push origin master,如果是提交某个分支,就可以写成git push origin <branch-name>

  • git clone

git clone就是从远程库克隆到本地库

yum源仓库地址 yuan仓库_yum源仓库地址

因为cloneProject是一个空的project,所以会有一个warning

  • SSH

在使用本地和远程连接的时候,可以用SSH地址,所谓SSH(Secure Shell),名为安全外壳协议,与https拥有同样的功能,SSH可以为远程登陆会话和其它网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

  • 创建与合并分支

图片来自廖雪峰网站

yum源仓库地址 yuan仓库_git_02

我们回顾一下HEAD指针,其实HEAD是指向的master分支,而master指向了当前的版本,我们每提交一次,master就会前移一步,增长我们的分支,可以考虑一下,有时候我们直接在master上工作,修改一下就commit一次,这样子会有很多commit,会污染master的commit记录,但是如果采用分支,你可以在分支上commit,直到某个功能完全实现了才把分支切换到master,然后commit,就不会有很多commit-id了,使得master非常简洁;另外,分小组后,可以每个小组一个分支,汇总的时候再切换回master,这样子会更清楚的查询到分支的bug

  • git checkout -b dev

这里的git checkout带上-b参数,表示创建分支并切换到新建分支,切换可以理解为HEAD指向了新建的分支,这里就意味着HEAD指向了dev

也可以分条写

  • git branch dev

这里的git branch表示新建一个分支,而不带“dev”的时候,表示查看分支

  • git checkout dev

这里的git checkout dev表示切换到dev

  • git merge

当我们切换到dev分支之后,我们可能在这里进行了add或者commit,但是master没变啊,这个时候可以用git branch master切换到master分支,然后使用git merge dev,将两个分支进行合并

有时候在合并的时候,会遇到合并conflict,就是在不同分支上都修改了某个文本,已合并,文本会把两个分支的修改都会呈现出来,这时候,需要自己进入文本进行处理,然后再git add,git commit

git merge分许多策略,默认的是“fast-forward”,这种情况下,在删除分支后,会同样的删除分支节点的版本,为了保留分支信息,可以采用“no-ff”策略

  • git branch -d dev

合并完成后就可以删除分支了,所以这个时候可以采用git branch 带参数-d进行删除

  • 分支策略

在实际项目种,真正的项目开发是多个人并行的,master一般是不会允许多人操作的,所以,大家都在分支上干活,干完了,再一步一步汇总,最后汇总到master,有点像总分总的结构,我们看看廖雪峰网站的图

yum源仓库地址 yuan仓库_yum源仓库地址_03

  • 多人分支工作模式

首先是git push origin <branch-name>推送自己的修改,如果推送失败,就需要git pull,把远程的分支拿回来,这个过程会自动合并,然后再push,如果git pull的时候也推送失败,则表面本地分支和远程分支的链接欸关系没有创建,创建的方法是git branch --set-upstream-to <branch-name> origin/<branch-name>

push分支的方式git push origin <branch-name>

 

  • Bug分支

遇到bug是常有的事,在git里面修改bug也常见,首先是建立一个分支 git checkout -b issue1,然后如果中途有事,但是有没有修改完,又不能commit,这个时候就是git stash,将当前的工作给储藏起来,过了一段时间又回来改来了,这个时候就需要git stash list,找到存储的工作现场,找到之后,你可以采用git stash apply stash@{list_num}接着工作(这里的list_num对应stash_list里面存储位置),但是stash没有删除,你需要采用git stash drop来删除stash,另一种方式是git stash pop,在恢复的同时删掉了stash。

  • 删除正在开发的无用的分支

git brach -D <branch-name>

  • git remote

查看远程仓库信息,git remote -v可以看到更加详尽的信息

  • rebase操作

可以说,我们在协同工作之后,log信息会有好多分叉,这是不利于我们观察历史信息的,最好的办法就是让分叉变成一条直线,rebase就是这样一个行为,首先搞清楚分叉的原因

我们把master看成主分支,是不可以随便动的,然后就是其它分支,总是其它分支的本地分支和远程的分支合并之后,再合并到一个master分支上,这样子,分叉就出现了,并且本地commit操作多于push操作也会出现分叉,那么如何解决呢,最好的办法就是修改本地的commit,rebase也是这样干的,太晚了,休息了,明天再写