Git与GitHub 学习笔记
以下信息来源于网络资料,并进行整理与精简
Git是目前世界上最先进的分布式版本控制系统,和svn,vss等一样都是进行版本控制的。
GitHub是一个软件项目的托管平台,相当于自己建立的 svn服务器,vss服务器,GitHub平台可以建立私人仓库和公开仓库,私人仓库需要收费,公开仓库不收费,但大家都可以免费下载(不可以更改)
接下来就讲解一下如何使用Git与GitHub
(1) 申请GitHub
打开网址:https://github.com/,点击signup,注册一个github账号
(2)下载并安装git
打开网址:https://git-scm.com/downloads

点击windows,选择适合自己的版本,进行安装。

(3)在某个磁盘下新建一个文件夹作为本地仓库

点击右键 “git bash here”
配置自己的名称:
$ git config --global user.name 'test'
$ git config --global user.email 'test@test.com'
查询是否配置成功
$ git config --global user.name
$ git config --global user.email

(3)在GitHub创建仓库
打开网址https://github.com/,并进行登录
点击your repositories,点击new,填写仓库信息,点击create repository



(4)本地仓库和GitHub对接
首先创建密钥,上传到github,进行以后的身份验证
执行命令:$ ssh-keygen -t rsa -C *****@qq.com
这里的邮箱,必须是github账号的邮箱,根据提示进行输入
找到密钥存储位置,打开公钥,复制里面的内容
在github网站把此内容复制到相应窗口:
个人中心->setting->ssh and gpgkeys->new ssh key->add ssh key







(5)github仓库clone到本地
执行一下命令:
$ git clone git@github.com:fengyuzhexing/test.git【自己的git地址】
输入密码
可以看到项目已经clone到本地了






(6)提交到本地仓库
在此目录下新建一个文件 test.txt,输入内容:testbegin,
把文件提交到本地仓库
首先运行pwd命令,看当前所在目录
切换目录到需要提交的文件目录
运行命令:
$ git add 'test.txt'
$ git commit -m 'testfirst'
$ git log【查看提交记录】

(7)提交到远程仓库
$ git push origin master
可以看到github网站已经有新建的文件了

(8)创建分支
分支概念图

通常情况下,github会有一个默认的主分支 master,这个分支一般都是存放最终发布版本的代码,一般情况下会建立一个新的分支 例如 dev,在这个分支上进行开发维护,最后在发布之前,合并到master分支。
每一个分支,都是一个独立的版本,拥有自己版本时间线,在不同分支下的操作是相互独立的。
接下来可以参看一下一个例子
- 新建分支 dev,并切换到分支
 
$ git checkout -b dev
$ git branch
可以看到已经切换到了dev这个分支,此时dev分支的内容和master是一样,相当于是从当前master进行了一份copy

- 在dev下进行提交
 
当前在dev下的任何提交不会影响mater分支,只是在dev分支上进行处理
编辑test.txt 文件

运行一下命令,提交
$ git add 'test.txt'
$ git commit -m 'dev'
$ git log

- 切换到master,进行查看
 
$ git switch master
$ git branch
可以看到已经切换到了master

再打开文件看内容是什么,可以看到这个文件的内容没有变化,还是master分支的数据。

- 合并dev到master
 
$ git merge dev

再次查看 master下的test.txt,可以看到dev数据被合并过来了

删除dev分支
$ git branch -d dev
4 解决冲突
冲突出现的原因:
每个人在本地都有一套自己的源码库,在开发过程中
A 同学 修改了本地的 test.txt,
B 同学 也修改了本地的 text.txt
这时候 A同学 把本地代码 push到 服务器仓库,B同学再想push到服务器仓库,就会出现问题,因为B同学不可以覆盖A同学的更改,所以这时候 B同学就要把代码pull下来就行代码合并,解决完冲突再上传到服务器仓库。
因为之前的改动都是在本地,所以首先将本地的代码先提交到github,运行以下命令
$ git push origin master

打开github网站,可以看到本地数据和git服务器数据已经同步


- 模拟A同学修改本地代码
 
打开github后台,在线修改test.txt,然后提交


输入以下内容:

输入 commit 备注,点击commit changes

此时A同学已经把代码进行了更改,并且提交到服务器
- 模拟B同学修改代码
 
在本地仓库打开test.txt,输入以下内容:masterB-localchange

在命令行输入 提交命令
$ git add 'test.txt'
$ git commit -m 'b-local'

$ git push origin master
在提交到服务器仓库命令时,出现异常

- 冲突解决
 
首先把服务代码拉取下来
$ git pull

找到冲突文件,可以看到这里已经合并了文件,但有问题,需要自己手动编辑

编辑后文件

再次运行以下命令重新上传
$ git add 'test.txt'
$ git commit -m 'hebing'
$ git push origin master
上传成功了

再次打开github网站查看内容,已经同步过去了

