使用GitHub分享代码

  感谢优达的免费课程,还有网络上热心的网友,尤为是廖雪峰老师的教程帮我填补好多空缺。这是三个笔记中最后一个了,个人课外学习要先告一段落了,考验要紧啊,还没咋复习呢。内心好慌,但愿本身能耐得住性子坐下来复习。加油!git

  必定要从本身的帐号下clone仓库,这样你才能推送修改。若是从原做者的仓库地址克隆,由于没有权限,你将不能推送修改。因此为此必须在GitHub上新建一个空的仓库。使用它来保存其余人的仓库,并实现与本地的交互。每次更新GitHub时,更新的是一个分支,他会检查该更新全部的提交,若是GitHub中存在就不须要再次上传,若是没有则会提交。  安全

  在建立一个新的GitHub仓库时,会有选项“使用README来初始化仓库”:若是这彻底是一个新的仓库而且本地也没有任何相关内容的话,建议使用该选项,他会初始化一个commit。不然你没法克隆一个空的仓库。在GitHub的远程仓库中能够直接建立纯文本文件。网络

互联设置:由于Git是分布式版本控制系统,因此,每一个机器都必须自报家门:你的名字和Email地址。app

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

注意:git config命令的--global参数,用了这个参数,表示你这台机器上全部的Git仓库都会使用这个配置,固然也能够对某个仓库指定不一样的用户名和Email地址。分布式

 

查看和建立远程仓库:git remote。学习

  • 不加参数:查看全部远程仓库。
  • git remote add name HTTPS:添加远程仓库,name能够是任何字段,用来在本地指代GitHub中的远程仓库。若是只有一个远程仓库,建议使用origin。最后加上该库的https地址。
  • git remote -v:输出详细信息。

更新远程仓库:fetch

git push 远程仓库名 本地分支名spa

复制GitHub上其余人的库 3d

对于GitHub上想要修改的仓库,可使用fork按钮将其复制到本身的帐户中,GitHub会自动给出原文件连接。想要对其进行修改,除非改动很是小,不然都须要clone到本地,使用git clone URL克隆时,git会自动地建立一个远程仓库并指向克隆的原始仓库。能够食用git remote -v验证。这里的URL是fork的主页URL。版本控制

 

图一GitHub上克隆到本地

 

  在本身建立一个库的同时还有合做伙伴的时候,能够选用“合做者“一同开发,不过主人仍是有主导权的,在setting选项卡中,有collaboration选项能够添加不一样的合做者。

git会把你的全部远程分支在本地保存一个副本,他会包含最后一次拉取、推送时分支的状态。远程分支的本地副本以“远程仓库名/分支名”为名,与远程推送储存在一块儿。

更新远程分支本地副本

git fetch:更新远程分支的本地副本,同时实际的本地版本不发生变化。

从远程仓库拉取最新的状态

git pull:从远程仓库拉取最新的状态,并把它与本地的分支进行合并。

合并机制

  这原本是要在上一篇中讲的,上一篇内容太多了,正好这里也有合并的内容,就放在了这里。

  快速合并:你要git默认的合并方式,判断依据是与本分支合并的分支是不是本分支的祖先。若是是这种状况,后面的分支会有前面的分支全部内容,没有必要再产生一个标签,只要把祖先的标签移到最后便可。可是即便是使用快速合并,在GitHub上也会产生一个commit。也可使用强制非快速合并,合并分支时,加上--no-ff参数就能够用普通模式合并,合并后的历史有分支,能看出来曾经作过合并,而fast forward合并就看不出来曾经作过合并。因此建议使用非快速合并。

 

图二快速合并举例

 分支策略

  在实际开发中,咱们应该按照几个基本原则进行分支管理:

  首先,master分支应该是很是稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在其余分支上如:easy-mode,也就是说,easy-mode分支是不稳定的,到某个时候,好比1.0版本发布时,再把easy-mode分支合并到master上,在master分支发布1.0版本;你和你的小伙伴们每一个人都在easy-mode分支上干活,每一个人都有本身的分支,时不时地往easy-mode分支上合并就能够了。

拉取请求

 若是在本地新建一个分支并在其上进行修改,将其推送到GitHub上时也会一样建立一个分支。若是想让其余人更改使用“pull request”拉取请求,即别人能够提交修改,你能够决定是否将其合并到master分支上。设置“pull request”时要注意,GitHub默认是将新分支合并到最原始的仓库中,若是不想必定要更改。拉取请求其实就是合并请求,合做者把想合并到主分支的文本提交到GitHub上,若是主人赞成就能够合并到主分支上了。

 

图三更改请求提交位置

设置完以后,会在仓库主页中出现pull request选项卡,新的拉取请求在其中,选择相应的请求,会看到最新的提交,你能够点开看到更改的内容。

 

图四拉取请求位置

  若是有多个pull request,而且他们之间有冲突的话,通常的解决方法是先先判断哪一个请求要合并,不须要合并的请求直接删除,减小冲突。若是两个都须要的合并产生冲突能够先合并一个,删除该分支,而后在本地电脑上解决冲突,并将解决方案与主分支(想要被合并的分支)合并到解决方案所在地分支中,而后将该分支push到GitHub中,用来更新“pull request”。使用“git pull 远程仓库名 分支名”来拉取远程仓库中相应的分支。

  不要直接将修改合并到主分支而后push,这样会致使合做者没法看到你的更改。

  若是在你修改本地仓库添加新内容时,原做者修改了他的文件致使你没法与最新版本进行合并,能够先建立一个指向源库的远程仓库通常叫作upstream,在本地解决冲突,而后将其push到本身的GitHub上再次提出pull request

 

  

图六 git中一些经常使用概念以及方法的关系

 

如下内容都是后加的。

冻结现场命令git stash

         若是遇到突发状况,须要马上去其余分支上处理问题,可是有头上的工做还没作完没法commit,这时候可使用命令git stash能够把当前工做现场“储藏”起来,等之后恢复现场后继续工做。

         使用git stash命令后,用git status查看工做区,就是干净的(除非有没有被Git管理的文件),所以能够放心地建立分支来修复bug。

         用git stash list命令找到储藏的工做现场,须要恢复一下,有两个办法:

  • 一是用git stash apply恢复,可是恢复后,stash内容并不删除,你须要用git stash drop来删除;
  • 另外一种方式是用git stash pop,恢复的同时把stash内容也删了,可是只能是只有一个stash文件的状况下使用。

你能够屡次stash,恢复的时候,先用git stash list查看,而后恢复指定的stash,用命令

 

图七 git stash命令使用状况

 

标签tag

         这东西没有听老师讲过,可是看了廖雪峰老师的教程后明白了,其实很简单,给个原连接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013762144381812a168659b3dd4610b4229d81de5056cc000

标签说白了就是一个代号罢了,为了简化commit ID。

         使用也很是简单添加标签使用命令git tag <name>。一般会默认放在该分支的最新提交上。git tag -a <tagname> -m "blablabla..."能够指定标签信息,git tag能够查看全部标签。可使用git tag <name> commitID给相应ID的commit补上一个标签。

         由于建立的标签都只存储在本地,不会自动推送到远程。因此,打错的标签能够在本地安全删除使用命令:git tag –d <name>

         命令git push origin <tagname>能够推送一个本地标签到远程。

相关文章
相关标签/搜索