关于Git和GitHub的一些知识
git是分布式的版本控制工具,可离线,svn是集中式的,要联网操作.集中式的所有数据都放在服务器端,如果服务器宕机,则历史记录也可能就丢失了,这叫做单点故障.分布式的数据可直接保存在客户端.
为何要版本控制呢?比如服务端有一段代码,小明和小红都准备对它进行修改,小明先改好并上传更新,过一会儿小红也改好了,也上传更新了,所以最终服务器端保留的仅有小红的代码,小明的被覆盖了,这是我们不愿看到的.
git功能很强大:
- 允许多人并行协同修改服务端的文件;
- 数据可以备份,能保存提交过的历史状态,历史记录;
- 版本管理,采用文件系统快照的方式,不保存重复数据,节约存储空间,提高运行效率;
- 对团队中参与开发的人员进行权限控制,对团队外开发者贡献的代码进行审核;
- 分支管理,多线并行开发,提高效率.
至于git的命令,跟linux一样的风格,常用的有:
1. git init 初始化
2. git add file 添加到暂存区
至于 warning: LF will be replaced by CRLF in good.txt. 用回车换行替换换行符
git config core.autocrlf 我在windows上使用,True即可.
3. git rm --cached file 从暂存区移除
4. git status 查看状态
5. git commit file 提交到本地库
提交会提示你添加注释,会调用编辑器,我的调用了sublime,不太习惯,还是喜欢vim,通过命令git config --global core.editor vim 实现更改.
6. cat file 查看文件内容,显示在主控台
7. git commit -m "注释" file 直接添加注释提交到本地库,就不用调用vim编辑器了
8. git log 查看版本
若多屏显示,则 空格向下翻页,b向上翻,q退出
9. git reflog 简洁些, 有HEAD值 ,HEAD相当于指针,指向版本,操作它可实现版本切换
10. git reset --hard 部分哈希值如(9a4ehb3) 切换到对应的版本
11. git reset --hard HEAD^ 回退一个版本,加几个^就回退几个版本
12. git reset --hard HEAD~3 回退三个版本
通过命令git help reset 可以看出,这里的hard参数,表示将工作区,暂存区,本地库三者都回退到某个版本,对应的还有soft,mixed参数,soft只回退本地库,mixed回退本地库和暂存区
13. rm file 删除文件
执行删除文件命令后,要提交到暂存区,再提交到版本库,才会在本地显示删除,若要找回,则回退到上个版本即可, git里的版本历史记录永久存在.若只提交到暂存区,则撤销删除: git reset --hard HEAD . 这些删除找回操作都要求 文件已经存在于本地库.
14. git diff file 将工作区的文件与本地库进行比较
git diff HEAD^ file 与上个版本比较,git对文件以"行"为对象,修改某一行,则显示删除某一行后新增某一行.
15. git branch -v 产看分支
16. git branch name 新建分支
17. git checkout name 切换分支
18. git merge branch_name 将别的分支合并到当前分支
多分支修改同文件合并时会产生冲突,编辑冲突文件,删除特殊行,然后git add file,git commit -m "注释" 即可.
19. git remote add origin 远程库ip地址 给地址起个别名
20. git push origin master -u 推送到远程库master分支
21. git clone 远程库地址 克隆远程库到本地,自动初始化
协作开发要先得到邀请,然后才能将克隆下来的文件修改后push到远程库
22. git pull origin master:branchtest 将远程主机origin的master分支拉取过来,与本地的branchtest分支合并。
如果将冒号和后面的branchtest去掉,则表示将远程origin仓库的master分支拉取下来与本地当前分支合并。等价于:
git fetch origin master 获取并下载远程库最新状态
git merge origin/master 与本地的当前分支合并
对于项目的跨团队协作开发:
A团队创建了项目的远程库aa,要求B团队也参与进来,B用自己的GitHub账号登陆后点击A的远程库,Fork一下,相当于把库aa复制到自己的账号里,再clone到本地,修改,添加,提交,推送,完成后像A发送pull request, 附上说明信息,A收到请求后, 查看修改,审核代码,再Merge pull request, 合并.
关于Git和GitHub的一些知识的更多相关文章
- 知识扩展——Git和GitHub的区别
一直以为Git和GitHub是一个东西,直到我看到这个解释.... 转载自:git与github区别与简介 一开始接触git或是github的程序员可能搞不太清楚这些名词到底指代的是什么,所以在这里稍 ...
- Ubuntu下使用Git和GitHub
刚刚学习git和github,网上的知识太杂太乱.照着折腾了很长的时间,都没有搞出个结果,心里十分痒痒,最后终于在github上看到成果.本文适合刚刚接触github但是急于想看到效果的同学,当然gi ...
- Git 一些关于 Git、Github 的学习资源
一些关于 Git.Github 的学习资源 昨天浏览 Github 的是时候发现了 Githug 这个游戏,这个游戏用来帮助菜鸟们学习使用 Git 的. Githug is designed to g ...
- get最简单直接粗爆git与github教程
Git是分布式版本控制系统(可以理解为文件管理拓展工具) github一个在线文件托管系统(可以理解为一个在线云盘) 准备工作,在git官网下载git软件件,安装git软件,以windows.为例,下 ...
- git和github的第一次接触
我的github的helloworld链接: https://github.com/xuziqian111/hello-world/blob/master/helloworld.java 我的gith ...
- 使用git和github管理自己的项目---基础操作学习[转]
原文: https://segmentfault.com/a/1190000003728094 我是通过看廖雪峰的git教程学习的,真的是极好的,以下是我学习过程中的总结,记录下来,方便自己参考以熟悉 ...
- 使用git和github进行协同开发流程
(本文假设各位已经对基本git的基本概念.操作有一定的理解,如无相关git知识,可以参考Pro Git这本书进行相关的学习和练习) 很多项目开发都会采用git这一优秀的分布式版本管理工具进行项目版本管 ...
- Git和GitHub相关
组员从GitHub上下载项目并上传项目的步骤如下 .组员接收到组长发的项目地址,组员需要从GitHub上把项目克隆下来,首先组员 需要在本地的一个文件夹里打开git,然后运行如下代码:git clon ...
- 适合小白的大白话讲解--->Git与Github的区别
本文由 伯乐在线 - 听风 翻译,艾凌风 校稿.未经许可,禁止转载!英文出处:Red Radger.欢迎加入翻译组. 本文旨在使用通俗易懂的文字,讲解版本控制背后的理论,以便你能对程序员们如何工作有个 ...
随机推荐
- Django之models模块
一.字段 1. AutoField(Field) int自增列,必须填入参数 primary_key=True 2.BigAutoField(AutoField) bigint自增列,必须填入参数 p ...
- vue响应式数据变化
vue响应式数据变化 话不多说,先上代码: //拷贝一份数组原型,防止修改所有数组类型变量的原型方法 let arrayProto = Array.prototype;// 数组原型上的方法 let ...
- django基础之day09,多对多创建数据表的三种方式
多对多三种创建方式 1.全自动(用在表关系不复杂的一般情况) class Book(models.Model): title=models.CharField(max_length=32) 多对多关系 ...
- Redis-API
Redis-API 简介 Redis 是一个基于内存的高效的键值行非关系型数据库,存取效率极高. python提供了两个类:分别为Redis和StrictRedis来实现Redis的命令操作.Redi ...
- 面试连环炮系列(二十一):你们的项目怎么使用kafka
你们的项目怎么使用kafka? 我们采用kafka进行日志采集,准确点说是ELK方案,即elasticsearch + logstash + kibana + kafka.通过Spring AOP的方 ...
- LeetCode刷题总结-树篇(上)
引子:刷题的过程可能是枯燥的,但程序员们的日常确不乏趣味.分享一则LeetCode上名为<打家劫舍 |||>题目的评论: 如有兴趣可以从此题为起点,去LeetCode开启刷题之 ...
- Linux配置免密登陆
可能很多新手在配置免密登陆的时候第一次会经常没有配成功,会报错. 在这里将为大家演示最简洁且能一次配置成功的教程 首先以3台机器为例: 192.168.3.102 master 192.168.3.1 ...
- spring boot 2 + shiro 实现简单的身份验证例子
Shiro是一个功能强大且易于使用的Java安全框架,官网:https://shiro.apache.org/. 主要功能有身份验证.授权.加密和会话管理.其它特性有Web支持.缓存.测试支持.允许一 ...
- [Linux] linux路由表
路由表用于决定数据包从哪个网口发出,其主要判断依据是目标IP地址Linux路由表其实有2个主要概念:按顺序走路由策略,在路由策略对应的路由表中匹配规则路由策略(rule)路由表(table) 查看所有 ...
- 关联mysql失败_Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezon'
关联mysql失败_Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezon’ 时区错误,MySQL默认 ...