(5)版本回退
回退版本命令:$ git reset --hard 【待回退的comitid】
有时候可能提交失败了,必须要回退回某一个版本可以运行以下命令:
$ git log

可以回退到dev当时的版本,运行以下命令
$ git reset --hard 57554

可以看到数据已经回退回去了

再运行 git
$
git reset --hard 8cf6c
可以看到版本又回来了

Git与GitHub 学习笔记的更多相关文章
- git和github学习笔记
		
1. 了解Git和Github 2. 使用Github 3. Git安装和使用 4. Git基本工作流程 5. Git初始化及仓库创建和操作 6. Git管理远程仓库 7. Github Pages ...
 - eclipse使用git及github学习笔记
		
项目托管 1.首先需要在github上建立一个远端仓库 点击Create repository后,会在github上建立相应的git仓库,并会出现如下界面: 复制https或者ssh的仓库地址,远端 ...
 - Git与GitHub学习笔记(七)Windows 配置Github ssh key
		
前言 SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell.SSH登录是需要用户 ...
 - Git与GitHub学习笔记(三).gitignore文件忽略和删除本地以及远程文件
		
一.Git提供了文件忽略功能.当对工作区某个目录或者某些文件设置了忽略后,git将不会对它们进行追踪 HELP:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 问题:最近 ...
 - Git与GitHub学习笔记(八)git如何同时同步提交到码云和GitHub上
		
前言: 今天github push代码一直push不上去,打算就备份一份代码带国内开源码云上. Github容易出现的情况是: 国内访问速度比较慢, 如果被墙掉的话,就直接没发使用了 如果开源个PHP ...
 - Git与GitHub学习笔记(五)一次提交失败的记录
		
代码已经跟踪了,添加注释说明,但是总是添加不了 error: pathspec 'live-page'' did not match any file(s) known to git. 重复了好多遍, ...
 - git and github学习笔记
		
1.git的状态分为working status,stage status和commit status.git diff查看的是working status和 stage status之间的不同,gi ...
 - Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档
		
前言 你可能比较熟悉如何用 Github Pages 来分享你的工作,又或许你看过一堂教你建立你的第一个 Github Pages 网站的教程.近期 Github Pages 的改进使得从不同的数据源 ...
 - Git与GitHub学习笔记(一)如何删除github里面的文件夹?
		
按照以下步骤即可(本地删除) 1. git pull you git url2. git checkout 3. rm -r dirName4. git add --all5. git commit ...
 
随机推荐
- 二、安装JDK - Java软件的安装
			
jdk是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序. 1.安装包的下载:http://pan.baidu.com/s/1mgh58ve (该安装包是绿色的,解压 ...
 - 爬虫学习--Requests库详解 Day2
			
什么是Requests Requests是用python语言编写,基于urllib,采用Apache2 licensed开源协议的HTTP库,它比urllib更加方便,可以节约我们大量的工作,完全满足 ...
 - 去除word文档页眉处的横杠
			
 如何去除上图word文档页眉处的横杠 wps软件使用者 第一步双击页眉,到页眉页脚:  第一步点击上图页眉横线,点击无线型或者删除横线即可:    Microsoft Office 专业增 ...
 - python基础-匿名函数和内置函数
			
匿名函数和内置函数 匿名函数:没有名字,使用一次即被收回,加括号就可以运行的函数. 语法:lambda 参数:返回值 使用方式: 将匿名函数赋值给变量,给匿名函数一个名字,使用这个变量来调用(还不如用 ...
 - Spring Security登录验证流程源码解析
			
一.登录认证基于过滤器链 Spring Security的登录验证流程核心就是过滤器链.当一个请求到达时按照过滤器链的顺序依次进行处理,通过所有过滤器链的验证,就可以访问API接口了. SpringS ...
 - nyoj 95-众数问题 (map)
			
95-众数问题 内存限制:64MB 时间限制:3000ms 特判: No 通过数:16 提交数:29 难度:3 题目描述: 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的 ...
 - C语言|博客作业08
			
这个作业属于哪个课程 C语言程序设计II 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9976 我在这个课程的 ...
 - 更换JDK
			
1.更换JDK 1).卸载原有jdk 检查一下系统中的jdk版本 java -version 显示 java version "1.6.0_24" OpenJDK Runtime ...
 - 从无到有实现搭建vue+ElementUI+less+ES6的开发环境并进行简单的开发的项目
			
项目简介:该项目是基于日常计算宿舍水电煤气费的需求写的,旨在从无到有实现搭建vue+ElementUI+less+ES6的开发环境并进行简单的开发,使用webpack进行代码的编译.压缩和打包,并疏通 ...
 - 带你涨姿势的认识一下 Kafka 消费者
			
之前我们介绍过了 Kafka 整体架构,Kafka 生产者,Kafka 生产的消息最终流向哪里呢?当然是需要消费了,要不只产生一系列数据没有任何作用啊,如果把 Kafka 比作餐厅的话,那么生产者就是 ...