zoukankan      html  css  js  c++  java
  • Git 安装及用法 github 代码发布 gitlab私有仓库的搭建

    • 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

      这个版本控制软件,有 svn还有git,是一个工具.

    1. git是由linux的作者开发的
    2. git是一个分布式版本控制系统
    3. svn cvs是集中式的版本控制系统,区别于git,集中式的版本控制系统,必须联网才能用,并且写完了,还得放到一个统一管理的目录,还得通过网络传输
    4. 版本库指的就是一堆代码,被循规蹈矩的管理者,就是叫做版本库
    5. snv必须联网才能使用,而且如果中央服务器挂了,就是svn服务器挂了,整个代码仓库全挂了,谁也用不了

    linux平台安装git软件

    1. yum安装
      1. 编代码编译安装
        1. rpm包手动安装

    yum安装git

    1. 配置阿里云的yum源,因为它下载快,2下载软件包齐全
      wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
      wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    2. 一条命令安装git软件

      yum install git -y

    3. 安装git完毕,查看版本
      [root@fd yum.repos.d]# git --version
      git version 1.8.3.1

    4. 设置git的版本控制用户信息

    • 一般公司用这个命令!!!!!

      针对当前linux登录的用户添加了一个配置,不会对他人造成影响

      git config --global user.name "alex dsb"

      用这个命令就会在 ~/.gitconfig文件

    • 用--system就是对操作系统所有的用户,都设置这个配置

      git config --system user.name "alex dsb"

      git config --global user.email "yc_uuu@163.com"

    1. 查看全局版本用户信息
      git config --global --list

    git的使用生命周期

    • 工作目录(你当前linux操作的目录) > 暂存区 > 本地仓库 > 远程github

      git的命令,就是将文件变化,在这四个区域,来回变动

    初始化git版本库的方式,有三个

    1. 对已经有的代码进行 版本管理
      我这台机器 已经有了一个django项目,对它进行管理

      1. 对当前已经有的django项目进行git初始化

        git init

      2. 查看git状态

        git status #查看git状态

        (gitlearn) [root@lht1 dj220]# git status
        # On branch master        #在master分支上
        #
        # Initial commit
        #
        # Untracked files:        #未标记的文件如下 
        #   (use "git add <file>..." to include in what will be committed)
        #
        # dj220/
        # manage.py
        
    2. git项目的第一次管理,初始化的流程

      1. git init 对django代码初始化

      2. git status 查看git版本库的状态

      3. 对django代码,进行跟踪,标记 ,然后提交本地工作区的代码,到暂存区
        git add .

      4. 提交暂存区的代码,到本地版本库
        git commit -m "写入你的提交备注信息"

        -m 是标记注释的意思

      5. 查看git提交日志
        git log

      6. git的各种命令,就是对四个区域来回切换,并且只能在git工作区下去敲
        必须得在含有.git文件夹的目录,去敲命令,才可以

      7. 在git版本库目录下,新创建的文件,都会被标记为 Untracked files,代表未跟踪的文件

      8. 对新创建的文件,进行跟踪
        git add .

      9. 修改django的url.py,写入新功能,也是对文件进行修改标记 modified
        对修改过的代码文件,也必须git add 添加到暂存区

        git add .

      10. 任何的对项目修改的操作,注意都要git status看一下

      11. 查看git提交日志

        git log

      12. git回退历史

        语法: git reset --hard commit的id记录 --hard参数是强制性回退

        git reset --hard 954e6df1c0a2a71dd141850727d3eddd580518b3

        再次回到另一个提交版本信息,
        git reset --hard 2444fd8ed876eab2a95a697d039916510b356104

      13. git穿梭未来
        git 回退,前进版本,其实就是是对git的文件指针,来回切换
        文件指针叫做head

        git reflog #查看所有回退历史记录的命令

      14. 撤回git修改的记录
        对已经跟踪的文件app01/views.py进行修改,此时标记为了modified: app01/views.py
        如果你想提交本次修改动作
        git add .
        如果你发现代码修改错了,git可以很方便的撤回
        git checkout -- 文件名
        git checkout -- app01/views.py

      15. 理解git命令
        git init 初始化一个git版本库,会生成一个.git 文件夹,此时这个目录就是git仓库了!!!

      16. 修改git工作区的文件,重命名,以及删除文件

        linux的命令如下
        rm 删除
        mv 移动目录,或者重命名
        但是,你对git仓库中的代码,请使用git的命令
        git rm 删除git管理的代码
        git mv 对git管理的代码,改名

      17. git临时区的概念
        使用场景:
        git add 作用是? 是把本地工作区的代码,提交到暂存区
        git commit 将暂存区的代码,提交到本地版本仓库中,提交完毕,这件事就结束了

        使用流程,场景,在你开发新功能的时候,突然线上代码有问题,你必须得改线上代码,
        将你目前已经开发好的功能,临时存储起来,
        待你修复bug完毕之后,再把这个临时存储的代码,回退回来即可

        1.git stash #讲你暂存区提交的代码,放到一个stash临时区中
        2.修复bug完毕
        3.拿回stash的代码
        git stash pop
        4.查看stash是否还有临时代码
        git stash list

        5.注意未标记的,已修改的文件,都得git add 添加到暂存区之后,才可以提交到本地仓库
        git add .

        6.如果你想提交这个代码
        git commit -m "提交注释信息"

      18. git分支功能,每个人都有自己的分支,不直接影响本体代码,在自己的分支上,写完代码后,通过管理员吧分支的代码,合并到主干上即可
        git branch #查看当前所在的分支
        git branch wupeiqi #创建吴佩琪分支
        git branch alex #创建艾利克斯分支

        git checkout wupeiqi #切换到吴佩琪分支

        分支开发使用流程
        1.创建新的分支
        git branch wupeiqi
        2.切换分支
        git checkout wupeiqi
        3.在分支下,写自己的代码
        ........
        4.切换到主干分支上
        git checkout master
        5.合并分支的代码,此时吴佩琪开发提交的代码,就被合并到master了
        git merge wupeiqi

        分支冲突怎么办?手动解决冲突的代码即可
        思路:master分支和wupeiqi分支,同时操作一个文件,对同一行代码进行写入

      1.用master主干分支,操作一个文件,并且提交commit
      git branch #当前是主干master
      模拟对一个文件的第二行写入代码
      2.master提交本次修改记录
      git add .
      git commit -m "提交注释"
      3.切换分支,也对同一个文件,进行写入代码,且提交
      git checkout wupeiqi
      模拟对同一个文件,写入同一行代码,肯定会和master冲突
      git add .
      git commit -m "分支提交的注释"

      4.回到master主分支,合并吴佩琪分支,然后手动解决
      git checkout master

       git merge wupeiqi 
       如果出现了冲突,就手动编辑这个文件,删除git自动添加的冲突注释

      5.保存文件退出
      git add .
      git commit -m "master最终合并的注释"
      6.git分支的命令
      git branch 分支名linux 创建分支linux
      git checkout 分支名linux 切换分支到linux
      git branch 查看当前分支情况,在哪一个就有*符
      git check -- filename 一键还原文件,将git仓库的文件覆盖当前文件,危险命令
      git checkout -b name 创建+切换新的分支

    2.当前机器没有项目,直接进行git初始化,这个是管理一个空的目录

    ​ mkdir 目录名

    ​ git init 初始化这个空目录

    3. 公司使用方式是他

    ​ 远程克隆下载一个项目,从github,或者gitlab ,一台新的机器,啥也没有,把公司的代码下载出来,进行开发,以及版本管理

    github的使用

    1. 注册一个github账号
      https://github.com

    2. 登录后,添加创建一个新的github仓库,用于传输本地代码

    3. 新建github仓库,填写github仓库的名字,描述信息,以及redame文件,以及忽略文件(忽略编程语言的一些缓存文件)

    4. 添加ssh秘钥,让github和linux机器进行免密登录

      1. linux推送代码到github有2个登录方式
        一个是账号密码方式
        一个是ssh秘钥方式

      2. 选择ssh秘钥,安全性更高
        ssh是一个远程安全登录的命令,可以通过ssh-keygen命令生成一对公私钥(其实就是2个秘钥文件),然后把公钥发给github,私钥自己本地保留
        输入如下命令 ssh-keygen

        [root@fd dj220]# ssh-keygen        #这个命令生成一对公私钥,
        Generating public/private rsa key pair.
        Enter file in which to save the key (/root/.ssh/id_rsa): 
        Created directory '/root/.ssh'.
        Enter passphrase (empty for no passphrase): 
        Enter same passphrase again: 
        Your identification has been saved in /root/.ssh/id_rsa.
        Your public key has been saved in /root/.ssh/id_rsa.pub.
        The key fingerprint is:
        SHA256:ResKz3ErviC3OjbHe+Hqog2290YrqgCVlsMcpL+JUmg root@fd
        The key's randomart image is:
        +---[RSA 2048]----+
        | .o       .      |
        | + +     . .     |
        |. O       o      |
        | = .     o       |
        |oEo   . S o      |
        |oo o  .+.+ .     |
        |+ = .ooo=..      |
        |o. +Bo=+o.       |
        |..+=o@*+o.       |
        +----[SHA256]-----+
        [root@fd dj220]# 
        [root@fd dj220]# 
        [root@fd dj220]# cd ~/.ssh/
        [root@fd .ssh]# ls 

        公私钥内容如下 id_rsa是秘钥 id_rsa.pub 是公钥

        id_rsa id_rsa.pub

    5. 把公钥的内容,赋值粘贴发给github

      查看如下内容,

      [root@fd .ssh]# cat id_rsa.pub

      将如下公钥信息,复制

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfEGqHrIf8n6NrawBFt0/slRobTVuI9HoLxBWx0SdhIj+ATKgsEoVryG1S3WXulStNgDqF4dBSTRbNPFO/rrMdyURYRnSceQBKdNe+SmW2ttb/bfxd4JOnsC2ARCBK+DCTB48gtoSx+x4AUx3HGMUkOlgCjhHxk55CaMY8BtrBvdBAuOtUrv2RVOiheTTI+Sr8OJL/7lHEkZWGkW1n+xnx4/Urph4oa6lg8gQgFMWlLA9z5+cN8ZrQUi0MLX4p2e8sYfMnkzra5sSsUKQulqRsATaD8RK4FD+VEDWYwGfbdncCIMgiqol6gEQXKc4OJ/mU/xQMx5RQFwQGXW4hFFX root@fd
    6. 此时你的linux 机器和github已经建立ssh通道了

    7. 获取你的github项目仓库地址
      比如你的项目地址如下:
      git@github.com:ayuchao/s16gitlearning.git

    8. 在linux机器上配置远程仓库别名
      #git remote add 都是关键字 然后给你的github项目地址添加一个别名叫做origin
      git remote add origin git@github.com:zhangziyi185x/WebChatRoom.git

    9. 保证你的本地代码,和远程github仓库内容一致,如果不一致,会失败,先pull下载代码,保证一致性
      git pull origin master #向远程的github origin别名下的master分支下载代码

    10. 此时可以吧你本地的代码,推送到github仓库了

      git push 是推送的意思 origin是远程仓库地址的别名 master 推到远程仓库的master分支上

      得到git管理的版本仓库下敲

      ​ git push origin master

    11. 去github去查看代码

    新机器配置

    1. 配置ssh秘钥,方式在笔记上面
    2. 在一个目录,克隆一个新项目代码
        git clone git@github.com:ayuchao/s16gitlearning.git
    

    3.在github仓库下,在浏览器中,新建一个分支,名字是development

    4.下载最新的github代码
    git pull origin
    5.此时项目,默认只有一个master分支,所以需要新建一个分支去开发,便于维护master的代码
    #在本地新建一个dev分支,并且和远程的github的dev分支建立关系
    git pull origin
    git branch zhangfei origin/zhangfei

    6.在项目中使用development分支去开发
    ...开发代码省略...
    7.提交本地开发
    git add .
    git commit -m "分支提交了新的代码"

    8.提交分支本地的代码,到github中
    git push origin development

    9.合并分支代码,推送到master主干线中
    git checkout master
    git merge development #合并分支的代码
    git push origin master #推送本地master的代码到github中

    git常用命令

    
    

    git init 初始化
    git status 查看git版本库的状态
    git add 指定文件或者 .
    git commit -m "提交的注释" 提交暂存区的内容到本地仓库
    git checkout 文件名 #撤回对文件的修改
    git checkout 分支名 #切换不同的分支
    git log #查看git提交的日志记录
    git reflog #查看所有提交以及回退的记录
    git reset --hard commitID #回退到某一个提交的id版本下
    git config --global user.name "你的名字"
    git config --global user.umail "你的邮件"
    git branch #查看分支
    git branch 分支名 #创建一个新的分支
    git branch -d 分支 #删除这个分支
    git checkout -b 分支名 #创建并且切换到一个新的分支下
    git stash #将暂存区的记录,临时放到一个区域 ,先git add之后,再git stash
    git stash pop #删除最后一个stash记录,放回暂存区
    git rm #删除git版本库中的文件
    git mv #改名
    git remote add 别名 github仓库的地址
    用法如下
    git remote add origin git@github.com:ayuchao/s16gitlearning.git

    git push 别名 分支名
    用法
    git push origin master #推送本地git仓库到github仓库了

    git pull origin master #下载github远程仓库到本地来

    gitlab 配置

    • nginx git yum python mysql redis 都是linux上的软件

      gitlab私有仓库的搭建, github共有仓库不安全,虽然现在也有私有仓库的功能了
      携程,美团运维开发组都是搭建的gitlab企业私有代码仓库

    1. 环境配置,至少4G内存的虚拟机

    2. 通过yum安装gitlab,阿里云的源也没有gitlab这个软件包
      解决方案:

      1. 选择gitlab官网提供的yum仓库地址

      2. 还是去找一个第三方,拥有gitlab软件包的yum仓库

      3. 配置清华大学的yum源
        找到yum仓库目录
        /etc/yum.repos.d
        然后手动创建一个 以.repo结尾的文件
        touch gitlab.repo

      4. 写入如下信息

        cat gitlab.repo 
        [gitlab-ce]
        name=Gitlab CE Repository
        baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
        gpgcheck=0
        enabled=1
        ~
      5. 安装gitlab
        yum install gitlab-ce

      6. 如何启动?
        确保服务器内存足够,可以用如下三个命令,清空buff内存缓存
        [root@DD-Server-9F ~]# echo 1 > /proc/sys/vm/drop_caches
        [root@DD-Server-9F ~]# echo 2 > /proc/sys/vm/drop_caches
        [root@DD-Server-9F ~]# echo 3 > /proc/sys/vm/drop_caches

        gitlab-ctl reconfigure 初始化gitlab,只能执行一次
        gitlab-ctl status/stop/start    启动gitlab
        gitlab-ctl status  #确保你的gitlab启动了

        访问方式:
        直接访问你linux服务器的ip即可,注意关闭linux防火墙(咱们学习阶段的配置)

        iptables -F #清空规则 
        systemctl stop firewalld 
        systemctl disable firewalld 
        #临时关闭selinux,也是一个防火墙
        setenforce 0
        #永久关闭selinux,修改/etc/selinux/config 
        修改如下参数

        通过浏览器访问页面服务器ip,默认开启了nginx的web端口,设置初始密码,操作类似github
        第一次访问会设置新密码 至少8个字符

        默认登录用户root
        密码11111111
        即可看到gitlab

      2.启动了gitlab之后,修改了账号密码

      3.配置ssh公钥,发送给gitlab

      4.下载私有的gitlab仓库
      git clone git@192.168.3.3:root/webchathoom.git

      5.进入gitlab下载的代码中,此时就可以pull push代码了

    原文地址:https://www.cnblogs.com/zhang-zi-yi/p/10749014.html
  • 相关阅读:
    vue中使用clipboard.js复制分本
    聊聊IOCP,聊聊异步编程
    dubbo RPC超时异常小结
    redis4.0 集群,jedis客户端连接配置
    Centos7 Zookeeper
    阿里云Centos 7.4 mssql-server
    Redis4.0 Cluster — Centos7
    Elasticsearch学习笔记 一
    Centos7安装ES 和 Docker搭建ES
    使用Docker快速创建.Net Core2.0 Nginx负载均衡节点
  • 原文地址:https://www.cnblogs.com/jpfss/p/10925842.html
Copyright © 2011-2022 走看看