Git学习笔记

Git

  • 文件操作回退不方便
  • 文件的管理部方便
  • 文件的存储是不安全

什么是Git?

  • Git是一款源代码管理工具(版本控制工具)
  • php JavaScript
  • Git之父: linus 林纳斯托瓦茨
  • linux之父:linus
  • linus的大学教授 andrew 安德鲁-> 操作系统课程,unix–> 闭源,
    • andrew 觉得,你不给我,我自己开发 –>minix 非常小的一个系统–>很多设备部兼容
    • linus 希望去让minix能够通过一些插件,来让更多PC使用(纯洁)
    • linus 觉得,你不给我,我自己做–> 从而开发了linux
  • git bitkeeper 代码管理工具,收费,linus 手动来合并,
    • 你找我收钱,不给我用,我就自己开发
    • git 版本管理工具
    • linux 和 git 都是开源的,可以让更多的开发者来分享和贡献 redcap

安装

  • 注意事项及相关选项
  • 缓存项需要去掉钩钩

git起步

  • 任意目录,点击鼠标右键,出现 git bash || git GUI(图形化) 就证明安装好了
  • 查看版本git --version
  • 初始化git目录
  • 初始化仓库git init
    • 当前目录下生成了一个.git的文件夹
    • .git内部存储了我们本地仓库的一些数据信息,以及对应关系(我们不需要了解)
    • 默认创建了一个master的东西–> 叫做分支–> master分支就是主分支
  • 查看状态
分布式和集中式的区别
  • 分布式:在有网的时候,连接服务器,在本机就有了本地仓储,这个是可以没网提交,并且可以给服务器做一个备份
  • 集中式:由于资源全在一个服务器上,万一服务器出现问题,大家都就可以版本可用
  • 集中式也可以下载代码,但是版本的关系没有,而分布式,可以下载代码,和版本关系进行多端的备份

玩转工作区和暂存区

  • 进暂存区
    • git add ./a.txt || . 代表所有文件及子文件
  • 出暂存区
    • git rm --cached [文件名]
    • git rm --cached -r ./文件夹名称
      //–cached表示只删除暂存区内容,不删除文件本身,-r表示递归删除所有的子文件
  • 查看文件内容 cat 文件名
  • 清屏 clear
  • 如果出现VIM编辑模式:ESC : q 回车

“ 提交成功
[master (root-commit) cf885a1] 我提交了一次
1 file changed, 1 insertion(+)
create mode 100644 a.txt

git提交代码流程

  • 1:创建文件夹
  • 2:初始化Git仓库
  • 3:创建了一个a.txt
    • untracked 没有与git产生关联
  • 4: 添加到暂存区 git add ./a.txt
    • 显示 new file: a.txt 绿色可以继续进行
  • 5: 提交数据 git commit -m "这是提交说明" // -M 是message缩写
    • 简写方式 git commit -a -m "这是我的第二次提交"
    • 以上表达式等于 git add . git commit -m "值是我的第二次提交"
    • 修改了数据 此时又出现红字 modified :a.txt
    • 每次修改后,都需要将文件重新添加到暂存区~
自报家门
  • 创建用户名和email : git config user.name "tjx"
    • 查看配置信息 git config --list
    • 删除变量 git config --unset user.name
    • email : git config user.email "tjx@qq.com" //规范是用户名和email一致
    • 以上添加用户,代表着是当前git仓库的用户,
    • 你只要在别的目录下git init 就又是另一个仓库了,没有办法共享
    • 既有全局用户,又有仓库级别的用户,以仓库的为主
  • 创建全局用户及邮箱
    • git config --global user.name "tjx12345"
    • git config --global user.email "tjx12345@qq.com"
复习
  • git init
    • 添加暂存区 git add ./文件名
    • git rm --cached 文件名 目录:git rm --cached -r 文件夹
    • 提交数据 git commit -m "提交信息" ,在此之前添加用户
    • git config --global user.name "tjx"
    • git config --global user.email "tjx@qq.com" //默认约定邮箱与用户名一致
  • 如果产生了文件的修改
    • 需要重新添加进暂存区
    • 如果需要查看内容 可以使用cat 文件名 清屏:clear

git日志

  • 命令:git log
    • 可以查看提交日志
    • 也可以使用git log --oneline查看简洁的信息
commit 5d866dbed888eba770d1ea4458505b1fef056e23  commit代表着git提交的唯一标识
Author: tjx <tjx@163.com>
Date:   Fri Dec 9 11:13:37 2016 +0800

    第二次修修改
  $ git log --oneline
  5d866db 第二次修修改
  cf885a1 我提交了一次

git中的忽略文件的配置

  • 之前我们一直折腾在,工作区,到暂存区之间,最终到了git仓库(版本库)

git 版本回退(一般运维人员使用,危险的命令)

  • 命令: git reset --hard Head~0
    • 这里将代码回退到指定的版本,Head永远表示最近的一次提交。Head~0表示最近一次提交,然后Head~1表示最近一次提交前一次。Head~0可以简写成Head
    • git reset --hard 版本号

git reflog命令

  • git reflog
  • 查看每一次操作的版本

git diff 对比文件差异

  • 比较暂存区内容的时候,如果上次提交的数据是空,暂存区也没有值,仍然是第一次提交的数据
  • 命令:git diff [版本号1] [版本号2] [想要对比的文件路径]
  • 命令:git diff比较暂存区文件和工作区的差异

git 分支

* 在不影响主分支上代码的情况下,将各个功能,可以交给各个人来做分支上的开发。
* 如果需要的话,可以进行代码合并,不需要的话,可以删除分支

