Git&GitHub

Git&GitHub

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

  • 协同修改

    • 多人并行不悖的修改服务器的同一个文件
  • 数据备份
    • 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态
  • 状态管理
    • 在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间提高运行效率。这方面SVN采用的是增量式管理的方式,而Git采取是文件系统快照的方式。
  • 权限控制

    • 对团队中参与开发的人员进行权限控制
    • 对团队外开发贡献的代码进行审核--Gti独有
  • 历史记录
    • 查看修改人、修改时间、修改内容、日志信息。
    • 将本地文件恢复到某一个历史状态。
  • 分支管理
    • 允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

2、版本控制工具

思想:版本控制

实现:版本控制工具

  • 集中式版本控制工具:

CVS、SVN、VSS·······

  • 分布式版本控制工具

    Git、Mercurial、Bazaar、Darcs······

3、Git 简介

3.1 Git官网

https://git-scm.com

3.2 Git的优势

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

3.3 Git结构

3.4 Git和代码托管中心

  • 局域网环境下

    • GitLab服务器
  • 外网环境下
    • GitHub
    • 码云

4、Git命令行操作

4.1、本地库初始化

  • 命令:git add
  • 效果

    • 注意:.git目录中存放的是本地库相关子目录和文件,不要删除,也不要胡乱修改。

  • 设置签名
    • 形式

      • 用户名:Kmily_Lee
      • Email地址:[email protected]
    • 作用:区分不同开发人员的身份
    • 辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。
    • 命令:
      • 项目级别/仓库级别:仅在当前本地库范围内有效

        • git config user.name Kmily_Lee_pro
        • git config user.email [email protected]
        • 信息保存位置:./.git/config
      • 系统用户级别:登录当前操作系统的用户范围
        • git config--global user.name Kmily_Lee_glb
        • git config--global user.email [email protected]
        • 信息保存位置:~/.gitconfig文件
      • 优先级
        • 就近原则:项目级别优先于系统级别,二者都有时采用项目级别的签名
        • 如果只有系统用户级别的签名,就以系统用户级别的签名为准
        • 二者都没有不允许

4.3 基本操作

4.3.1 状态查看

git status

查看工作区、暂存区状态

4.3.2 添加操作

git add [file name]

将工作区的“新建/修改”添加到暂存区

4.3.3 提交操作

git commit -m "commit message" [file name]

将暂存区的内容提交到本地库

4.3.4 查看历史记录操作

git log

多屏显示控制方式:

空格向下翻页

b向上翻页

q退出

git log --pretty=oneline

git log --oneline

git reflog

[email protected]{移动到当前版本需要多少步}

4.3.5 前进后退

  • 本质:

  • 基于索引值操作【推荐】

    • git reset --hard [局部索引值]
    • git reset --hard fdcb9e8
  • 使用^符号 : 只能后退
    • git reset --hard HEAD^
    • 注:一个^表示后退一步,n个表示后退n步
  • 使用~符号 : 只能后退
    • git reset --hard~n
    • 注:n表示后退n步

4.3.6 reset命令的三个参数对比

  • --soft 参数

    • 仅仅在本地库移动HEAD指针
  • --mixed 参数
    • 在 本地库移动HEAD指针
    • 重置暂存区
  • --hard 参数
    • 在本地库移动HEAD指针
    • 重置暂存区
    • 重置工作区

4.3.7 删除文件并找回

  • 前提:删除前,文件存在时的状态提交到了本地库
  • 操作:git reset --hard [指针位置]

    • 删除操作已经提交到本地库:指针位置指向历史记录
    • 删除操作尚未提交到本地库:指针位置使用HEAD

4.3.8 比较文件差异

  • git diff [文件名]

    • 将工作区中的文件和暂存区进行比较
  • git diff [本地库中历史版本],[文件名]
    • 将工作区中的文件和本地库历史记录比较
  • 不带文件名比较多个文件

4.3.9 命令帮助

4.4 分支管理

4.4.1 分支的好处

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

