@TOC

远程仓库

开源许可协议

开源并不意味着完全没有限制,为了限制使用者的使用范围和保护作者的权利,每个开源项目都应该遵守开源
许可协议.

常见的 5 种开源许可协议
① BSD(Berkeley Software Distribution)
② Apache Licence 2.0
③ GPL(GNU General Public License)
⚫ 具有传染性的一种开源协议,不允许修改后和衍生的代码做为闭源的商业软件发布和销售
⚫ 使用 GPL 的最著名的软件项目是:Linux
④ LGPL(GNU Lesser General Public License)
⑤ MIT(Massachusetts Institute of Technology, MIT)
⚫ 是目前限制最少的协议,唯一的条件:在修改后的代码或者发行包中,必须包含原作者的许可信息
⚫ 使用 MIT 的软件项目有:jquery、Node.js

远程仓库的访问方式

Github 上的远程仓库,有两种访问方式,分别是 HTTPS 和 SSH。它们的区别是:
① HTTPS:零配置;但是每次访问仓库时,需要重复输入 Github 的账号和密码才能访问成功
② SSH:需要进行额外的配置;但是配置成功后,每次访问仓库时,不需重复输入 Github 的账号和密码
注意:在实际开发中,推荐使用 SSH 的方式访问远程仓库。

将本地仓库上传到远程仓库中

SSh key使用

SSH key 的作用:实现本地仓库和 Github 之间免登录的加密数据传输。
SSH key 的好处:免登录身份认证、数据加密传输。
SSH key 由两部分组成,分别是:
① id_rsa(私钥文件,存放于客户端的电脑中即可)
② id_rsa.pub(公钥文件,需要配置到 Github 中)
如何生成?
① 打开 Git Bash
② 粘贴如下的命令,并将 your_email@example.com 替换为注册 Github 账号时填写的邮箱:
⚫ ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
③ 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹.ssh 目录中生成 id_rsa 和 id_rsa.pub 两个文件
如何配置?
① 使用记事本打开 id_rsa.pub 文件,复制里面的文本内容
② 在浏览器中登录 Github,点击头像 -> Settings -> SSH and GPG Keys -> New SSH key
③ 将 id_rsa.pub 文件中的内容,粘贴到 Key 对应的文本框中
④ 在 Title 文本框中任意填写一个名称,来标识这个 Key 从何而来
检测是否成功

ssh-T git@github.com

执行成功会看到下面命令:

输入 yes 之后,如果能看到类似于下面的提示消息,证明 SSH key 已经配置成功了:

将远程仓库克隆到本地

git clone 远程仓库的地址

git clone 远程仓库的地址

Git介绍

版本控制软件

版本控制软件是一个用来记录文件变化,以便将来查阅特定版本修订情况的系统,因此有时也叫做“版本控制系统”。通俗的理解把手工管理文件版本的方式,改为由软件管理文件的版本;这个负责管理文件版本的软件,叫做“版本控制软件”。

什么是git?

git是一个开源的分布式版本控制系统,是目前世界上最先进的版本控制系统。

git中的三种状态

已修改:修改了文件,但是还没有将结果放在暂存区。
已暂存:对修改了的文件标记,使之包含在下次提交的列表中。
已提交:标识文件已经安全的保存在本地git仓库中。

安装

下载对应的 Git 安装包:https://git-scm.com/downloads

配置用户信息

是设置自己的用户名和邮件地址。因为通过 Git 对项目进行版本管理的时
候,Git 需要使用这些基本信息,来记录是谁对项目进行了操作:

git config --global user.name "name"
git config --global user.email "XXX90@qq.com"

注意:如果使用了 --global 选项,那么该命令只需要运行一次,即可永久生效

通过 git config --global user.name 和 git config --global user.email 配置的用户名和邮箱地址,会被写
入到 C:/Users/用户名文件夹/.gitconfig 文件中。这个文件是 Git 的全局配置文件,配置一次即可永久生效。

检查配置信息

除了使用记事本查看全局的配置信息之外,还可以运行如下的终端命令,快速的查看 Git 的全局配置信息:

git config --list --global


获取帮助:

git help config  //帮助手册
git config -h //命令的快速参考

Git的基本操作

获取git的两种方式

