Frank's blog Frank's blog
首页
  • Java SE
  • Java Web
  • Java EE
  • HTML
  • CSS
技术
Python
  • 友情链接
关于
索引
GitHub (opens new window)

Master Frank

斯人若彩虹,遇上方知有
首页
  • Java SE
  • Java Web
  • Java EE
  • HTML
  • CSS
技术
Python
  • 友情链接
关于
索引
GitHub (opens new window)
  • Git

    • Git与Github使用
      • 1、了解Git和GitHub
        • 1.1 什么是Git
        • 1.2 什么是版本控制系统
        • 1.3 什么是GitHub
        • 1.4 Git和GitHub的关系
        • 1.5 为什么学习GitHub
      • 2、使用GitHub
        • 2.1 基本概念
      • 3、Git的安装和使用
        • 3.1 目的
        • 3.2 下载安装
      • 4、Git的基本工作流程
        • 4.1 Git工作区域
        • 4.2 向仓库添加文件流程
        • 4.3 添加远程仓库工作流程
      • 5、Git初始化及仓库创建和操作
        • 5.1 基本信息设置
        • 5.2 初始化一个Git仓库
        • 5.3 向仓库添加文件
        • 5.4 修改仓库文件
        • 5.5 删除仓库文件
      • 6、Git管理远程仓库
        • 6.1 使用远程仓库的目的
        • 6.2 SSH验证
        • 6.2 Git克隆操作
        • 6.3 将本地仓库同步到git远程仓库中
        • 6.4 git push时可能遇到的问题
      • 7、Git常用命令
        • 7.1 创建仓库命令
        • 7.2 提交与修改
        • 7.3 提交日志
        • 7.4 远程操作
      • 8、Github Pages 搭建网站
        • 8.1 创建一个仓库,在仓库中上传网页文件
        • 8.2 在该仓库中点击setting,在左侧找到pages
        • 8.3 选择对应的分支和根目录,然后点击save
        • 8.4 稍等片刻,Github Page的访问地址就会出来了
        • 8.5 访问这个地址,就能显示index.html的页面了
      • 9、Git和SVN的区别(面试考点)
    • 利用Github Action实现Github到Gitte的持续同步
  • 技术博客

  • 技术
  • Git
Frank
2021-10-28
目录

Git与Github使用

# Git和Github

  • 1、了解Git和GitHub
    • 1.1 什么是Git
    • 1.2 什么是版本控制系统
    • 1.3 什么是GitHub
    • 1.4 Git和GitHub的关系
    • 1.5 为什么学习GitHub
  • 2、使用GitHub
    • 2.1 基本概念
  • 3、Git的安装和使用
    • 3.1 目的
    • 3.2 下载安装
  • 4、Git的基本工作流程
    • 4.1 Git工作区域
    • 4.2 向仓库添加文件流程
    • 4.3 添加远程仓库工作流程
  • 5、Git初始化及仓库创建和操作
    • 5.1 基本信息设置
    • 5.2 初始化一个Git仓库
    • 5.3 向仓库添加文件
    • 5.4 修改仓库文件
    • 5.5 删除仓库文件
  • 6、Git管理远程仓库
    • 6.1 使用远程仓库的目的
    • 6.2 SSH验证
    • 6.2 Git克隆操作
    • 6.3 将本地仓库同步到git远程仓库中
    • 6.4 git push时可能遇到的问题
  • 7、Git常用命令
    • 7.1 创建仓库命令
    • 7.2 提交与修改
    • 7.3 提交日志
    • 7.4 远程操作
  • 8、Github Pages 搭建网站
    • 8.1 创建一个仓库,在仓库中上传网页文件
    • 8.2 在该仓库中点击setting,在左侧找到pages
    • 8.3 选择对应的分支和根目录,然后点击save
    • 8.4 稍等片刻,Github Page的访问地址就会出来了
    • 8.5 访问这个地址,就能显示index.html的页面了
  • 9、Git和SVN的区别(面试考点)