4.4.2 分支操作

  • 创建分支

    • git branch [分支名]
  • 查看分支
    • git branch -v
  • 切换分支
    • git checkout [分支名]
  • 合并分支
    • 第一步:切换到接受修改的分支(被合并,增加新内容)

      git chechout [被合并分支名]

    • 第二步:执行merge命令

      git merge [有新内容的分支名]

  • 解决冲突
    • 冲突的表现

冲突的解决

第一步:编辑文件,删除特殊符号

第二步:把文件修改到满意和程度,保存退出

第三步:git add [文件名]

第四步:git commit -m "日志信息"

注意:此时commit 一定不能带具体文件名

5 Git基本原理

5.1 哈希

哈希是一个系统的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:

  • ·1、不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
  • 2、哈希算法确定,输入数据确定,输出数据策骑的保证不变
  • 3、哈希算法确定,输入数据有变化,输入数据一定有变化,而且通常变化很大
  • 4、哈希算法不可逆

    Git底层采用的是SHA-1算法。

    哈希算法可以被用来验证文件。原理如下图所示。

Git就是靠这种机制来从根本上保证数据完整性的。

5.2 Git保存版本的机制

5.2.1集中式版本控制工具的文件管理机制

以文件变更列表的方式存储信息。这类系统将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。

5.2.2 Git的文件管理机制

Git把数据看作是小型文件系统的一组快照。每次提交更新时Git都会寻当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git不再重新存储该文件,而是保留一个链接指向之前存储的文件。所以Git的工作方式可以称之为快照流。

6 GitHub

6.1GitHub首页

https://github.com/

6.2 创建远程库

6.3 创建远程库地址别名

git remote -v 查看当前所有远程地址别名

git remote add 【别名】【远程地址】

6.4 推送

git push 【别名】【分支名】

6.5 克隆

  • 命令

    • git clone [远程地址]
  • 效果

    • 完整的把远程库下载到本地
    • 创建origin远程地址别名
    • 初始化本地库

6.6 团队成员邀请

其他成员把链接访问,登录自己的gitHub账号接受邀请。

6.7 拉取

  • pull=fetch+merge
  • git fetch 【远程库地址别名】【远程分支名】//只是把远程的文件下载下来,并没有去改本地的文件
  • git merge 【远程库地址别名】【远程分支名】//会合并
  • git pull 【远程库地址别名】【远程分支名】//直接抓取并合并

6.8 解决冲突

  • 要点

    • 如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉取
    • 摘取下来后如果进入冲突状态,刚按照 “分支冲突解决” 操作解决即可

7 Gitlab 服务器搭建过程

7.1 官网地址

首页:https://about.gitlab.com/

安装说明:https://about.gitlab.com/installation/

7.2 安装命令摘录

sudo yum install -y curl policycoreutils-python openssh-server cronie

sudo lokkit-shttp -s ssh

sudo yum install postfix

sudo service postfixstart

sudo chkconfig postfix on

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ee

实际问题:yum 安装 gitlab-ee(或 ce)时,需要联网下载几百 M 的安装文件,非常耗 时,所以应提前把所需 RPM 包下载并安装好。 下载地址为:

https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm

7.3 调整后的安装过程

sudo rpm -ivh/opt/gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm

sudo yum instal l-y curl policycoreutils-python openssh-server cronie

sudo lokkit-shttp -s ssh

sudo yum install postfix

sudo service postfixstart

sudo chkconfig postfix on

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ce

7.4 gitlab 服务操作

  • 初始化配置 gitlab

    gitlab-ctlreconfigure

  • 启动 gitlab 服务

    gitlab-ctlstart

  • 停止 gitlab 服务

    gitlab-ctlstop

7.5 浏览器访问

访问 Linux 服务器 IP 地址即可,如果想访问 EXTERNAL_URL 指定的域名还需要配置 域名服务器或本地 hosts 文件。

初次登录时需要为 gitlab 的 root 用户设置密码。

※应该会需要停止防火墙服务:

service firewalld stop

原文地址:https://www.cnblogs.com/limn/p/9531731.html

时间: 2024-10-10 18:43:24

Git&GitHub的相关文章