① 将尚未进行版本控制的本地目录转换为 Git 仓库
② 从其它服务器克隆一个已存在的 Git 仓库

在现有目录中初始化仓库

如果自己有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,需要执行如下两个步骤:
① 在项目目录中,通过鼠标右键打开“Git Bash”
② 执行 git init 命令将当前的目录转化为 Git 仓库
git init 命令会创建一个名为 .git 的隐藏目录,这个 .git 目录就是当前项目的 Git 仓库,里面包含了初始的必要
文件,这些文件是 Git 仓库的必要组成部分。

git的文件区四中状态


Git 操作的终极结果:让工作区中的文件都处于“未修改”的状态。

检查文件的状态

git status
git status -s //以精简的方式显示

跟踪新文件

git add 文件名

提交更新

git commit将现在暂存区内容提交到仓库,-m后面跟本次提交消息,用来对内容进一步描述。

git commit -m “本次提交消息”

对已经提交的文件进行修改

当我们对已经提交Git的内容index.html修改,工作区和 Git 仓库中的 index.html 文件内容保持一致。当我们修改了工作区中 index.html 的内容之后,再次运行 git status 和 git status -s 命令,文件 index.html 出现在 Changes not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。

注意:修改过的、没有放入暂存区的文件前面有红色的 M 标记

暂存已修改的文件

目前,工作区中的 index.html 文件已被修改,如果要暂存这次修改,需要再次运行 git add 命令,这个命令
是个多功能的命令,主要有如下 3 个功效:
① 可以用它开始跟踪新文件
② 把已跟踪的、且已修改的文件放到暂存区
③ 把有冲突的文件标记为已解决状态

提交已经暂存的文件

再次运行 git commit -m “提交消息” 命令,即可将暂存区中记录的 index.html 的快照,提交到 Git 仓库中进
行保存。

对撤销的文件修改

销对文件的修改指的是:把对工作区中对应文件的修改,还原成 Git 仓库中所保存的版本。
操作的结果:所有的修改会丢失,且无法恢复!危险性比较高,请慎重操作!

git checkout -- index.html

撤销操作的本质:用 Git 仓库中保存的文件,覆盖工作区中指定的文件

向暂存区中一次性添加多个文件

git add .

取消暂存区的内容

git reset HEAD 要移除的文件名称

跳过暂存区域

Git 标准的工作流程是工作区 → 暂存区 → Git 仓库,但有时候这么做略显繁琐,此时可以跳过暂存区,直接将
工作区中的修改提交到 Git 仓库,这时候 Git 工作的流程简化为了工作区 → Git 仓库。
Git 提供了一个跳过使用暂存区域的方式, 只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把
所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤:

git commit -a -m "提交信息"

移除文件

从 Git 仓库中移除文件的方式有两种:
① 从 Git 仓库和工作区中同时移除对应的文件
② 只从 Git 仓库中移除指定的文件,但保留工作区中对应的文件

git rm -f index.js           //从git仓库和工作区中同时移除
git rm --cached index.css   //只移除git仓库的

忽略文件

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 在这种情况下,我们可
以创建一个名为 .gitignore 的配置文件,列出要忽略的文件的匹配模式。
文件 .gitignore 的格式规范如下:
① 以 # 开头的是注释
② 以 / 结尾的是目录
③ 以 / 开头防止递归
④ 以 ! 开头表示取反
⑤ 可以使用 glob 模式进行文件和文件夹的匹配(glob 指简化了的正则表达式)

glob 模式

所谓的 glob 模式是指简化了的正则表达式:
① 星号 * 匹配零个或多个任意字符
② [abc] 匹配任何一个列在方括号中的字符 (此案例匹配一个 a 或匹配一个 b 或匹配一个 c)
③ 问号 ? 只匹配一个任意字符
④ 在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配
所有 0 到 9 的数字)
⑤ 两个星号 ** 表示匹配任意中间目录(比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)

.gitignore文件例子