# 1、了解Git和GitHub

# 1.1 什么是Git

  • Git是一款免费、开源的分布式版本控制系统(https://www.git-scm.com)
  • Git可以有效、高速的处理从很小到非常大的项目版本管理。
  • Git最初由 Linux 之父 Linus Trovalds(林纳斯·托瓦兹) 开发,用作Linux内核代码的管理。

# 1.2 什么是版本控制系统

版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况得系统。

具体功能:

  • 记录文件的所有历史变化
  • 随时可恢复到任何一个历史状态
  • 多人协作开发或修改
  • 错误恢复

# 1.3 什么是GitHub

  • Github是全球最大的社交编程及代码托管网站(https://github.com/)。
  • Github可以托管各种git库,并提供一个web界面(用户名.github.io/仓库名)。
  • Github作为开源代码库以及版本控制系统,Github拥有百万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。

# 1.4 Git和GitHub的关系

Git是版本控制软件

Github是项目代码托管的平台,借助git来管理项目代码

# 1.5 为什么学习GitHub

学习优秀的开源项目

关注行业前辈了解最新的行业动态

如:

PHP 鸟哥,前新浪总架构师 https://github.com/laruence

国内最流行的PHP开发框架(thinkphp):https://github.com/top-think/thinkphp

全球最流行的PHP框架(laravel):https://github.com/laravel/laravel

PHP编码规范(FIG-PHP):https://www.gitbook.com/book/jifei/php-fig-standards/details

# 2、使用GitHub

# 2.1 基本概念

  • 仓库(Repository):仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库。

  • 收藏(Star):收藏项目,方便下次查看。Star的数量即为收藏项目的人数,在 GitHub 上如果你有一个项目获得100个star都算很不容易了!

  • 复制克隆项目(Fork):这个不好翻译,如果实在要翻译我把他翻译成分叉,什么意思呢?你开源了一个项目,别人想在你这个项目的基础上做些改进,然后应用到自己的项目中,这个时候他就可以 Fork 你的项目(打开项目主页点击右上角的fork按钮即可),然后他的 GitHub 主页上就多了一个项目,只不过这个项目是基于你的项目基础(本质上是在原有项目的基础上新建了一个分支),他就可以随心所欲的去改进,但是丝毫不会影响原有项目的代码与结构。

    img

  • 发起请求(Pull Request):发起请求,这个其实是基于 Fork 的,还是上面那个例子,如果别人在你基础上做了改进,后来觉得改进的很不错,应该要把这些改进让更多的人收益,于是就想把自己的改进合并到原有项目里,这个时候他就可以发起一个 Pull Request(简称PR) ,原有项目创建人,也就是你,就可以收到这个请求,这个时候你会仔细review他的代码,并且测试觉得OK了,就会接受他的PR,这个时候他做的改进就会加入原有项目了。

  • 关注(Watch):如果你 Watch 了某个项目,那么以后只要这个项目有任何更新,你都会第一时间收到关于这个项目的通知提醒。

  • 事物卡片(Issue):发现代码BUG,但是目前没有成型代码,需要讨论时用

# 3、Git的安装和使用

# 3.1 目的

使用Git管理GitHub托管项目代码

# 3.2 下载安装

1.Git官网下载:https://www.git-scm.com/download/win

2.双击安装

3.选择安装的工作目录

img

4.选择组件

img

5.开始菜单目录名设置

img

6.选择使用命令行环境

img

7.以下三步默认,直接点击next

img

img

8.等待安装

img

img

9.检验是否安装完成

image-20210717083120738

# 4、Git的基本工作流程

# 4.1 Git工作区域

# 4.2 向仓库添加文件流程

git status:查看文件状态

# 4.3 添加远程仓库工作流程

img

# 5、Git初始化及仓库创建和操作

# 5.1 基本信息设置

1. 设置用户名
git config --global user.name 'Master-Frank'

2. 设置用户名邮箱
git config --global user.email '1486493017@qq.com'
1
2
3
4
5

# 5.2 初始化一个Git仓库

# 5.2.1 创建文件夹

img

# 5.2.2 在文件夹内初始化git(创建git仓库)

cd 文件夹名
git init
1
2

image-20210722172204416

# 5.3 向仓库添加文件

  1. 创建/添加文件

    touch 文件名.文件后缀名
    
    1

    image-20210722163909422

  2. 将文件添加到暂存区

    git add 文件名.文件后缀名
    //如果要将全部文件提交到暂存区,可以使用"git add ."
    
    1
    2

    image-20210722171840435

  3. 将文件从暂存区提交到仓库

    git commit -m '提交描述'
    
    1

    image-20210722173552703

# 5.4 修改仓库文件

  1. 修改文件

    vi 文件名.文件后缀名 //使用vim编辑器修改文件内容。'i'编辑,':wq'保存并退出
    cat 文件名.文件后缀名 //查看文件内容
    
    1
    2

image-20210722185012498

  1. 添加至暂存区

    git add 文件名.文件后缀名
    
    1

    image-20210722190149852

  2. 提交到仓库

    git commit -m '提交描述'
    
    1

    image-20210722190430576

# 5.5 删除仓库文件

rm 文件名.文件后缀名
git rm 文件名.文件后缀名
git commit -m '提交描述'
1
2
3

image-20210722200509829

# 6、Git管理远程仓库

# 6.1 使用远程仓库的目的

作用:备份,实现代码共享集中化管理

img

img

# 6.2 SSH验证

要使本机能关联远程仓库,首次需要SSH验证。

# 6.2.1 创建SSH key

首先在本机的用户主目录C:\Users\你的电脑账户名下查看有没有.ssh目录。如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。

如果没有,打开Git Bash,输入下面的命令:

# 创建SSH Key
ssh-keygen -t rsa -C "邮件地址"
1
2

会返回下面的内容。括号中的路径即会生成SSH key的路径。按回车。

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/你的电脑账户名/.ssh/id_rsa):
1
2

然后返回下面的内容会让你设置密码。一般情况不需要设置密码,直接回车。

Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
1
2

最后返回类似下面的内容:

The key fingerprint is:
SHA256:++Ik2wTYxuEz5UP/G+XEo7ju8pM8SZhol0ifwdZa15U
The key's randomart image is:
+---[RSA 2048]----+
|                .|
|               E.|
|      ..o.   . . |
|     =.=+.o ...  |
|    ..O=SO..  =  |
|     .++Oo.o = . |
|     ...+o.o+ .  |
|       *o.*. o   |
|      ..o**o.    |
+----[SHA256]-----+
1
2
3
4
5
6
7
8
9
10
11
12
13
14

说明你的SSH key已经生成。打开C:\Users\你的电脑账户名\.ssh,可以看到id_rsa和id_rsa.pub这两个文件已经生成。

image-20211028101621251

用记事本打开id_rsa.pub,复制全部内容。

接下来到Github上验证。打开Github,点击右上角的头像,点击settings

image-20211028102419781

点击左侧的SSH and GPG keys,再点击右上的New SSH key。

image-20211028102543746

此处要输入两个内容:

  • title:输入任意一个名字,建议与你当前用的电脑有关
  • Key:输入刚刚在id_rsa.pub中的内容

然后点击Add SSH key

image-20211028103049913

最后还需要输入一次GitHub的密码,SSH验证就成功啦。

# 6.2 Git克隆操作

# 6.2.1 目的

将远程仓库(github对应的项目)复制到本地

# 6.2.2 代码

git clone 仓库地址
1

仓库地址由来:

img

克隆过程:

image-20210723000654499

image-20210723000920086

# 6.3 将本地仓库同步到git远程仓库中

将本地仓库提交到GitHub。如果有添加或修改,需要先添加到暂存区并提交到本地仓库。

git push
1

image-20210723122959562

可以看到仓库的全部内容已经同步到了GitHub上。

image-20210723123723538

# 6.4 git push时可能遇到的问题

# 6.4.1 无法同步,或显示没有权限

vi .git/config (也可以找到对应文件用记事本打开.git下的config)

然后将

[remote "origin"] 
    url = https://github.com/用户名/仓库名.git
1
2

修改为:

[remote "origin"]
    url = https://用户名:密码@github.com/用户名/仓库名.git
1
2

如下图

image-20210723124735271

# 6.4.2 显示shallow update not allowed

image-20210723125102244

这是由于克隆的原仓库限制浅克隆后无法上传到另一个仓库。

有两个解决办法:

  1. 最简单的方法是将目录下的.git文件夹删除,重新git init,然后git add .,git commit -m '提交描述',git push即可
  2. 如果已经提交了好几次并且不想丢失这些提交,可以使用git filter-branch --all,这样就能去掉克隆下来的限制提交的grafted标记了,就可以愉快的git push了

# 6.4.3 显示Could not resolve host或Connection was reset,errno10054

这是网络的问题,可以试多几次。如果都不行,可以尝试科学上网(你懂的)

image-20210723155054475

# 6.4.4 显示Updates were rejected because the remote contains work that you do not have locally

这是因为GitHub上的仓库已经被修改,本地的仓库不是最新的。

需要先执行git pull同步GitHub上的仓库,再重新修改后push

image-20210723193554088

# 6.4.5 git pull出错,显示Pulling is not possible because you have unmerged files.

image-20210723194110615

这是因为本地的某些文件和GitHub上产生冲突。本地的push和merge会形成MERGE-HEAD(FETCH-HEAD), HEAD(PUSH-HEAD)这样的引用。

解决方法:先执行git reset --hard FETCH_HEAD,冲突就会解决,再重新执行git pull即可。

image-20210723194625765

# 7、Git常用命令

# 7.1 创建仓库命令

命令 说明
git init 初始化仓库
git clone 拷贝一份远程仓库,也就是下载一个项目

# 7.2 提交与修改

命令 说明
git add 添加文件到仓库
git status 查看仓库当前的状态,显示有变更的文件
git diff 比较文件的不同,即暂存区和工作区的差异
git commit 提交暂存区到本地仓库
git reset 回退版本
git rm 删除工作区文件
git mv 移动或重命名工作区文件

# 7.3 提交日志

命令 说明
git log 查看历史提交记录
git blame 以列表形式查看指定文件的历史修改记录

# 7.4 远程操作

命令 说明
git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并

# 8、Github Pages 搭建网站

GitHub Pages只支持搭建静态网页。

# 8.1 创建一个仓库,在仓库中上传网页文件

image-20210727105214704

# 8.2 在该仓库中点击setting,在左侧找到pages

image-20210727103952780

# 8.3 选择对应的分支和根目录,然后点击save

# 8.4 稍等片刻,Github Page的访问地址就会出来了

image-20210727104558852

# 8.5 访问这个地址,就能显示index.html的页面了

image-20210727105632981

# 9、Git和SVN的区别(面试考点)

  1. Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
  2. **Git 把内容按元数据方式存储,而 SVN 是按文件:**所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
  3. **Git 分支和 SVN 的分支不同:**分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
  4. **Git 没有一个全局的版本号,而 SVN 有:**目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
  5. **Git 的内容完整性要优于 SVN:**Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

img

在Github中编辑 (opens new window)
上次更新: 2021/11/04, 10:42:18
利用Github Action实现Github到Gitte的持续同步

利用Github Action实现Github到Gitte的持续同步→

最近更新
01
面试问题套路
04-21
02
Mysql多版本安装
05-28
03
Go语言基础类型
05-04
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Master Frank | 粤ICP备2021148573号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×