Git&GitHub

介绍

版本控制工具应该具备的功能

  1. 协同修改
    多人并行不悖的修改服务器端的同一个文件。
  2. 数据备份
    不仅保存目录和文件的当前状态, 还能够保存每一个提交过的历史状态。
  3. 版本管理
    在保存每一个版本的文件信息的时候要做到不保存重复数据, 以节约存储空
    间, 提高运行效率。 这方面 SVN 采用的是增量式管理的方式, 而 Git 采取了文
    件系统快照的方式。
  4. 权限控制
    对团队中参与开发的人员进行权限控制。
    对团队外开发者贡献的代码进行审核——Git 独有。
  5. 历史记录
    查看修改人、 修改时间、 修改内容、 日志信息。
    将本地文件恢复到某一个历史状态。
  6. 分支管理
    允许开发团队在工作过程中多条生产线同时推进任务, 进一步提高效率。

Git

Git 的优势

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

Git的安装

  1. git官网下载git安装程序,全部默认安装即可;

Git结构

git add
git commit
工作区
暂存区
本地库
写代码
临时存储
历史版本

Git跟代码托管中心

代码托管中心:维护远程库

  1. 局域网
    1. GitLab服务器
  2. 外网
    1. GitHub
    2. 码云

本地库跟远程库交互

  1. 团队内部协作
    在这里插入图片描述
  2. 跨团队协作
    在这里插入图片描述

使用

本地库初始化

  1. 命令:git init
  2. 说明:在某个目录下执行该命令,则以当前目录为本地库

设置签名

  1. 形式:
    用户名,Email地址
  2. 作用:区分不同开发人员的身份
  3. 这里设置的签名跟登录远程库的账号密码没有任何关系
  4. 命令
    1. 项目级别/本地仓库级别:仅仅在本地范围有效
      1. git config user.name huzd
      2. git config user.email huzd@123.com
      3. 最终会在master目录的.git目录的config文件下记录
    2. 系统用户级别:登录当前操作系的用户范围
      1. git config --global user.name huzd
      2. git config --global user.email huzd@123.com
      3. 最终会在用户家目录(cd ~),下面有个.gitconfig文件中记录
    3. 级别优先级:两者必须设置一个,并且就近原则;

基本操作

  1. 状态查看:git status
  2. 添加:git add [file name]
  3. 提交:git commit -m “commit message” [file name]
  4. 查看历史记录:
    git log
    1. git log --pretty=oneline:一行显示
    2. git log --oneline:一行显示
      git reflog:显示指针等信息
  5. 前进后退:
    1. git reset --hard 索引值
    2. 使用^符号(只能后退,并且一个符号退一个版本):git reset --hard^
    3. 使用~符号:git reset --hard~3表示退三步
  6. reset的三个参数对比
    1. –soft参数:仅仅在本地库移动HEAD
    2. –mixed参数:在本地库移动HEAD指针并重置缓冲区
    3. –hard参数:在本地库中移动HEAD指针并重置缓存区跟工作区;
  7. 删除:
    1. 删除本地库:其实就是本地库已经存在了记录,在工作区删除文件了之后将这个状态还是用git add 添加到暂存区,然后再提交即可,那么本地库中的文件也会被删除,但是所有的删除都是有历史记录的,可以恢复;
    2. 删除暂存区:git reset --hard HEAD,意思就是以目前本地库中最新内容同步暂存区中数据
  8. 比较文件差异
    1. 比较与暂存区中文件的差异:git diff file
    2. 比较与本地库中文件的差异:git diff HEAD file
    3. 比较与本地库中上个版本的差异:git diff HEAD^ file

分支

  1. 解释:在版本控制中,使用多条线路同时推进多个任务
  2. 好处
    1. 同时并行推进多个任务,提高效率
    2. 各个分支相互独立开发,互不影响;
  3. 使用
    1. 创建分支:git branch name
    2. 查看分支:git branch -v
    3. 切换分支:git checkout name
    4. 合并分支:
      1. 切换到被合并分支:git checkout 被合并分支
      2. 使用merge命令:git merge 合并分支
    5. 解决冲突:
      1. 第一步: 编辑文件, 删除特殊符号
      2. 把文件修改到满意的程度, 保存退出
      3. git add [文件名]
      4. git commit -m “日志信息”
        注意: 此时 commit 一定不能带具体文件名

Git基本原理

  1. 哈希
    1. 不管输入数据的数据量多大,输入同一个哈希算法,得到加密的结果长度一致
    2. 哈希算法确定,输入数据确定,输出数据不变
    3. 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
    4. 哈希算法不可逆
  2. Git的“提交对象”
    在这里插入图片描述
    在这里插入图片描述
    1. 分支创建
      刚开始只有master分支,创建testing分支之后指向相同
      在这里插入图片描述
      切换到testing分支
      在这里插入图片描述
      testing分支做修改
      在这里插入图片描述
      切换回master分支
      在这里插入图片描述
      主分支也进行修改
      在这里插入图片描述

与GitHub使用

推送到远程库(团队内协作)

  1. 在GitHub官网注册用户
  2. 在用户下创建新库并且复制新库地址
  3. 设置remote信息
    1. 查看远程库信息:git remote -v [show name]
    2. 增加远程库信息:git remote add origin 远程库地址
  4. 使用git push origin master将本地库主分支推送到远程库新库中;

clone到本地文件夹中

  1. 直接复制git项目路径
  2. 在本地某个目录下执行 git clone 远程地址
  3. 效果
    1. 完整的把远程库下载到本地
    2. 创建origin远程地址别名
    3. 初始化本地库

添加团队

  1. 若其他人clone下来做了处理之后想推送到原库中,需要添加到团队,需要由原创建者在项目中的Collaborators中增加对方账号;
    在这里插入图片描述
  2. 然后复制链接给对方登录同意即可;

pull拉取

  1. git fetch origin master:将远程库中的主分支设置为FETCH_HEAD,参考
  2. git merge orgin/master:将origin/master合并到当前分支
  3. git pull origin master:pull=getch+merge,直接合并远程分支到当前分支

跨团队协作

在这里插入图片描述

在eclipse中使用

  1. 初始化本地项目
    工程→右键→Team→Share Project→Git
  2. 概念: Eclipse 特定文件
    这些都是 Eclipse 为了管理我们创建的工程而维护的文件, 和开发的代码没有
    直接关系。 最好不要在 Git 中进行追踪, 也就是把它们忽略。
    .classpath 文件
    .project 文件
    .settings 目录下所有文件
  3. 为什么要忽略 Eclipse 特定文件呢
    同一个团队中很难保证大家使用相同的 IDE 工具, 而 IDE 工具不同时, 相关工
    程特定文件就有可能不同。 如果这些文件加入版本控制, 那么开发时很可能需要为
    了这些文件解决冲突
  4. 添加冲突文件:在.gitconfig文件同级目录增加Java.gitignore
  5. 可参考https://github.com/github/gitignore
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

.classpath
.settings
.project
target
  1. 主要需要使用/不能使用\

推送到远程库

  1. 右键–team–remote–push然后填入相关信息即可;

clone到本地

  1. import–projects from git–clone url然后填入相关即可
  2. 注意只能选择普通项目导入,因为缺少相关eclipse文件支持
    在这里插入图片描述
  3. 然后右键–configure–convert to maven project;

解决冲突

  1. 先pull下来,然后右键–team-merge tool 处理即可;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值