# 忽略所有.a文件
*.a#跟踪所有的lib.a,即便前面忽略
!lib.a# 只忽略当前的目录下的TDOO文件,不忽略subdir/TDOO
/TDOO# 忽略任何目录下的builder文件
builder/#忽略doc/notes.txt 但是不忽略doc/server/arch.txt
doc/*.txt

查看提交历史

git log
git log -2 //最近两条
git log -2 --pretty= oneline //在一行上展示最近两条提交历史
git log -2 --pretty = format:"%h | %an |%ar |%s"

回到指定的版本

git reset --hard<CommitID> //根据指定的提交id退回指定版本
git reflog --pretty= oneline //查看历史提交
git reset --hard <CommitOD> //跳转最新的版本

Git分支

在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目
功能的开发,例如:

在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master 的分支。通常我们把这个
master 分支叫做主分支。在实际工作中,master 主分支的作用是:用来保存和记录整个项目已完成的功能代码
因此,不允许程序员直接在 master 分支上修改代码,因为这样做的风险太高,容易导致整个项目崩溃。
功能分支指的是专门用来开发新功能的分支,它是临时从 master 主分支上分叉出来的,当新功能开发且测试
完毕后,最终需要合并到 master 主分支上.

git branch //查看
git branch 分支名称             //创建新分支
git chechout login          //切换指定分支的名称
git branch -d 分支名称      //删除
git checkout -b 分支名称        //快速切换

分支名字前面的 * 号表示当前所处的分支。

合并分支

功能分支的代码开发测试完毕之后,可以使用如下的命令,将完成后的代码合并到 master 主分支上:

假设要把 C 分支的代码合并到 A 分支,
则必须先切换到 A 分支上,再运行 git
merge 命令,来合并 C 分支!

遇到冲突时的分支合并

如果在两个不同的分支中,对同一个文件进行了不同的修改,Git 就没法干净的合并它们。 此时,我们需要打开
这些包含冲突的文件然后手动解决冲突。

将本地分支推送到远程仓库

如果是第一次将本地分支推送到远程仓库,需要运行如下的命令:

// -u表示把本地的分支和远程分支进行关联,只在第一次推送的时候需要带参数-u
git push -u 远程仓库的别名 本地分支名称:远程仓库的分支名称
git push -u origin payment:pay//如果希望远程分支的名称和本地名称保持一致,可以对命令进行简化:
git push -u origin payment

注意:第一次推送分支需要带 -u 参数,此后可以直接使用 git push 推送代码到远程分支

查看远程仓库中所有的分支列表

git remote show 远程仓库名称

跟踪分支

跟踪分支指的是:从远程仓库中,把远程分支下载到本地仓库中。需要运行的命令如下

# 从远程仓库把对应的分支下载到本地仓库,保持名称一致
git checkout 远程仓库分支名称# 从远程仓库中吧对应的分支下载下来,并把下载的本地分支重名名。
git checkout -b 远程仓库名称/远程分支名称

拉取远程分区的最新的代码

可以使用如下的命令,把远程分支最新的代码下载到本地对应的分支中:

git pull

删除远程分支

git push 远程仓库名称 --delete 远程仓库分支名称

总结

① 初始化 Git 仓库的命令
⚫ git init
② 查看文件状态的命令
⚫ git status 或 git status -s
③ 一次性将文件加入暂存区的命令
⚫ git add .
④ 将暂存区的文件提交到 Git 仓库的命令
⚫ git commit -m "提交消息"① 能够掌握 Git 中基本命令的使用
⚫ git init
⚫ git add .
⚫ git commit –m "提交消息"
⚫ git status 和 git status -s
② 能够使用 Github 创建和维护远程仓库
⚫ 能够配置 Github 的 SSH 访问
⚫ 能够将本地仓库上传到 Github
③ 能够掌握 Git 分支的基本使用
⚫ git checkout -b 新分支名称
⚫ git push -u origin 新分支名称
⚫ git checkout 分支名称
⚫ git branch

git的使用、ssh生成、github、Git分支操作相关推荐

  1. Github常用分支操作

    文章目录 Github常用分支操作 一.在GitHub上修改分支名称 二.在Github创建新的分支 三.在Github删除分支 四.在Github切换默认分支 Github常用分支操作 一.在Git ...

  2. Git 高频命令、版本回退、分支操作、文件修改删除、撤销、标签、远程仓库推送、拉取

    1. 高频命令 git add 将工作文件修改提交到本地暂存区. git add . 将所有修改过的工作文件提交暂存区(常用). git commit -m "XXX" 为本次修改 ...

  3. Git学习之路(6)- 分支操作

    ▓▓▓▓▓▓ 大致介绍 几乎所有的版本控制系统都会支持分支操作,分支可以让你在不影响开发主线的情况下,随心所欲的实现你的想法,但是在大多数的版本控制系统中,这个过程的效率是非常低的.就比如我在没有学习 ...

  4. git连接通过ssh连接github

    1.首先产生一个rsa的私钥和公钥 ssh-keygen -t rsa -C "15950093214@163.com"  //你的github邮箱帐号 执行完该语句之后,会在默认 ...

  5. 分布式管理控制系统Git与项目托管平台Github相关概念、工作流程与操作方法

    尐轩web前端技术博客 -- 丛培森 Payen S.Tsung --There's no place like 127. 0. 0. 1 目录视图 摘要视图 订阅 CSDN学院招募微信小程序讲师啦  ...

  6. 分布式版本控制系统Git与项目托管平台Github相关概念、操作方法、开发流程与常用命令

    tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( 'ω' )و [本文源址:http://blog.csdn.net/q1056843325/article/details/54667602 ...

  7. Git学习5 GitLab与GitHub操作

    目录 1. GitLab与GitHub介绍 gitLab介绍 Github gitLab 注册 安装 gitLab 服务器 2. 私有GitLab服务器部署 3. GitLab创建仓库 4. GitL ...

  8. Git基础知识教程整理(Git基本操作)

    Git简介 Git是目前世界上最先进的分布式版本控制系统(没有之一). Linux之父Linux用C语言写了Git分布式版本控制系统. 分布式版本控制系统与集中式版本控制系统的区别 区别 分布式 集中 ...

  9. ssh协议(git和github gitee 之间的传输协议)

    全面概述Gitee和GitHub生成/添加SSH公钥 SSH公钥就是git生成的一个给gitee 或者 github认证的锁,可以安全传输数据的那种 git本地仓库 $ mkdir gitrep // ...

  10. Git 分支操作、Git 团队协作机制、GitHub 操作

    文章目录 第 4 章 Git 分支操作 4.1 什么是分支 4.2 分支的好处 4.3 分支的操作 4.3.1 查看分支 4.3.2 创建分支 4.3.3 修改分支 4.3.4 切换分支 4.3.5 ...

最新文章

  1. 从谷歌的招聘中,我们学到了什么?
  2. WRF,WPS,WRF-Chem安装及编译步骤及bug总结(1)
  3. adb连接夜神模拟器
  4. DP 状态机模型 AcWing算法提高课 详解
  5. 宿主机linux,宿主机上安装小linux
  6. spring boot+mybatis整合
  7. WinCE中得Catalog Items前的标记图标的意义总结
  8. C++学习之路 | PTA乙级—— 1047 编程团体赛 (20 分)(精简)
  9. python为什么import不了_解决python有时候import不了当前的包问题
  10. 初学FineReport(二)
  11. 计算机图形学 实现鼠标拖拽图元
  12. 能搞垮你的不止是同行
  13. HDU 2844 Coins (多重背包)
  14. php date()时间不对,PHP DATE( )函数与系统时间差8小时解决办法
  15. FFT(快速傅里叶变换):UVAoj 12298 - Super Poker II
  16. day23 python学习 类 人狗大战
  17. android adb 环境变量配置,Windows如何配置Android的ADB环境变量
  18. 火狐安装网页视频下载插件(Video DownloadHelper)
  19. PS 模块BAPI新建修改项目、WBS、网络、作业 (二)
  20. python表示倍数_python代表倍数

热门文章

  1. 实践论:论认识和实践的关系
  2. OSChina 周四乱弹 —— 八字欠备,五行缺胎
  3. matlab中min函数
  4. INT_MAX和INT_MIN的含义和用法
  5. 从淘宝P5到天猫总监,她的阿里十年发生了什么?
  6. 隧道调频广播覆盖系统技术方案
  7. freemarker导出excel单元格内换行
  8. device or resource busy问题处理
  9. Kernel 日志缓存大小修改
  10. mongodb数据库添加用户名密码以及忘记密码重置操作