GIT & GitHub 学习笔记

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活, 干完后,需要把自己做完的活推送到中央服务器.集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网 速慢的话,就纳闷了. Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑 上.既然每个人的电脑都有一个完整的版本库

Git & GitHub

Git & GitHub 01.创建GitHub账号 请点击标题链接,阅读官网帮助 02.创建代码仓库 请点击标题链接,阅读官网帮助 03.安装Git 注:Git官网下载太慢,可在[360卫士]-->[软件管家]中搜索下载 04.打开Git命令行 在代码存放目录[鼠标右键]-->[Git Bash Here] 05.配置Git git config --global user.name "name" git config --global user.email &q

[git] github 使用简单记录

前提 :1. 已有 github 账号.2. 已安装 git .3. 在 github 和 本地 git 客户端交互秘钥.(这步我记得需要做,有点久远,不确定.) 正文: 下面是一个简单的例子.先在 github 创建新的库,在本地拉取 github 的新库,将需要需要上传到 github 的文档放到本地库,然后通过 git 上传到 github 上面.具体步骤如下: 1. 在 github 上面创建一个库. 点击 repository 界面的 New 按钮,然后填入 Repository na

git/github运用

了解git和svn很久了,但是一直没有拿来做过版本控制管理,虽然svn有用到过,但是觉得还是运用git的比较多吧,尤其github. Git术语                                                                       术语 定义 仓库 一个仓库包括了所有的版本信息.所有的分支和标记信息. Repository 在Git中仓库的每份拷贝都是完整的.仓库让你可以从中   取得你的工作副本.   一个分支意味着一个独立的.拥有自己历史

Git&GitHub学习日志

Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件.作为一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理,而且正变得越来越流行了. 最近我正在学习使用Git工具,因此收集了很多资料,比如经典的Pro Git,不仅有英文原版,还有中文翻译版,我也因此将该中文翻译整理成pdf格式. 我整理的Pro Git中文翻译下载:ProGit-

git && github 相关

权限问题(error: The requested URL returned error: 403 Forbidden while accessing):1. 将自己机器的ssh public key放到github的setting->ssh keys里面:2. 修改$bash/.git/config里面的url中的https://*为url =ssh://[email protected]/zwChan/memcached.git,当然要指向自己的github项目了. ------------

Jenkins配置git/github 插件的ssh key

参考来源:http://jingyan.baidu.com/article/a65957f4f0acc624e67f9bc1.html 方式一:本地需要生成公私钥文件,git/github中新建ssh key时,将公钥填入:jenkins中存放私钥. 方式二:本地需要生成公私钥文件,git/github中新建ssh key时,将公钥填入.jenkins中不进行密钥处理,机器会根据本地环境变量(env的配置)进行搜索->其中就有.ssh文件夹 值得注意的是:jenkins创建的工程中,填入的git

git/github初级运用自如(zz)

----//git/github环境配置 一 .  github上创建立一个项目 用户登录后系统,在github首页,点击页面右下角“New Repository” 填写项目信息: project name: hibernate-demo description : my first project 点击“Create Repository” : 现在完成了一个项目在github上的创建. 说明:我们创建的是一个github仓库,一个仓库里只能存放(或叫对应)一个项目. 当你创建完成一个仓库的之

写作环境搭建(git+github+markdown+jekyll)

转载自: https://site.douban.com/196781/widget/notes/12161495/note/264946576/ 2013-03-04 19:33:10 --- layout: postcategories: [Tools]tags: [jekyll, github, git, markdown] --- ## 缘起 读了阳志平大神的一篇博文[理想的写作环境:git+github+markdown+jekyll](http://www.yangzhiping.c

git github usage

以gerrit-trigger-plugin为例,下面的链接都是从相应页面上直接拷贝的. 法一:不用github的账号,打开这个库在github上的主页,运行下面命令即可 read only 运行命令$Git clone https://github.com/jenkinsci/gerrit-trigger-plugin.git 下面的三种方法都要先在github上注册账户,然后生成相应的ssh key,并把public key添加到个人账户里面,详见github帮助 read+write $g