Fork me on GitHub

分布式版本控制工具——Git

本系列文章在 https://github.com/freestylefly/javaStudy 持(huan)续(ying)更(jia)新(ru)中,欢迎有兴趣的童鞋们关注。

目录

- [目录](#目录)
- [一、写在前面](#一写在前面)
- [二、Git的优势](#二git的优势)
- [三、Git的基本结构](#三git的基本结构)
- [四、本地库和远程库](#四本地库和远程库)
- [五、本地库初始化](#五本地库初始化)
- [六、设置签名](#六设置签名)
- [七、常用命令](#七常用命令)
- [八、历史记录](#八历史记录)
- [九、版本前进后退](#九版本前进后退)

一、写在前面

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。发明人就是大名鼎鼎的Linus ,发明初衷为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。需要知道的是Git底层文件验证采用的是SHA-1,(SHA-1)哈希算法可以被用来验证文件。哈希算法有如下特点:
1、不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定
2、哈希算法确定,输入数据确定,输出数据能够保证不变
3、哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
4、哈希算法不可逆

二、Git的优势

  1. 大部分在本地完成,不用联网
  2. 完整性保证
  3. 尽可能添加数据而不是删除和修改数据
  4. 分支操作非常快速刘闯
  5. 和Linux命令全面兼容

    三、Git的基本结构

    工作区:写代码的地方
    暂存区:Git临时存储的地方
    本地库:Git存放的历史版本

    四、本地库和远程库

    局域网:GitLab
    外网:GitHub、码云
    1、团队内部协作:
    push:本地库提交到远程库
    pull:拉取远程库代码到本地库,包括两个操作fetch(拉取)+merge(合并)拉取并合并,就是将远程库的代码更新到本地库
    clone:将远程库所有东西下载到本地,并且建立本地库
    2、跨团队协作
    如需要在被人的GitHub仓库提交自己的修改,跨团队协作
    fork:复制一份别人的代码在自己的远程库
    pull request:拉取请求,发送自己的修改
    merge:合并保存

    五、本地库初始化

    ”命令:git init
    注意:.git目录不能删除

    六、设置签名

    1、作用:在你提交代码的时候作为一个标识,代表这是你提交的代码,这里的签名和远程库上面的账号和密码没有任何关系
    2、命令
    1
    2
    3
    命令
    git comfig user.name 你的签名
    git config user.email 你的邮箱

3、注意:签名分两种:
项目级别:也叫仓库级别,仅在当前本地库范围内有效,git gonfig命令
系统级别:当前操作系统的用户有效,git config —global
**优先级:就近原则
4、查看签名

1
2
3
4
仓库级别:
cat .git/config
系统级别:
cat `/.gitconfig

七、常用命令

1
2
3
4
5
6
git status:查看工作区、暂存区状态
git add 文件名:添加文件到暂存区
git add *:添加所有文件到暂存区
git rm --cached 文件名:将暂存区恢复到工作区
git commit -m"提交日志" 文件名:提交文件到本地库
git commit -a -m"提交日志" :添加所有文件到本地库

八、历史记录

1、查看历史记录
git log
git reflog 简洁的查看历史记录,HEAD值简单化
2、多层显示控制方式
空格向下切换
b向上翻页
q退出

九、版本前进后退

1、基于索引值操作
git reset —hard 索引值
git help 具体命令:查看帮助

2、reset命令的三个参数对比
—sert:仅仅在本地库移动HEAD指针
—mixed:从本地库移动指针,重置暂存区
—hard:本地库移动指针,重置暂存区,重置工作区

十、删除后找回

一定要明确一点就是,你从本地库或者工作区删除了文件,一定要将删除的操作add和commit 到本地库才可以找回相关文件。
git reset—hard 指针位置

十一、比较文件差异

git diff:工作区和暂存区比较
git diff HEAD 文件名:本地库和历史版本比较,不带文件名是比较多个文件

十二、git的分支

1、什么是分支
版本控制中, 使用多条分支同时推进多个任务
2、查看所有分支
git branch -v
3、创建分支
git branch 分支名
4、切换分支
gitcheckout 分支名
5、合并分支
第一步L切换到被合并分支
第二步:执行git merge 分支名
6、解决分支冲突
删掉相关标记
git add 文件名:标记为已解决
git commit -m“”“”:提交解决冲突
注意:提交的时候不能带文件名

十三、GitHub

1、给远程库URL新建别名
git remote add 别名 远程仓库URL
2、查看远程仓库地址别名
git remote -v
3、推送到远程库
git push 别名 分支名
4、克隆远程仓库内容到本地
git clone 远程地址别名
注意:克隆会晚会智能的把远程库下载到本地,创建origin远程地址的别名,并且会初始化本地库
5、抓取:将远程分支放到本地
git fetch 别名 分支名
6、合并
将远程分支合并到本地库
git merge 悲鸣/分支名
7、抓取并合并
git pull 别名 分支名

十四、ssh免密登录和eclipse下的git操作

这个可以直接访问仓库,对应资源可以下载
https://github.com/freestylefly/javaStudy/tree/master/Git%26GitHub

十五、写在最后

如果有想要学习资源的话欢迎评论咨询!


本文章已同步至我的GitHub仓库:Javastudy,期待您的加入:blush:

本文章已同步至苍何的个人博客,可以直接在博客上留言哦:blush:

来我的微信公众号玩耍呗:blush:

扫码无套路关注我的CSDN博客:blush:

苍 何 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!