Loading

2-Git

Git简介

  • Git是最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

集中式和分布式

  • 集中式
    • 版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器
  • 分布式
    • 根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上

安装Git

  • yum install git

创建版本库

  • 版本库又被称为仓库,【repository】,初期可以理解为一个目录,这个目录里面管理的文件都可以称为被git管理起来的,每个文件的修改,删除等的操作git都能进行跟踪
  • git init
    • 将一个普通目录变成版本库
      • .git是一个目录,就是用来跟踪管理版本库
  • git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    # cat查看时可以显示
    git config --local user.email "you@example.com"
    git config --local user.name "Your Name"
    • 设置账号的缺省身份标识
    • 用户名和邮箱来自github上的注册
  • git add filename
    • 将文件添加到缓存区/暂存区
    • git add .
  • git commit -m "日志"
    • 提交文件到版本库【仓库】
  • git commit -a -m '日志'
    • git commit -a 相当于运行 git add 把所有当前目录下的文件加入暂存区域再运行
  • 多次add添加,commit提交一次

版本回退

  • git status
    • 查看仓库当前的状态
  • git diff filename
    • 查看仓库具体的改动,如果无改动,则无显示
  • git reset --hard 版本号【commit id】
    • 或者HEAD^代替版本号
  • git log
    • 查看提交历史记录,以便于确定回到哪个历史版本
  • git reflog
    • 用git reflog查看历史执行过的git操作,从上往下寻找第一个commit的操作,则是未来的最新的版本

工作区与版本库

  • 工作区
    • 就是你电脑中的能看到的目录【python2020】
  • 版本库
    • 工作区中有一个隐藏的目录.git,该目录就是git中的版本库
    • 暂存区
      • git add
    • git仓库
      • git commit

其他命令

  • git checkout -- a.txt
    • 撤销工作区的修改(注意空格)
  • git reset HEAD a.txt
    • 撤销暂存区的修改

$PATH变量

  • 如果需要直接执行某个命令,需要将其添加至PATH路径中
  • echo $PATH
    • 查看PATH有哪些
  • PATH=${PATH}:/opt/bin
    • 追加PATH
      • 暂时
      • 如果需要永久追加,需要将其写入.bashrc(家目录或者etc下的.bashrc)
    • 或者将软链接放入path
      • n -s /root/lotuslaw /usr/bin/lotuslaw

时光穿梭机

  • git status
    • 查看仓库的当前状态
  • git diff filename
    • 查看仓库中文件的具体改动
  • git reset --hard 【commit id】
    • 版本回退
    • git log
      • 查看提交历史记录
    • git reflog
      • 查看历史执行过的git操作
  • git checkout -- <文件>
    • 丢弃工作区的改动
  • git reset HEAD <文件>
    • 取消暂存
  • 对于删除文件的跟踪
    • rm file
      git rm file # 相当于add
      git commit -m '日志'

远程仓库

  • 准备
    • 创建GitHub账号
    • 生成ssh key
      • 密钥,建立本地和网络之间的连接
      • ssh-keygen -t rsa -C "github的注册邮箱"
      • cat .ssh/id_rsa.pub
      • 添加私钥
        • ssh-agent bash
          ssh-add id_rsa
    • 密钥GitHub
    • 检测是否添加成功
      • ssh -T git@github.com
      • 码云:ssh -T git@git.oschina.net
  • 建立连接
    • 将本地仓库和远程仓库联系起来
    • git remote add origin ssh地址
      • 关联远程仓库
    • git push [-u] origin master
      • 推送本地仓库到远处仓库
      • 第一次加-u
      • 如果版本有问题,先拉取再推送
      • git push --all
    • git pull origin master
      • 从远程仓库拉取分支到本地
      • git pull --all
    • 本地修改----> add到暂存区 ---> commit到本地仓库 ---> push到远程仓库
  • 克隆
    • git clone ssh地址
      • 克隆到本地之后,就可以任意修改本地工作区中的文件,修改完成之后,首先将修改add到暂存区,然后将暂存区中的修改提交到本地仓库,最后将本地仓库中的修改推送到远程仓库
      • 克隆远程仓库到本地(会自动创建本地仓库并关联)

分支管理

  • 创建、合并分支
    • git checkout -b dev
      • 切换到一个新分支 'dev'
    • git branch
      • 查看有哪些分支,*号表示当前分支
    • git checkout master
      • 切换分支
    • git merge dev
      • 在master分支下合并分支
      • 合并某个子分支到当前分支
    • git branch -d dev
      • 删除分支
  • 解决冲突
    • - 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
      - 解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
      - 用git log --graph命令可以看到分支合并图
  • 分支合并策略
    • > - master分支应该是非常稳定的,仅仅使用master分支发布版本,平时不在上面干活
      > - 比如:每个人都在dev的分支上干活,每个人都有自己的分支,时不时的向dev上合并代码就可以了
      > - 比如:发布1.0版本,再把dev上的代码合并到master上面
      > - 合并分支时,加上--no-ff参数表示使用普通模式进行合并,合并之后可以查看历史 记录,而Fast-Forword快速模式没有历史记录
    • 合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息
    • 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息
    • git merge --no-ff -m "222-1" dev
    • git log --graph

标签管理

  • 创建标签
    • git tag v1.0
    • git tag v2.0 ae20ec5
      • 为指定commit id创建标签
    • git tag
      • 查看标签
  • 操作标签
    • git show v1.0
      • 查看指定标签的详细信息
    • git tag -a v0.1 -m "version 0.1" e7423195
      • 创建标签,携带标签的描述信息
    • git tag -d v0.1
      • 删除标签
    • git push origin --tags
      • 将本地仓库中的标签推送到远程仓库
    • git push origin :refs/tags/v0.2
      • 删除远程仓库中的指定标签

解析地址

  • /etc/hosts
  • 10.36.139.5 git.test.com
posted @ 2021-05-23 16:05  lotuslaw  阅读(55)  评论(0编辑  收藏  举报