Git

git介绍

  1. 由Linus用C语言编写.

  2. 分布式版本控制系统

  3. 集中式版本控制系统 CVS,SVN缺点:

    • 缺点:更新速度慢,必须联网.
  4. 集中式版本控制系统工作原理:

    • 版本库放在中央处理器.
    • 处理数据时:先从中央处理器获取数据,个人处理完数据后,再传送到中央处理器.
  5. 分布式版本控制系统工作原理:

    • 去中心化.
    • 每一个主机都是一个版本库.
    • 无需联网,除非主机之间需要相互传送文件.

git常用命令

  1. git config 用来获取并设置存储库或者全局选择.

    • 查看用户名和邮箱.

      • git config - -global user.name.
      • git config - -global user.email.
    • 修改用户名和邮箱.

      • git config - -global user.name user.
      • git config - -global user.email email.
  1. git init 文件名

    • 把当前文件夹或目录设置为git可以管理的仓库.
    • .git 文件用来管理跟踪版本库.
  2. 将文件添加到暂存区

    • git add 文件名.
  3. 将当前在暂存区的所有文件提交到版本库

    • git commit 文件名.
    • -m参数::对要提交的文件进行说明.
    • 多次上传add,一次提交commit.
  4. 查看工作区和暂存区的文件状态

    • git status.
  5. 查看工作区和版本库最新文件的差异

    • git diff HEAD - - 文件名.
  6. 查看工作区和暂存区文件的差异

    • git diff 文件名
  7. 查看commit历史

    • git log.
    • –pretty=oneline 简化commit历史记录.
  8. 回退到某个版本

    • git reset - -hard commit ID .
  9. 回退到上一个版本

    • git reset - -hard HEAD^.
  1. 查看历史命令

    • git reflog.
  1. 撤销工作区文件的修改

    • git checkout - -文件名.
  2. 撤销暂存区文件的修改

    • git reset HEAD 文件名
  3. 删除版本库文件

    • git rm 文件名
    • rm 删除工作区的文件,前面不带git.
    • 删除版本库里的文件后需要commit.

git远程仓库

  1. 生成SSHKey

    • ssh-keygen -t rsa -C “user@example.com“.
    • id_rsa 私钥,id_ras.pub公钥.
  2. 为GitHub设置SSHKey的原因

    • 确保仓库内容的推送是本人推送.
  3. GitHub作为远程仓库的两个好处

    • 作为远程同步仓库,备份本地仓库.
    • 通过GitHub方便多人协同工作.
  4. 关联本地仓库和远程GitHub仓库

  5. 推送内容到仓库

    • 把当前分支推送到远程仓库对应分支.

      • git push -u orign master.
    • 加-u 参数 是为了把本地仓库master分支与远程仓库master分支关联起来,此后再次推送不再需要加-u参数,简化命令.

    • 把本地未push分叉提交历史整理成直线

      • git rebase
  6. 从远程库克隆到本地

    • 两种克隆方式:

    • 查看远程库信息

      • git remote
      • git remote -v
    • 删除远程库

      • git remote rm 远程仓库名
    • git支持多种协议,但相比于https,git协议最快.

git分支管理

  1. HEAD只指向分支,而且仅指向当前分支,master是主分支,指向提交点.

  2. 分支合并的原理

    • 让master分支指向与已修改提交分支相同的提交点.
  3. 创建分支

    • 创建分支并切换

      • git checkout -b分支名称.
      • git switch -c 分支名称.
    • 如果分支存在则表示切换分支

      • git checkout 分支名称 .
      • git switch 分支名称.
  4. 查看所有分支及当前分支

    • git branch
  5. 分支合并

    • git merge 分支名称.
  6. 分支删除

    • git branch -d 分支名称 .
    • git branch -D 分支名称 (强制删除分支).
  7. 查看分支合并提交历史

    • git log - -graph - -pretty=oneline - -abbrev-commit.
  8. fast forward模式

    • 分支的默认模式为fast-forward模式,删除分支后不保留分支信息.

    • 如想保留分支信息,可使用如下命令

      • git merge - -no-ff -m “分支合并说明 “ 分支名称.
      • –no-ff 表示禁用fast-forward模式,-m 表示对被合并分支进行说明.
  9. 分支工作现场保存

    • 保存当前分支工作现场

      • git stash .
    • 查看保存的分支现场

      • git stash list.
    • 仅恢复分支

      • git stash apply.
    • 删除分支

      • git stash drop.
    • 恢复分支并删除

      • git brash pop.
    • 把修复的分支bug合并到当前分支

      • git cherry-pick < commit id >
  10. 抓取远程库最新提交

    • git pull.
    • 创建本地分支与远程分支的关联。 git branch - -set-upstream-to=origin/dev dev.

git标签管理

  1. 在git中打标签是为了管理各个历史版本,便于寻找

  2. 创建标签(默认打在最新提交上)

    • git tag 标签名
  3. 查看所有标签

    • git tag
  4. 给历史某个版本打标签

    • git tag -a 标签名 -m” 说明” 提交commitid
    • -a 指定标签名 -m指定标签说明
  5. 查看标签信息

    • git show 标签名
  6. 删除标签

    • git tag -d 标签名
  7. 推送标签到远程库

    • 推送单个标签

      • git push origin 标签名.
    • 一次性全部推送

      • git push origin - -tags
    • 从本地删除标签

      • git tag -d 标签名
    • 从远程删除标签

      • git push origin :refs/tags/标签名

git自定义

  1. 创建 .gitignore文件

    • 在window中通过文本编辑器创建
  2. 查看.gitignore文件的过滤规则

    • git check-ignore -v 文件名
  3. 为git命令配置别名

    • git config - -global alias.别名 原名
  4. 删除别名

    • 查看.gitconfig配置文件并删除相对应的行

      • cat .gitconfig.