1. 前言

之前工作的时候,从来没有仔细想过关于GitLab代码提交的问题,只是装了GIT在自己本机,每次新工作来的时候都是从master下克隆,自己建立分支在自己分支上开发,然后用vscode的小对勾加左下角的刷新提交到远程,基本上没有使用过命令行,但是,现在不行了。。。

Snipaste_2020-08-05_09-40.jpg

2. Git 基本原理和常用命令

四大区域:本地工作区 、 暂存区 、 本地仓储区 、 远程仓储区
基本流程: clone -> modify -> add -> commit -> push

# 从远程仓储拷贝,clone 和fetch都可以
git clone your_url
# vscode 打开文件夹,新建分支,开发修改, vscode认.git 文件夹
...
# 提交到暂存区,.表示提交全部
git add .
# 提交到本地仓储,vscode的小对勾的操作实际是合并了add和commit
git commit
# 提交到远程仓储,对应vscode的左下角的刷新
git push 
# 提交错误之后回滚到本地目录,add之前用checkout, add之后commit之前用reset
git checkout
git reset --hard 或者 git reset 加上 git checkout 
# commit之后push之前只能用reset从master从新拉取,push之后可能就没有办法了
git reset --hard origin/master
git reset --hard last_commit_id
# 另外,reset有三种模式,soft,mixed,hard,默认是mixed
# hard是将已提交的内容恢复到本地工作区、暂存区、仓储区,相当于清空重新替换;
# mixed和soft不影响本地工作区文件,soft是将commit的内容恢复到暂存区,
# mixed将add的内容和commit的内容全部恢复至未暂存,相当于本地文件不变,暂存区和本地仓储区都和要恢复的节点一致,
# 还有HEAD参数可以表示拉取前多少次的
git reset HEAD ~1

git图解.png

3. 一段代码理解
这是一个 .gitlab-ci.yml 文件的内容,config.yml 采用 aaa 文件下的,所以加了删除,为了防止代码冲突,加上了checkout 和 fetch --all

stages:
  - deploy
job:
  stage: deploy
  script:
    - cd /aaa/bbb/$CI_PROJECT_NAME
    - git checkout .
    - git fetch --all
    - git reset --hard origin/master
    - rm -f config.yml
    - npm install
    - pm2 restart Service-TReport-Com
  only:
    - master
  tags:
    - devops-dev

4. 其它常用命令

#列出所有本地分支
git branch
#列出所有远程分支
git branch -r
#列出本地分支和远程分支
git branch -a
#新建一个分支,但是依然停留在当前分支
git branch dev-new
#新建一个分支,并切换到该分支,它是git branch dev-new和git checkout dev-new的结合
git checkout -b dev-new 
#切换到指定分支,并更新工作区
git checkout [branch-name]
#切换到上一个分支
git checkout -
#撤销未add进缓存区的所有修改
git checkout --*
#撤销add之后commit之前某个文件的修改
git reset HEAD 文件名
git checkout --文件名
#删除本地分支,如果报is not full merged,把-d改为-D,强制删除
git branch -d [branch-name]
#删除远程分支,这个管事
git push orgin空格:[remote-name]
#上传本地分支到指定远程分支
git push [remote-name] [branch-name]
#强行推送当前分支到远程仓储,即使有冲突
git push [remote-name] --force
#推送所有分支到远程仓库
git push [remote] --all
#取回远程仓储的变化,并于本地分支合并
git pull [remote-name] [branch-name]
#显示一天前写了多少代码
git diff --shortstat "@{1 day ago}"

大雯子拖油瓶
7 声望0 粉丝