以下信息来源于网络资料,并进行整理与精简

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分支。

每一个分支,都是一个独立的版本,拥有自己版本时间线,在不同分支下的操作是相互独立的。

接下来可以参看一下一个例子

  1. 新建分支 dev,并切换到分支

$ git checkout -b dev

$ git branch

可以看到已经切换到了dev这个分支,此时dev分支的内容和master是一样,相当于是从当前master进行了一份copy

  1. 在dev下进行提交

当前在dev下的任何提交不会影响mater分支,只是在dev分支上进行处理

编辑test.txt 文件

运行一下命令,提交

$ git add 'test.txt'

$ git commit -m 'dev'

$ git log

  1. 切换到master,进行查看

$ git switch master

$ git branch

可以看到已经切换到了master

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

  1. 合并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服务器数据已经同步

  1. 模拟A同学修改本地代码

打开github后台,在线修改test.txt,然后提交

输入以下内容:

输入 commit 备注,点击commit changes

此时A同学已经把代码进行了更改,并且提交到服务器

  1. 模拟B同学修改代码

在本地仓库打开test.txt,输入以下内容:masterB-localchange

在命令行输入 提交命令

$ git add 'test.txt'

$ git commit -m 'b-local'

$ git push origin master

在提交到服务器仓库命令时,出现异常

  1. 冲突解决

首先把服务代码拉取下来

$ 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 学习笔记的更多相关文章

  1. git和github学习笔记

    1. 了解Git和Github 2. 使用Github 3. Git安装和使用 4. Git基本工作流程 5. Git初始化及仓库创建和操作 6. Git管理远程仓库 7. Github Pages ...

  2. eclipse使用git及github学习笔记

    项目托管 1.首先需要在github上建立一个远端仓库  点击Create repository后,会在github上建立相应的git仓库,并会出现如下界面: 复制https或者ssh的仓库地址,远端 ...

  3. Git与GitHub学习笔记(七)Windows 配置Github ssh key

    前言 SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell.SSH登录是需要用户 ...

  4. Git与GitHub学习笔记(三).gitignore文件忽略和删除本地以及远程文件

    一.Git提供了文件忽略功能.当对工作区某个目录或者某些文件设置了忽略后,git将不会对它们进行追踪 HELP:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 问题:最近 ...

  5. Git与GitHub学习笔记(八)git如何同时同步提交到码云和GitHub上

    前言: 今天github push代码一直push不上去,打算就备份一份代码带国内开源码云上. Github容易出现的情况是: 国内访问速度比较慢, 如果被墙掉的话,就直接没发使用了 如果开源个PHP ...

  6. Git与GitHub学习笔记(五)一次提交失败的记录

    代码已经跟踪了,添加注释说明,但是总是添加不了 error: pathspec 'live-page'' did not match any file(s) known to git. 重复了好多遍, ...

  7. git and github学习笔记

    1.git的状态分为working status,stage status和commit status.git diff查看的是working status和 stage status之间的不同,gi ...

  8. Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档

    前言 你可能比较熟悉如何用 Github Pages 来分享你的工作,又或许你看过一堂教你建立你的第一个 Github Pages 网站的教程.近期 Github Pages 的改进使得从不同的数据源 ...

  9. Git与GitHub学习笔记(一)如何删除github里面的文件夹?

    按照以下步骤即可(本地删除) 1. git pull you git url2. git checkout 3. rm -r dirName4. git add --all5. git commit  ...

随机推荐

  1. 数据结构--树链剖分准备之LCA

    有关LCA的模板题    传送门 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和 ...

  2. python_day1(初始Python)

    1.编码 ASCII (英文1字节,没中文)=> GB => GBK =>uncoode (中英文都2字节) => utf-8 (可变长字节储存,中文3字节,英文1字节) 2. ...

  3. html5基本页面

    html5基本页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. Redis实战--Jedis实现分布式锁

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 分布式 ...

  5. [WPF] Caliburn Micro学习三 Binding

    Caliburn Micro学习一 Installation Caliburn Micro学习二 Infrastructure 如果说WPF推崇的Binding开辟了一条UI开发新的方式——让写代码的 ...

  6. Spring框架学习笔记(7)——Spring Boot 实现上传和下载

    最近忙着都没时间写博客了,做了个项目,实现了下载功能,没用到上传,写这篇文章也是顺便参考学习了如何实现上传,上传和下载做一篇笔记吧 下载 主要有下面的两种方式: 通过ResponseEntity实现 ...

  7. nyoj 21-三个水杯(BFS)

    21-三个水杯 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:7 submit:18 题目描述: 给出三个水杯,大小不一,并且只有最大的水杯的水是装 ...

  8. nyoj 39-水仙花数

    39-水仙花数 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:35 submit:70 题目描述: 请判断一个数是不是水仙花数. 其中水仙花数定义各 ...

  9. set map symbol

    set 声明 let set = new Set();即创建了一个空的set 赋值 let set = new Set(['张三','李四','王五']); 特性 似于数组,但它的一大特性就是所有元素 ...

  10. 力扣(LeetCode)亲密字符串 个人题解

    给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true :否则返回 false . 示例 1: 输入: A = "ab& ...