Skip to content

Latest commit

 

History

History
304 lines (170 loc) · 13.9 KB

README.md

File metadata and controls

304 lines (170 loc) · 13.9 KB

Git 与 GitHub

Git 的起源

"自由主义( 开源 ) 教皇" 林纳斯·托瓦兹

  • Linux
  • Git

Git 是什么?

  • Git 是目前世界上最先进的分布式版本控制工具( 没有之一 )

Git 的使用

Git 的安装

  • Windows git 下载地址 :

    1. Git - Downloading Package (git-scm.com)
    2. 下载 -> 默认选项安装
    3. 桌面右键 点击 Git Bash Here 即可看到一个终端窗口
    4. 在终端内输入 git --version 如果看到版本信息即安装成功
  • 安装完成后,需要最后一步设置,在终端内输入(不要复制 英文输入法下手打)

    1. git config --global user.name"Your Name"

    2. git config --global user.email"email@xxx.com"

      **备注:**以上二步的姓名和邮箱可以随意更改,建议使用自己的

    3. git config user.name 用于查看配置的姓名

    4. git config user.email 用于查看配置的邮箱

    5. 因为 Git 是分布式版本控制系统,所以每个机器必须配置:用户名和email地址

常用 Linux命令( 部分 )

  • mkdir xxx 新建文件夹
  • vi x.txt 新建/编辑一个名为 x 的 txt 文件
    • 输入 i 进入编辑模式
    • Esc + : +wq 保存并退出
    • Esc + : + q! 不保存退出
  • cd xxx 进入一个名为 xxx 的文件夹
  • cd .. 返回上一级目录
  • ls 列出当前文件夹所有的文件
  • pwd 显示当前目录
  • cat x.txt 显示 名为 x 的 txt 文件的内容
  • clear 清屏( 需要注意 : cmd 控制台中 cls 为清屏 )

工作区+版本区+暂存区

  • 工作区 ( working Directory ) : 简单的理解 —— 你在电脑中能看到的目录
  • 暂存区 ( stage ) : 介于 工作区 和 版本区 中间,是工作区到版本区的必经之路
  • 版本库 ( Repository ) : 工作区有一个隐藏目录 .git ,这个文件夹不算工作区,而是 Git 的版本库
    • 第一步 : git add 把文件添加进暂存区
    • 第二步 : git commit 把暂存区的所有内容提交到当前版本库

创建版本库

  • git init 命令 : 初始化版本库

    • 创建成功会提示 : Initialized empty Git repository in C:/Users/31195/Desktop/xxx/.git/
    • 目录上会多一个 .git 的文件夹( 没有显示的请打开 显示隐藏文件 ),这个文件夹是 Git 来跟踪管理版本库的,不要去修改/删除里面的内容
  • git add x.xx 命令 : 添加指定文件到暂存区

    • 没有任何提示,代表提交成功( Linux的设计理念 )
    • 若未初始化,则会提示: fatal: not a git repository (or any of the parent directories): .git
    • 失败则会提示 : fatal: pathspec 'x.xx' did not match any files
    • 可能出现:warning: LF will be replaced by CRLF in xxxx
      • 原因 : Linux和Windows的换行符不一致导致
      • 解决方法 :执行 git config --global core.autocrlf false
  • 怎么查看文件有没有添加成功

    • git status
      • 显示 红色 则未提交到暂存区
      • 显示 绿色 则已经提交到暂存区
  • git commit -m '对本次提交的描述'

    • 显示则代表 已经成功提交到版本库中

      [master (root-commit) 1c2f825] xxxx
       1 file changed, 0 insertions(+), 0 deletions(-)
       create mode 100644 "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"
      
    • 如果只输入git commit会出问题,这时需要 ESC + : + q! 退出即可

git三区图示

差异对比

  • git diff : 比较暂存区和工作区

05_1

  • git diff --cached : 比较版本库与暂存区

  • git diff master : 比较版本库和工作区

    05_3

日志 + 版本号

  • git log : 显示从最近到最远的所有提交日志

    06_1
  • git reflog : 显示每次提交 ( commit ) 的 commit id

    06_2

版本回退 + 版本穿梭 + 版本撤销

  • git reset --hard HEAD^ 版本回退( 回退一次提交 )

  • git reset --hard 版本号 回退到指定版本号的 commit id 版本

  • git reset HEAD版本库中的文件去替换暂存区的全部文件

  • git checkout --x.xxx暂存区的指定文件去替换工作区的指定文件 危险

  • git checkout HEAD x.xxx版本库中的文件替换暂存区工作区的文件 危险

  • git rm --cached x.xxx暂存区删除文件

删除文件

  • git rm x.xxx 删除文件
  • git rm -r xxxx 删除文件夹
  • 常见问题

08_1

Git 完整图示

08_2