创建分支

  • 首先必须先通过master提交一次,才有创建分支的意义
  • 没有提交,直接创建分支:Not a valid object name: 'master'.
  • git branch 分支名称
  • 查看分支 git branch

切换分支

  • git checkout 分支名称

合并分支

  • git merge 分支名称
  • 将你指定的分支合并到当前所在的分支

删除分支

  • git branch -d 分支名称

解决冲突

  • 两个分支同时修改一个文件,造成文件无法区分,该以谁的内容为准
  • 系统无法分辨出,手动解决冲突(不存在合并了)
  • CONFLICT (content): Merge conflict in func1.
  • 只要不reset,想这么切这么切换版本checkout
<<<<<<< HEAD
这个功能这么实现比较好
。。。。。。
功能开发完毕
=======
程序猿开始开发,开发功能即将完成
开发功能完成
>>>>>>> func1
  • 案例演示:

创建并切换分支简写

  • git checkout -b [分支名]

github

  • 注册账号

github与git

  • github是一个网站, 提供了git服务器的功能
  • git是版本管理工具

上传代码到git服务器上

推到服务器上(push)

  • 一个仓库是300M。
  • 命令:git push [地址] [服务器上的分支名]
  • git push https://github.com/tjx12345/itcast_16_test.git master

git clone

  • 就相当于右键另存为,把项目中的代码下载下来.
  • 命令:git clone [地址] [可以起个文件夹名]
    • 示例:git clone https://github.com/huoqishi/test110.git test

从服务器上拉取代码(pull)

  • 案例演示
    • 程序猿A改代码花了3个小时,在这段时间中,程序猿B提交了,他俩改过同一个文件
    • pull 有个条件,执行命令的目录必需有个仓库
  • 总结:学了3个命令:
    • 推–> 只会推提交的内容 推到哪个分支 git push xxxxx.git master
    • 复制 clone git clone xxxx.git [创建的文件夹名称]
    • git pull xxxx.git [根据分支]
    • 拉的时候一定要有仓储 git init
  • 开发中:
    • 在提交代码以前,我们需要先pull一下,实际开发,多用pull

生成秘钥

  • ssh-keygen -t rsa
  • 进入到任意目录,通过git bash 执行以上命令
  • 直接回车。。 一顿回车以后,会生成对应的文件
  • 找到公钥.pub 后缀名的文件

默认目录
Generating public/private rsa key pair.
Enter file in which to save the key (/**c/Users/tujunxiong/.ssh/id_rsa**):

  • 进入到github ,右上角头像–>settings –> 左边SSH and GPG keys –> new SSHKey
  • 将公钥数据 xxx.pub 内容粘贴到key框内 –> 点击 add SSH key
  • git push 的时候 选择SSH的路径,复制下来就ok了

对称加密和非对称加密

使用github搭建个人博客

  • 1:我们将代码push到gh-pages分之下,然后就可以使用了
  • gh-pages,如果把代码上传到这个分支上就可以使用浏览器渲染访问。
  • 访问的地址形式:[github用户名].github.io/[仓库名]/[具体的文件或者路径]

丧心病狂的日志

  • 别名对象全局 aliase
  • 粘贴下面这部分代码就可以了
  • git config –global alias.lg “log –color –graph –pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ –abbrev-commit”

命令总结

  • git init初始化
  • git add添加暂存区
  • git status查看状态
  • git rm --cached ./文件 git rm -r --cached ./文件夹名 删除暂存区数据
  • git commit -m "消息" 提交带代码仓库(版本库)
  • git config user.name "值" 按仓库声明变量
  • git config --global user.name "值" 全局声明,在哪个仓库都能用
  • git config [--global] --list 查看变量
  • git config unset user.name 删除
  • git config --replace-all user.name 值修改
  • git log [--oneline] 显示提交日志
  • git reflog 显示当前做过的操作
  • git reset --hard HEAD~0 [版本号] 回退版本,修改时间指针,不建议使用
  • git branch 分支名称 创建分支
  • git branch 查看分支
  • git checkout 分支名 切换分支
  • git branch -d 分支名 删除分支
  • git merge 分支名称 合并分支
  • git commit -a -m "消息" 添加并提交所有代码(首先必须先提交过)
  • git checkout -b 分支名称 创建并切换分支
  • git push 地址 [分支名] 推送数据到服务器
  • git clone 地址 [创建的文件夹名称] 复制一个仓库
  • git pull 地址 [分支名称] 拉下一个仓库及代码
  • git config alias.xx "具体的命令" 别名
  • 以上命令中 最常用的是checkout 版本号,和add,commit,push,pull

git补充


diff

  • 当我们在当前行添加一行的时候,其实是在行尾添加了\r\n
  • git对比版本数据的时候,会把之前的行数据删除掉,然后添加进新的内容(其实是原来的内容加上\r\n)

图形化工具

  • gitk
  • 解决乱码git config –global gui.encoding utf-8

tag

  git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,签附注标则是仓库中的一个独立对象。建议使用附注标签。

  # 创建轻量标签
  $ git tag v0.1.2-light
  # 创建附注标签
  $ git tag -a v0.1.2 -m "0.1.2版本"
  • 1:git init
  • 2: 数据发生改变
  • 3: git add .
  • 4: 提交到版本库 git commit -m "msg"
  • 5: 打标签 git tag -a 版本号(v1.1) -m "msg"
  • 6: 想查看所有标签 git tag
  • 7: 查看标签明细 git show 版本号(v1.1)
  • 8: 切换版本 git checkout 版本号(v1.1)
  • 9: 连带tag一起推送到服务器 git push 地址 分支 --tags
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值