Github概念理解备忘录
总结:
add就是用来建立跟踪,添加文件到缓存区;
commit就是把文件缓存区的文件正式加到本地库中;
push就是把本地库更新到远程库中;
git命令的操作要在仓库所在目录下进行才有效;
在Github上,可以任意fork开源仓库;
自己拥有fork后的仓库的读写权限;
可以推送pull request给官方仓库来贡献代码;
=====================================================
如果远程仓库做了修改,如何更新到本地?
查看远程分支:git remote -v
查看状态:git status
从远程获取最新版本到本地:
1)在本地创建新temp分支的办法,将远程origin仓库的master分支代码下载到本地temp分支:git fetch origin master:temp;
2)接第1步,也可以使用 git fetch origin master;
3)使用命令:git diff temp;用来比较本地代码与刚从远程下载下来的代码的区别;
4)合并temp分支到本地的master分支;git merge temp
5)删除temp分支:git branch -d temp,如果该分支没有merge到本地,那么该分支就会报错,可以添加-d参数来强制删除;
====================================================
分支:
分支产生的背景和意义:
举个例子,准备开发一个新功能,需要两周时间,如果活还没干完,不完整的代码库会导致别人没法干活;如果一次性全部写完再一次提交,又存在丢失每天进度的风险;
现在有了分支,就不用怕了,先创建一个分支,别人看不到,还可以在原来分支上正常工作;而你再自己的分支上干活,想提交就提交;
当自己完成了开发,就可以一次性合并到原来的分支上,又安全又不影响别人工作;
分支的原理(参考廖雪峰的Git教程):
每一次提交,Git都把他们串成一条时间线
HEAD 指向当前分支;
master 指向提交;master是主分支,每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线会越来越长;
创建一个新的分支,例如dev,即增加了一个dev指针,修改HEAD的指向,指向dev。即完成分支的创建,工作区文件没有任何变化;
在dev上的工作结束之后,就可以把dev和master合并,最简单的方法,直接把master指向dev的当前提交,就完成了合并,HEAD指向master;
合并完分支后,甚至可以直接删除dev分支。删除分支dev就是把dev指针给删掉,这样就剩下了一条master分支;
冲突:
创建并切换一个分支feature1:git checkout -b feature1 (checkout是直接到工作区,当前分支是feature)
在feature1分支修改文件:add、commit;
合并分支feature1到master:git merge feature1;
如果有冲突解决冲突,冲突即要合并时,发现master也产生了提交,用git status检查冲突;
关于分支的命令总结:
创建并切换分支: git checkout -b <name>
创建分支:git branch <name>
切换分支:git checkout <name>
查看当前分支:git branch
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
在本地仓库中建立一个远程仓库的别名,以便之后提交代码时,不需要每次都输入远程仓库的地址:git remote add origin git@<git 仓库的地址>;
本地新分支更新到远程仓库中:git push origin <NewBranchName>
拉取远程分支到本地分支:git pull <远程主机名> <远程分支名>:<本地分支名> 例如:git pull origin master:wy ->这条命令可以理解成git fetch+git merge;
如果改成:git pull origin master,省略了后面的冒号的话,表示将远程origin主机的master分支拉取过来和本地的当前分支合并;
这么看fetch更加安全,再merge之前,可以查看更新情况,然后再决定是否合并;
分支管理策略:
master分支应该是十分稳定的,仅用来发布新版本;
dev分支是不稳定的用来干活的;
多人合作时,每个人都再dev分支上干活,每个人都有自己的分支,是不是往dev分支上合并即可;
====================================================
标签:
标签的意义:
标签是版本库的一个快照;
例如:遇到需要上周一那个版本,版本号是V1.2,按照v1.2查找commit就行;如果查找commit号的话,一串乱七八糟的数字不好找;
tag是让人容易记住的有意义的名字,它跟某个commit绑定在一起;
标签是和具体一个commit挂钩的,如果这个commit既出现在master分支上,又出现再dev分支上,在这两个分支上都可以看到标签;
操作过程:
切换到需要打标签的分支上:git branch;git checkout <branchname>;
打标签:git tag <name>;
查看标签:git tag;
默认标签是打在最新commit上的。如果忘记打标签的话,找到历史提交的commit id,然后打上;
查看标签的信息:git show <tagename>;
如果标签打错了,可以删除:git tag -d v0.1
因为创建的标签只在本地,不会推送到远程,删除错误的标签比较容易;
如果要推送某个标签到远程,使用命令 git push origin <tagname>;
一次性推送全部尚未推送到远程的本地标签:git push origin --tags;
如果标签已经推送到远程,要删除远程标签的话,就麻烦一些,要先本地删除,再从远程删除,命令也是用push的方法;
Github概念理解备忘录的更多相关文章
- 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制
今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...
- SpringIOC的概念理解、构造器注入、setter注入、p命名空间注入、IOC容器介绍与比较
1.IOC概念理解 IOC(Inversion of Control)即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...
- Kubernetes重要概念理解
Kubernetes重要概念理解 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者.2018年的kubernetes第一个版本1.10已经发布.下面整理一下,kubernete ...
- SNF快速开发平台2019-角色、权限、账户的概念理解-非常全的理论讲解权限控制
组织模型 资源模型 操作模型 谁能够执行哪些操作 执行资源的范围 资源概念资源就是想要的到的最终物质,我们可以给每一个资源定义一个权限,也可以给某一类资源定义一个权限 权限概念权限是对资源 ...
- elasticsearch基本概念理解+elasticsearch 的shards unassigned处理方法 -- 最佳运维实践 - 集群规划
1.es与MySQL的概念对比 2.概念理解 2.1 Index : 一个索引即是文档的集合 2.2 Document : 一个文档即是一个可被索引的基础单元信息,一条记录: 2.3 Replicas ...
- fragment概念理解
fragment概念理解知识,fragment概念理解图片 fragment概念理解内容,fragment概念理介绍,fragment概念理正文 Fragment是Android honeycomb ...
- ubuntn系统下将文件拷贝到优盘中及挂载概念理解
参考资料:http://jingyan.baidu.com/article/7082dc1c76f178e40a89bdd3.html: http://bbs.csdn.net/topics/3801 ...
- Ceph 概念理解
简介 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务. 在虚拟化领域里,比较常用到的是Ceph的块设备存储, ...
- RabbitMq基本概念理解
RabbitMQ的基本概念 RabbitMQ github项目地址 RabbitMQ 2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的 消息中间件 ...
随机推荐
- python教学视频
3 X王的 链接: http://pan.baidu.com/s/1bW2UrO 密码: quit4 django 链接: http://pan.baidu.com/s/1o8UsNDS 密码: 8x ...
- 分布式理论系列(一)从 ACID 到 CAP 到 BASE
分布式理论系列(一)从 ACID 到 CAP 到 BASE 一.ACID 1.1 事务的四个特征: (1) Atomic(原子性) 事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程 ...
- Excel应用程序如何创建数据透视表
原文作者:andreww 原文链接: http://blogs.msdn.com/andreww/archive/2008/07/25/creating-a-pivottable-programmat ...
- IntelliJ IDEA包名在一行
1.导入项目必须正确 选择左上角File--->NEw---->Module from Existing Sources 2.根据路径找到项目,如果是maven项目需要找到其pom.xml ...
- CodeForces 518A Vitaly and Strings (水题,字符串)
题意:给定两个相同长度的字符串,让你找出一个字符串,字典序在两都之间. 析:这个题当时WA了好多次,后来才发现是这么水,我们只要把 s 串加上,然后和算数一样,该进位进位,然后再和 t 比较就行. 代 ...
- GPS原理及其应用
第一章 绪论 GPS定位原理: 卫星轨道未知情况下,通过几个已知站点观测卫星,利用卫星信号的多普勒效应,就可以确定卫星轨道. 卫星轨道已知情况下,用户观测卫星信号,就可以确定用户的位置. 这原来是在海 ...
- (4)-optXXX方法的使用
在JSONObject获取value有多种方法,如果key不存在的话,这些方法无一例外的都会抛出异常.如果在线环境抛出异常,就会使出现error页面,影响用户体验,针对这种情况最好是使用optXXX方 ...
- 关于数组以及c#学习问题
第二次作业我没注意看群通告,看到都3月8号,开始着手想用c#试着写写,才发现一些问题. a.鞠老的要求中必须原数据需要csv文件,csv文件不是太了解,网上简单查阅了一下------csv意思是逗号分 ...
- Homework 4
Homework 4 开发工具:dev c++ 开发语言:c++ 源代码上传至github:上传一直失败... 合作人:曹权 博客地址:http://www.cnblogs.com/c2016/ 这里 ...
- 注册一个GitHub用户的过程
今天,我注册了一个GitHub用户.一开始,不知道GitHub是什么,还以为叫什么"getup",心里还想着什么网站名字这么奇怪,后来在舍友的帮助之下知道了原来是叫GitHub.下 ...