分支

  • git checkout -b dev 创建 dev 分支,并切换到 dev 分支
  • git branch 查看当前分支
  • git checkout master 切换到主分支
  • git merge dev 合并 dev 分支到当前分支
  • git branch -d dev 删除指定分支
  • git diff 分支1 分支2 显示出两个分支之间所有差异文件的详细差异
  • git diff 分支1 分支2 --stat 显示出两个分支之间所有差异文件列表
  • git diff 分支1 分支2 x.xxx 显示指定文件的详细差异

9_1

版本冲突

  • 合并分支时,如果在同一个文件的同一个地方,都修改了或新增内容会引起版本冲突
  • 解决版本冲突最好的办法是借助 Webstorm ( 或 VS Code ) 解决,简单且高效

10_1

GitHub

GitHub 是什么?

  • GitHub 是一个 Git 项目托管网站

GitHub 能做什么?

  • 能够分享你的代码或其他开发人员配合一起开发

  • GitHub 是一个基于 Git 的代码托管平台,Git 并不像 SVN 那样有一个中心服务器。目前我们使用到的 Git 命令都是在本地执行,需要将数据放到一台其他开发人员能够连接的服务器上

GitHub 远程仓库的使用

关联 : 本地有仓库,要和远程仓库做关联
  • git init

  • **git add ***

  • git commit -m 'this is NO.1 commit'

  • 在 GitHub 上创建一个远程仓库

  • git remote add origin https://<token令牌>@github.com/<GitHub用户名>/<仓库名> 2021年8月14号更新后,传统的提交方式已经失效。需要采用token令牌的方式提交

    • token令牌获取方式

      1. 在右侧点击头像 点击 Settingsimage-20210819172238726
      2. 点击图上红色框image-20210819172631615
      3. 点击图上红色框image-20210819172709515
      4. 点击图上红色框image-20210819172840087
      5. Note 可以随便写image-20210819173010889
      6. token的过期时间 建议设置成无限期限image-20210819173115385
      7. 为不同的用户(组)生成不同的token,给予不同的token不同的权限。自己个人用的话,全选就可以image-20210819173204936
      8. 创建token等待系统生成tokenimage-20210819173240715
      9. token 记得保存好,离开页面后 将无法再看到令牌image-20210819173437351

      更详细的步骤 请参考官方文档:创建个人访问令牌 - GitHub Docs

推送 : 本地有仓库有内容,要推送给远程库
  • git push -u origin master
  • 第一次推送的时候 需要加上 -u 参数,Git 不但会把本地的 master 分支内容推送到远程新的 master 分支,还会把本地 master 分支和远程的 master 分支关联起来,在以后推送时可以简化命令 git push origin master
  • 备注 : 正常情况下,成功推送一次后,电脑会记住相关信息。下次推送时不会再提示输入。若电脑不能自动记住相关信息,需要执行命令 : git config --global credential.helper store
拉取 : 本地仓库有内容,获取远程库的新内容
  • git pull origin master 将远程仓库的 master 分支上的代码版本复制/合并到本地 master 分支上
  • git fetch origin master:tmp 新建一个tmp分支,将远程仓库的 master 分支上代码版本复制到本地 tmp 分支上,不会自动合并
克隆 : 本地无仓库,要获取一个完整的远程库
  • git clone 远程仓库地址

  • **备注:**只在第一次获取远程库时,才需要克隆

Git 常用命令总结

  • mkdir XXX 创建一个空目录 XXX指目录名

  • pwd 显示当前目录的路径

  • cat xxx 查看xxx文件内容

  • git init 把当前的目录变成可以管理的 git 仓库,生成隐藏的.git 文件夹

  • git add xxx 把xxx文件添加到暂存区

  • git commit -m 'xxx' 提交文件 -m后面是注释 必须写

  • git status 查看仓库状态

  • git log 查看提交历史记录

  • git reset --hard HEAD^ 往上回退一个版本

  • git reflog 查看提交历史记录的版本号id

  • git checkout --xxx 把xxx文件在工作区的修改全部撤销

  • git rm xxx 删除xxx文件

  • git remote add origin https://<token令牌>@github.com/<GitHub用户名>/<仓库名> 关联一个远程库

  • git push -u ( 第一次加上 -u ,以后不用 ) origin master 把当前master分支推送到远程库

  • git clone 远程仓库地址 从远程库克隆

  • git checkout -b dev 创建dev分支,并切换到dev分支

  • git branch 查看当前所有的分支

  • git checkout master 切换回master分支

  • git merge dev 在当前分支合并dev分支

  • git branch -d dev 删除dev分支

  • git branch xxx 创建分支xxx

  • git remote 查看远程库信息

  • git remote -v 查看远程库的详细信息

  • git pull origin master 将远程库的更新拉取到本地并自动合并

提交代码的规范

  • 每次提交之前:先更新,再提交
  • 敏感时间点,一定要及时更新文件
  • 多提交,避免 “只关注写代码,不关注提交” 的现象
  • 每次提交必须写清晰明了的提交说明
  • 不要提交不能通过编译的代码
  • 不要提交自己不明白的代码
  • 慎用锁定功能( 尽量避免使用锁,不轻易解锁已上锁的文件 )
  • 不要提交本地自动生成的文件、文件夹