使用GitHub分享代码

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

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

  在创建一个新的GitHub仓库时,会有选项“使用README来初始化仓库”:如果这完全是一个新的仓库并且本地也没有任何相关内容的话,建议使用该选项,他会初始化一个commit。否则你无法克隆一个空的仓库。在GitHub的远程仓库中可以直接创建纯文本文件。

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

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:输出详细信息。

更新远程仓库:

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

复制GitHub上其他人的库

对于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>可以推送一个本地标签到远程。

posted on 2018-06-28 17:41  礼哲 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lizhe-Ning/p/9239905.html

使用GitHub分享代码相关推荐

  1. 从0开始学习GitHub系列之「向GitHub 提交代码」

    DevStore首页 >文章 >文章详情 从0开始学习GitHub系列之「向GitHub 提交代码」 糖果果| 2016-06-15 10:57    浏览量(500)    评论(1) ...

  2. IntelliJ IDEA绑定GitHub实现代码版本控制实例演示,IDEA上传、更新、同步项目到GitHub演示,Git的下载与安装

    IDEA 绑定 GitHub 实现代码版本控制 第一章:IDEA 配置 Git 并绑定 GitHub ① 下载 Git ① 安装 Git ③ 设置 Git 的用户名和用户邮箱 ④ IEDA 配置 Gi ...

  3. 解决`向github提交代码是老要输入用户名密码`

    我曾经切换过一次github账号, 似乎还更改过一次github账号的密码, 然后呢? 然后就是每次向github提交代码时都要输入用户名密码(猜测是由于上述原因导致), 每次都是啊, 这也忒麻烦了, ...

  4. 我写的破代码将被保存1000年?GitHub启动代码永久存储计划

    平常程序员面对测试人员"最后的倔强"是:你可以质疑我,但不可以质疑我的代码. 如今真正程序员最后的倔强来了! GitHub宣布启动GitHub Archive Program计划, ...

  5. 百度分享代码插件支持https

    站点自从开启 https 之后 ,百度分享就不能用了!但是又寻找不到类似百度分享的替代品.. 怎么办呢?要如何解决 百度分享不支持https的问题呢, 跟着博主动动手,让你百度分享仍然能在https下 ...

  6. GitHub分享《深度学习500问》优质资源

    GitHub分享的<深度学习500问>,以问答形式对常用的概率知识.线性代数.机器学习.深度学习.计算机视觉等热点问题进行阐述,以帮助自己及有需要的读者. GitHub网址参见:https ...

  7. 【错误记录】Android Studio 向 GitHub 提交代码报错 ( Push failed: Failed with error: Could not read | 使用命令行提交代码 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Android Studio 中首次向 GitHub 提交代码 , 报错 : Push failed: Failed with error: C ...

  8. 【错误记录】Android Studio 向 GitHub 提交代码报错 ( Push failed: Failed with error: Could not read from remote )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Android Studio 中首次向 GitHub 提交代码 , 报错 : Push failed: Failed with error: C ...

  9. 【开发环境】PyCharm 配置 GitHub ( 在 PyCharm 中向 GitHub 提交代码 )

    文章目录 一.PyCharm 配置 GitHub 二.在 PyCharm 中向 GitHub 提交代码 一.PyCharm 配置 GitHub 选择 " 菜单栏 / File / Setti ...

最新文章

  1. leaq c 汇编语言,汇编语言lea指令使用方法解析
  2. CosmoMC第一次测试
  3. ASP.NET程序中常用的三十三种代码
  4. 《Hadoop与大数据挖掘》——2.6 TF-IDF算法原理及Hadoop MapReduce实现
  5. java工作笔记020---Java中的关键字 transient
  6. JS 语法糖 0 —— 解构
  7. 无论干什么事都要对自己有信心!
  8. 组合导航:中海达iNAV2产品描述及接口描述
  9. 二项式展开 matlab,二项式造句_造句大全
  10. A Structure from Motion System
  11. Gateway网关简介及使用
  12. 隐藏Ubuntu 18.04 顶部通知栏( hide top bar)
  13. 小学计算机表格制作教学,《制作表格》~试讲稿~小学信息技术
  14. 云计算 常见问题案例汇总情况
  15. 小程序:密码加密加工器
  16. 蓝牙芯片支持音频传输,播放U盘TF卡,还能传输数据透传串口控制
  17. 影视大全android,影视大全下载2021安卓最新版_手机app官方版免费安装下载_豌豆荚...
  18. 【Linux】什么是粘滞位
  19. HC_SR04超声波模块的应用
  20. 使用ESP8266接入“天猫精灵”控制七彩灯(WS2812)的颜色/亮度-开源

热门文章

  1. 大数据时代数据是如何传输的?
  2. Windows常见DOS命令
  3. 微信第三方登录redirect_uri 参数错误
  4. 小米9.0系统设备(亲测有效)激活xposed框架的步骤
  5. 基于matlab的DOA角度定位估计仿真
  6. 使用EasyExcel导入表格实现xlsx文件批量插入-----linux的mysql
  7. Ubuntu 重装 apt/apt-get
  8. 企业信息化整体解决方案
  9. 无线网络怎么设置,更加安全?
  10. 学习武汉Java开发后就一定能找到高薪工作吗?