HIT2019春软件构造->Git&Github学习笔记
由于软件构造课程需要,学习使用git,以下作为学习笔记。
一、Git初始化及仓库创建和操作
1.基本信息设置(设置签名)
命令
项目级别/仓库级别:仅在当前本地库范围内有效
git config
系统用户级别:登录当前操作系统的用户范围
git config –global
ls -lA|less 查看文件内容
级别优先级:就近原则->项目级别优先于系统用户级别
1.设置用户名
git config –global user.name ‘hiter1170301015’
2.设置用户邮箱
git config –global user.email ‘1411021410@qq.com’
3.查看设置
git config –list
注:该设置在GitHub仓库主页显示谁提交了该文件
辨析:设置的签名和登录远程库(代码托管中心)的账号和密码没有任何关系
2.初始化一个新的Git库
- 创建文件夹
mkdir test
- 在文件夹内初始化git(创建git仓库)
cd test
git init
注:.git目录中存放的是本地库相关的子目录和文件,不要删除,也不可随意修改
3.向仓库添加文件
touch xx(文件) 创建新文件
git status 查看文件状态
git add hello.c 添加至暂存区
git status
git commit -m ‘提交描述’ 将文件从暂存区提交到仓库
git rm –cached hello.c 将文件从暂存区撤回至工作区
4.修改文件
nano hello.c
重复向仓库添加文件
5.删除仓库文件
1.)删除文件
rm -rf hello.c
2.)从git中删除文件
git rm hello.c
3.)提交操作
注:git rm -f hello.c 同时删除工作区和暂存区文件
6.永久删除文件后找回
找回:回退到某一个记录
7.添加至暂存区的删除文件找回
git reset –hard HEAD
注:删除后可找回,需要文件存在时的状态提交至本地库
git log
git log –pretty=oneline
git log --oneline
git reflog 显示到某个版本需要几步 HEAD@{移动到当前版本需要多少步}
多屏显示控制方式:
空格向下翻页
b向上翻页
q退出
8.前进后退(使用指针head)
基于索引值操作 git reset –hard [局部索引值]
使用^符号:只能后退
git reset –hard HEAD^ 回退一步
git reset –hard HEAD^^ 回退两步
git reset –hard HEAD^^^ 回退三步
使用~符号
git reset –hard HEAD~3 回退三步
注:reset命令的三个参数对比
--soft 仅仅在本地库移动HEAD指针
--mixed 在本地库移动HEAD指针,重置暂存区
--hard 在本地库移动HEAD指针,重置暂存区和工作区
比较文件差异 git diff [文件名]
将工作区中的文件和暂存区中进行比较
结果
git diff [本地库中历史版本] [文件名]
将工作区中文件和本地库历史记录比较
注:不带文件名可以比较多个文件
二、分支
在版本控制过程中,使用多条线同时推进多个任务
优点:同时并行推进多个功能开发,提高开发效率;各个分支在开发过程之中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除后重新开始即可。
git branch -v 查看所有分支
git branch 分支名 新建分支
git checkout 分支名 切换到某一分支
在不同分支上进行修改 修改后哈希值发生改变
1.合并分支
切换到接受修改的分支上(被合并,增加新内容),执行merge命令
将hot_fix合并至master
2.合并冲突 修改不同分支同一文件的同一位置
删除特殊符号,修改文件内容后,即可进行合并。
三、git远程仓库管理
新建别名 git remote add 别名 原名(远程库原地址)
本地库推送至远程库 git push 别名 分支名
1.Git克隆操作
目的:将远程仓库(GitHub对应的项目)复制到本地
git clone 仓库地址
效果:完整的把远程库下载到本地;创建origin远程地址别名;初始化本地库
2.远程库的拉取
pull=fetch+merge
1)git fetch [远程库地址别名] [远程分支名]
2)git merge [远程库地址别名/远程分支名]
两步骤等同于
git pull [远程库地址别名] [远程分支名]
3.协同开发时的冲突解决
两人同时修改同一位置,先提交的人成功。
后提交的人需要先拉取,再推送。(不是基于GitHub的最新版)
若进入冲突状态,进入“分支冲突”解决。
4.跨团队协作
1. )其他用户点击
此时其他用户回到他的主页
当前仓库所有人是其他用户,但是是从我们的团队fork来的
2.)本地bash 进行clone 修改后推送到远程
3.)其他用户
发送具体信息
4. )我们的团队
查看消息内容,可进行对话,代码审核,确定没有问题。
填写本次操作的日志信息
5.远程库的修改可拉取至本地
四、SSH免密登录
1.进入当前用户的家目录 $ cd ~
2.删除.ssh 目录$ rm -rvf .ssh
3.运行命令生成.ssh 密钥目录 $ ssh-keygen -t rsa -C 用户邮箱
4.进入.ssh 目录查看文件列表 $ cd .ssh $ ls -lF
查看id_rsa.pub 文件内容 $ cat id_rsa.pub
5.复制id_rsa.pub 文件内容,登录GitHub,点击用户头像→Settings→SSH and GPG Keys -> New SSH Key 输入复制的密钥信息
6.回到Git bash 创建远程地址别名 $ git remote add origin_ssh ssh地址
7.推送文件进行测试
附:解决git push错误 The requested ULR returned error:403 Forbidden while accessing
私有项目,没有权限,输入用户名密码,或者远程地址采用这种类型
vi .git/config
#将
[remote “origin”]
url=https://github.com/用户名/仓库名.git
修改为:
[remote “origin”]
url=https://用户名:密码@github.com/用户名/仓库名.git
五、github pages 搭建网站
个人站点
访问
搭建步骤
1.创建个人站点->新建仓库(注:仓库名必须是【用户名.github.io】)
2.在仓库下新建index.html的文件即可
注:1.github pages 仅支持静态网页
2.仓库里面仅能有.html文件
Project Pages 项目站点
附:邀请团队成员
HIT2019春软件构造->Git&Github学习笔记的更多相关文章
- git/github学习笔记
郑重提示,本文来自这里,如果喜欢,请关注原作者. 1. git 版本控制系统 相比CVS\SVN优势: - 支持离线开发,离线Repository- 强大的分支功能,适合多个独立开发者协作- 速度块 ...
- 【Git/GitHub学习笔记】基本操作——创建仓库,本地、远程同步等
近日想分享一些文件,但是用度盘又太麻烦了(速度也很恶心).所以突发奇想去研究了下GitHub的仓库,这篇文章也就是一个最最最基础的基本操作.基本实现了可以在GitHub上存储文本信息与代码. 由于我的 ...
- 【Git/GitHub学习笔记】一键更新多个git仓库至远程
因为同时在本地维护几个Github的仓库,每次更新后每个仓库要重复三步提交同步,有点麻烦. 发现可以写.sh文件来实现一键更新. 比如我要更新我的BlogBackup和CodeRepo两个仓库的代码如 ...
- HIT2019春软件构造->重写hashCode()方法
不需要重写equals方法: 1. 一个类的每一个实例本质上都是唯一的. 2. 不关心一个类是否提供了“逻辑相等”的测试功能 3. 超类已经改写了equals方法,并且从超类继 ...
- HIT2019春软件构造->正则表达式语法
普通字符:匹配与之相同的字符 字母.数字.汉字.下划线.没有特殊定义的标点符号. 简单的转义字符: \n 换行符 \t 制表符 \\ 代表\本身 \^,\$,\.,\(,\),\{,\} ...
- git的学习笔记(二):git远程操作
1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公 ...
- Git与GitHub学习笔记(七)Windows 配置Github ssh key
前言 SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell.SSH登录是需要用户 ...
- Git与GitHub 学习笔记
以下信息来源于网络资料,并进行整理与精简 Git是目前世界上最先进的分布式版本控制系统,和svn,vss等一样都是进行版本控制的. GitHub是一个软件项目的托管平台,相当于自己建立的 svn服务器 ...
- git的学习笔记整理
Git学习较好的网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373 ...
随机推荐
- Centos7 下安装mysql5.7.17(glibc版)
一.安装前的检查 1.1 检查 linux 系统版本 [root@localhost ~]# cat /etc/system-release 1.2 检查是否安装了 mysql [root@local ...
- 示例, linq分组
public class HIS_CLIREGISTER : BaseModel{ private String _FBCODE;[StringLength(8)]/// <summary> ...
- 使用PowerDesigner 15进行逆向工程生成数据库图表时,列的注释问题
上一章讲了对数据库进行逆向工程生成图表操作,可能会遇到无法生成注释的问题: 一.解决PowerDesigner逆向工程没有列注释 1.打开PowerDesigner 15,选择菜单:File→Reve ...
- 网站https证书SSL证书相关
网站https证书SSL证书相关 二级域名可以申请证书来使用,主域名申请的单域名证书,二级域名不在https加密保护内,通配符证书可以保护主域名下所有的二级子域名,二级域名等于和主域名使用的同一张证书 ...
- JavaScript笔记1———js的一些常识
一.什么是js? js是一种运行于解释器中的解释型脚本语言. 二.js的组成部分? 1.ECMAScript-----这是js的核心 2.DOM-----让js可以对网页进行操作(例:对页面元素的增. ...
- 回车\r与换行\n
在计算机出现之前,有一种电传机械打字机,每秒可以打10个字符.但是有一个问题,就是打满一行后,需要进行换行,换行是需要0.2秒.如果这时有字符传入,就会丢失两个字符.为了解决这个问题,便定义了两个字符 ...
- vue 学习链接地址
使用Vue.js构建Web应用程序 http://www.jdon.com/48545# 一步步带你做vue后台管理框架(一)——介绍框架 http://www.cnblogs.com/herozho ...
- 信息安全之路-web-xss学习(1)
关于xss反射性漏洞 1.未加任何过滤的 (1).在dvwa平台上可以看到源代码,如下 low级别 为了便于理解,代码如下: <?php // Is there any input? if( a ...
- 从事三年java开发后, 我打算转人工智能
作为一个2015年参加java培训,2016年计算机科学与技术本科毕业后一直从事java开发的程序员来说, 做出这一步真的不容易, 可是我没赶上java最火的时候,反而渐渐感受到了java的没落, 目 ...
- jQuery拼接HTML标签元素
1. append & appendTo 的功能均为:在被选元素结尾(仍在元素内部)插入指定内容,但是内容和选择器的位置不同 (1) append()方法: //在id为element元素内部 ...