• Git详解


    01-Git常用命令

    https://github.com/huangyanpeng1108/Python.git

    git config --local user.name xxx
    
    git config --local user.email xxx@163.com
    
    git init  初始化
    
    git status  查看仓库状态
    
    git add a.py   把新创建的文件从工作目录提交到了暂存区
    
        git add .   将所有文件提交到暂存区
    
    git commit -m '提交信息',将暂存区的文件提交到版本库的分支。
    
    git log,查看提交记录,即:历史版本记录
    
    git reflog   查看回滚记录
    
    git reset --hard  1e394d414c6440720161318cd8c53fcda00673ab  回滚到指定版本
    
    
    
    stash:
    stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;
    stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。
    第一步:git add .
    第二步:git stash   
    
    git stash pop  将开发到一半的功能从“某个地方”再次拿会工作区继续开发
    
    git stash list        查看“某个地方”存储的所有记录
    
    git stash clear     清空“某个地方”
    
    git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
    
    git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 
    
    git stash drop      编号,删除指定编号的记录
    
    
    
    branch称为分支:
    默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支
    
    git branch dev   创建新分支,即:拷贝一份当前所在分支代码到新分支
    
    git checkout dev   切换到dev分支
    
    git checkout master   切换回master分支
    
    git merge dev   将dev分支内容合并到master分支,先切换回master分支再进行
    
    git branch                          查看所有分支
    
    git branch -m 分支名称        创建并切换到指定分支
    
    git branch -d 分支名称         删除分支
    
    git merge 分支名称              将指定分支合并到当前分支
    
    
    
    基于GitHub进行代码远程托管:
    
    git remote add origin https://github.com/huangyanpeng1108   为地址起一个别名origin
    
    git push origin master  将本地master分支内容以及版本信息推送到GitHub
    
    git push origin dev  将本地dev分支内容以及版本信息推送到GitHub
    View Code
     1 git config --local user.name xxx
     2 
     3 git config --local user.email xxx@163.com
     4 
     5 git init                  初始化
     6 
     7 git status                查看仓库状态
     8 
     9 git add a.py              把新创建的文件从工作目录提交到了暂存区
    10 
    11     git add .             将所有文件提交到暂存区

    11 git rm --cached a.py 将文件从缓存区移回工作目录
    12 13 git commit -m '提交信息' 将暂存区的文件提交到版本库的分支。 14 15 git log 查看提交记录,即:历史版本记录 16 17 git reflog 查看回滚记录,查看所有的commit历史记录 18 19 git reset --hard 1e394d414c6440720161318cd8c53fcda00673ab 回滚到指定版本 20
    补充:
      rm -f a.py 删除文件a.py
      git rm -f a.py 同时从暂存区和工作目录删除a.py
      git mv a a.txt 将工作区和缓存区的a都同时改名为a.txt,后再进行一次commit
      git diff 文件名 将暂存区与本地工作目录作对比,得出有哪些改动
      git diff --cached 文件名 将暂存区与本地仓库做对比
      git log --oneline
      git log --oneline --decorate
      git log -p 显示出修改内容的变化
      git log -2 显示最近的2条记录
      git checkout -- a 撤回对本地工作目录a的修改,回退到修改前的状态(前提是还没有提交到缓存区,只改变了本地工作目录)
      git reset HEAD a 撤回对缓存区的修改,回退到修改前的状态(前提是修改已经提交到了缓存区,但本地仓库还没有改)
      

    21 22 23 stash: 24 stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态; 25 stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。 26 第一步:git add . 27 第二步:git stash 28 29 git stash pop 将开发到一半的功能从“某个地方”再次拿会工作区继续开发 30 31 git stash list 查看“某个地方”存储的所有记录 32 33 git stash clear 清空“某个地方” 34 35 git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突) 36 37 git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 38 39 git stash drop 编号,删除指定编号的记录 40 41 42 43 branch称为分支: 44 默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支 45 46 git branch dev 创建新分支,即:拷贝一份当前所在分支代码到新分支 47 48 git checkout dev 切换到dev分支 49 50 git checkout master 切换回master分支 51 52 git merge dev 将dev分支内容合并到master分支,先切换回master分支再进行 53 54 git branch 查看所有分支 55 56 git branch -m 分支名称 创建并切换到指定分支 57 58 git branch -d 分支名称 删除分支 59 60 git merge 分支名称 将指定分支合并到当前分支 61 62 63 64 基于GitHub进行代码远程托管: 65 66 git remote add origin https://github.com/huangyanpeng1108/Python.git 为地址起一个别名origin 67 68 git push origin master 将本地master分支内容以及版本信息推送到GitHub 69 70 git push origin dev 将本地dev分支内容以及版本信息推送到GitHub
    # 补充:
    
    git log --pretty=oneline   查看提交日志
    
    git checkout 'first.py'       当对文件做了修改,但没有提交的话,可以用checkout进行回滚
    
    git relog   查看所有的操作记录
    
    彻底删除文件:
    1. rm first.py
    2. git add first.py
    
    恢复刚才删除的文件:
    1. git reset HEAD first.py
    2. git checkout  first.py
    
    冲突:
    1. more play.py
    2. vim play.py
    3. 比较不同 beyond compare 软件

    场景:

    在公司,新电脑第一次使用,需要将代码从GitHub中获取并继续开发,开发完事下班就下班回家。

      操作步骤:

    git clone https://github.com/huangyanpeng1108/Python.git    将项目从GitHub中获取,默认获取到得只有master分支
    
    git branch dev origin/dev     创建dev分支且和远程dev分支同步
    
    git checkout dev              切换到dev分支
    
    vim app01/views.py            继续开发新功能
    
    git add .                     添加文件到版本库的暂存状态
    
    git commit -m '公司开发功能1'   提交新功能到版本库的分支
    
    git push origin dev           提交dev分支内容到远程GitHub托管仓库的dev分支

    在家里,由于白天在公司已经开发一部分功能并提交到GitHub,家里电脑的代码还是昨晚的版本,所以需要从GitHub拉去最新代码,然后继续开发。

      操作步骤:

    git checkout dev        切换到dev分支
    
    git pull origin dev     从远程GitHub仓库获取dev分支最新内容,并合并到本地
    
    vim app01/views.py      继续开发新功能
    
    git add .               添加文件到版本库的暂存状态
    
    git commit -m '家里开发功能1'   提交新功能到版本库的分支

    在公司,由于昨天晚上在家已经开发了一部分功能,在公司需要先把昨晚开发的功能从GitHub中拉取,并继续开发。

      操作步骤:

     1 git checkout dev       切换到dev分支
     2 
     3 git fetch origin dev   从GitHub仓库获取dev分支最新内容到版本库的分支
     4 
     5 git merge origin/dev   将版本库的分支内容合并到工作区
     6 
     7 vim app01/views.py     继续开发新功能
     8 
     9 git add .              添加文件到版本库的暂存状态
    10 
    11 git commit -m 'xxxxxxxxxxx'   提交新功能到版本库的分支

    02-Git的安装及GitHub的使用

    #在本地生成一对sskey
    
    ssh-keygen -t rsa
    
    ll /root /.ssh/
    
    # 查看公钥
    cat /root/.ssh/id_rsa.pub

    03-GitLab的使用

    1.安装

    官网:https://about.gitlab.com

    环境:CentOS 7系统,虚拟机VMware,2G内存;

    生产环境:建议配置4G内存,放在独立的服务器上,防止端口冲突。

    安装方式一:

    安装方式二:

    建议安装的版本:10.2.2

    建议到清华大学开源软件镜像站去下载软件包

    放在本地 /usr/local/src/下:

    cd /usr/local/src/
    
    # 上传本地下载好的安装包
    rz

    安装

    # 执行命令
    
    rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

    更改默认配置文件

    vim /etc/gitlab/gitlab.rb
    
    # 更改的地方
    external_url    "http://10.0.0.11"

    执行配置文件

    # 只要更改了配置文件,就要执行,对配置文件进行重新配置
    
    gitlab-ctl  reconfigure

    查看服务状态

    # 查看服务状态
    
    gitlab-ctl status
    
    # 重新启动
    
    gitlab-ctl restart

     2.服务构成

    3.GitLab的常用命令

    # 对服务进行重新配置
    
    gitlab-ctl reconfigure
    
    # 重启
    
    gitlab-ctl restart
    
    # 启动,可以加上对应的服务,不加则表示对所有服务进行重启
    
    gitlab-ctl start
    
    # 停止,同上
    
    gitlab-ctl stop
    
    # 查看服务状态
    
    gitlab-ctl status
    
    # 查看所有服务的日志
    
    gitlab-ctl tail
    
    # 各项服务的日志目录
    
    ll /var/log/gitlab/
    
    # 查看gitlab的数据
    
    cd /var/opt/gitlab/gitlab.rb
    
    # gitlab的默认备份数据都在 backups里
    
    # gitlab程序本身安装在了 /opt/gitlab 下

    4.GitLab的系统设置

    首先,建议,要在管理区域、系统设置里,关闭注册用户功能。

    定制登录界面:

    在设置里,选项Appearance(外观),进行更改。(导航,标题,LOGO,描述)

    5.GitLab的仓库管理

      创建Group,设置 Group path,Group name与路径相同。设置Visibility Level(权限):默认选择 Private(私有的,Internal(内部的),Public(公共的)

    6.GitLab的备份管理

    gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitlab相同的版本。将gitlab迁移到另一台服务器上的最佳方法就是通过备份和还原。

    备份文件将保存在配置文件中定义的backup_path中,文件名为TIMESTAMP_gitlab_backup.tar,TIMESTAMP为备份时的时间戳。TIMESTAMP的格式为:EPOCH_YYYY_MM_DD_Gitlab-version

    如果自定义备份目录需要赋予git权限.

    在配置文件/etc/gitlab/gitlab.rb 里加入

    # 备份文件保留路径
    
    gitlab_rails['backup_path'] = '/data/backup/gitlab'
    
    # 备份保留的时间(以秒为单位,这个是七天默认值)
    
    gitlab_rails['backup_keep_time'] = 604800      

    执行

    # 完成后执行
    gitlab-ctl reconfigure
    
    不报错,以下两步可以不执行:
    # 创建目录
    mkdir /data/backup/gitlab
    
    # 如果自定义备份目录需要赋予git权限
    chown -R git.git /data/backup/gitlab

    执行备份,生成一次备份

    # 生成备份文件的命令
    
    gitlab-rake gitlab:backup:create
    
    # 检查生成的备份文件
    [root@node2 ~]# ll /var/opt/gitlab/backups/
    
    total 272
    
    -rw------- 1 git git 276480 Dec  9 17:24 1512811475_2017_12_09_10.2.2_gitlab_backup.tar

    定时备份

    在定时任务Crontab里添加:
    
    0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
    
    注:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出。

    7.数据恢复

    只能还原到与备份文件相同的gitlab版本。

    执行恢复操作时,需要gitlab处于运行状态,备份文件位于gitlab_rails['backup_path']

    [root@node2 ~]# ll /var/opt/gitlab/backups/
    total 272
    -rw------- 1 git git 276480 Dec  9 17:24 1512811475_2017_12_09_10.2.2_gitlab_backup.tar
    
    # 停止连接到数据库的进程(也就是停止数据写入服务),但是保持GitLab是运行的。
    
    [root@node2 ~]# gitlab-ctl stop unicorn
    ok: down: unicorn: 0s, normally up
    
    [root@node2 ~]# gitlab-ctl stop sidekiq
    ok: down: sidekiq: 0s, normally up
    
    确认:
    [root@node2 ~]# gitlab-ctl status

    接下我们进行恢复,指定时间戳你要从那个备份恢复:

    # 执行恢复命令
    
    [root@node2 ~]# gitlab-rake  gitlab:backup:restore BACKUP=1512811475_2017_12_09_10.2.2
    
    注:1512811475_2017_12_09_10.2.2  是 备份文件名的数字部分
    
    一路yes
    
    # 完成后重启GitLab服务
    
    [root@node2 ~]# gitlab-ctl  restart
    
    # 检查GitLab的服务
    
    [root@node2 ~]# gitlab-rake  gitlab:check SANITIZE=true
  • 相关阅读:
    从a文件判断是否删除b文件中的行(sed示例)
    绝对路径的表示方式为什么是"/usr"而不是"//usr"
    判断ssh远程命令是否执行结束
    彻底搞懂shell的高级I/O重定向
    Resource Agent:LSB和OCF
    流程控制语句(MySQL/MariaDB )
    MySQL/MariaDB中游标的使用
    翻译:DECLARE HANDLER语句(已提交到MariaDB官方手册)
    从集合的无序性看待关系型数据库中的"序"
    MariaDB/MySQL存储过程和函数
  • 原文地址:https://www.cnblogs.com/pgxpython/p/9929759.html
Copyright © 2020-2023  润新知