GIT命令大全(纯干货)

566 阅读4分钟

GIT:分布式版本控制系统

版本控制系统

  • GIT分布式控制系统
  • SVG集中式版本控制

开发中我们把每一次的修改都有效的进行记录,形成一个版本。后期如果需要回退到某个版本,或者将当前的版本和某一个版本进行比较,都可以有效的进行管理。

分布式控制系统的特点

  • 所谓分布式,就是每一个开发者本地客户端都是一个完整的仓库,都能记录历史版本信息,这样不用连网,也能生成版本记录,也可以快速回退到某个版本。
  • GIT是按照源数据(文件流)来实现文件的传输,相比较SVG以文件传输更加快速。
  • GIT命令大部分都是linux命令

linux命令

windows操作系统:DOS窗口和DOS命令 ;linux服务器操作系统:LINUX命令(MAC终端使用的也是LINUX命令)

ls -a/-l :查看当前目录结构,-a是查看所有的文件包含隐藏的文件
cd xxx[文件的路径] :进入到执行的文件(进入到路径地址,可以粘贴到对应的操作命令窗口)
cd / :根目录
cd ./:当前目录
cd ../:上级目录
clear:清屏
mkdir:创建文件夹
touch:创建空的文件
vi:向文件中插入或者管理一些内容
   i=>进入到插入模式
   ESC + :WQ :退出内容的插入模式,把刚才编辑内容进行保存(:输入你要写的内容 W:write Q:quit 写入并提出)
echo:向指定的文件中输入内容,如果没有该文件则同时创建该文件并写入内容,输入覆盖式
echo xxx > xxx.xxx
cat:查看文件内容
cp:拷贝
rm:删除文件  -r(递归删除) -f(强制删除) 一旦删除无法还原

GIT的常规流程

  • 每一个GIT仓库都有三个存储代码的地方
    • 工作区:编写代码的文件夹
    • 暂存区:暂时存储每一次修改并提交的后的代码,但是并没有生成历史版本,只能获取到最新最后一次提交的版本
    • 历史区:存放所有的历史版本(每次提交到历史区就能形成历史版本)

注意: 每一次区域间的提交,都不会删除原有的区域中的内容,这样保证在下一次提交,通过对比,把最新的更改提交上去即可;

  • 创建一个仓库 $ git init
  • 提交到暂存区 $ git add -A/.
  • 提交到历史区 $ git commit xxx(不指定的话整体提交) -m '注释'
  • 查看各个区的提交情况$ git status
    • 红色文件代表在工作区
    • 绿色文件代表在暂存区
    • 没有文件表示都已经提交到历史区
  • 清空当前git窗口$ clear
  • 把暂存区的某一个文件删除(需求不是很多)
    • $ git rm --cached xxx
    • $ git rm --cached . -r删除暂存区中提交的

注意: 如果在删除的时候发现,该文件在工作区中已经被修改,则需要添加 -f 才能强制从暂存区中删除

  • 基于上次重新开发,将提交暂存区的历史记录覆盖当前工作区的内容
    • $ git checkout xxx.xxx
  • 查看每个区的区别
    • $ git diff列出所有的差异
    • $ git diff <file>工作区VS暂存区
    • $ git diff master工作区VS历史区master分支
    • $ git diff --cached暂存区VS历史区

细节处理

  • 第一次使用GIT,生成历史版本的时候,需要提供身份认证
在本地GIT全局环境下
$ git config -l
$ git config --global user.name 'z先森'
$ git config --global user.email 'zZ@163.com'
  • 提交的时候忽略一些文件(和项目没关系,还有文件太大)的提交
.gitignore:只有后缀名的文件,GTI提交所有忽略的文件清单
# dependencies
node_modules

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

# webStorm
.idea
  • 查看提交到历史区的记录$ git log
  • 查看提交到历史区以及回滚的记录$ git reflog

代码回滚操作

  • $ git checkout . 将暂存区的内容回滚到工作区,一旦回滚,工作区的内容无法恢复
  • $ git reset HEAD .将当前暂存区的内容回滚到上一个暂存区,目的是把上一个暂存区回滚到工作区
  • $ git reset --hard 版本号在历史区中回退到某一个版本,强制把暂存区和工作区的内容都变成该版本
  • $ history > 1.txt 将所有历史操作信息输出到1.txt

团队协作开发

  • 创建中央仓库: 基于github或者coding最好不要创建空仓库
  • 建立客户端本地仓库 origin 起的连接的名字
    • $ git remote add origin git仓库地址让本地仓库和远程仓库进行关联,这样才可以实现信息的同步
    • $ git remote -v查看是否连接成功
    • 把所有协同开发人员都列入仓库的开发群组中,后期可以用自己的github账号对仓库进行相应的操作
    • 也可以用同一个账号,然后在本地配置和账号相同的用户名和邮箱
    • $ git remote rm origin移除本地仓库和远程仓库的连接
    • $ git remote update origin更新链接通道
  • 一步到位-克隆: $ git clone "远程仓库地址" "本地仓库文件夹名字" 只要把远程仓库克隆到本地,就相当于在本地创建了仓库,而且自动建立了链接,并把远程仓库的内容克隆到本地。
  • 拉取仓库内容:$ git pull origin master把远程仓库master信息同步到本地master分支上
  • 把开发好的代码推送到仓库: $ git push origin master

冲突处理

  • 无分支管理模式
    • 不是同一行代码的冲突,通过命令行提示操作 :i + ESC + : + WQ
    • 同一行代码冲突,需要手动把代码进行合并
  • 分支管理模式:分支指的是历史区的分支,创建分支就是创建不同的线路,来管理历史版本
    • 将远程的master的内容拉取到本地master上,每个开发人员在本地创建自己的分支来进行切换和合并
    • $ git branch 查看当前的分支,*代表在哪个分支上
    • $ git branch dev创建一个dev的分支,创建完成会把本地的master分支内容同步到新创建的分支上。
    • $ git branch -D xxx:删除某分支
    • $ git checkout dev:切换到dev分支上
    • $ git checkout -b dev:上述俩步的简写,创建并切换到dev分支
    • $ git merge xxx :在该分支下合并某分支
    • $ git stash/$ git stash pop:在切换分支的时候,有一部分信息并没有提交称为历史版本,为了防止信息的丢失,先使用stash保存,然后再基于stash pop还原。