Git


概念

Git诞生

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!

集中式

集中式版本管理包括CVS及SVN等

  • 需要一台中心服务器保存核心版本,每一台工作电脑向核心服务器推送自己的更改
  • 必须要联网工作
  • 容错性差

分布式

分布式版本管理Git

  • 每台电脑平等的保存一个仓库和若干分支,但一般也有一台中心服务器充当交换角色
  • 不需要联网工作
  • 容错性好
  • 分支管理方便

仓库

版本库又名仓库,英文名repository,是文件管理的单元

管理范围

  • 版本控制系统,只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等
  • 而图片、视频这些二进制文件等管理,但不能跟踪具体变化

工作区和暂存区

  • 工作区是电脑里面的目录,直接操作的就是工作区
  • 暂存区stage是在工作区和版本库之间的缓冲区域
  • git add会将工作区的更改推送到暂存区,此时更改并未成为版本
  • git commit会将暂存区打包组成一个新的版本
  • 暂存区的内容是临时的,切换版本的时候暂存区会丢失

忽略特殊文件

命令

初始化仓库

  • git init 将当前文件夹初始化为仓库
    • 初始化后出现.git目录,用于记录跟踪仓库状态

信息配置

  • git config --global user.name ‘name’
  • git config --global user.email name@xxx.com
  • git config --global color.ui true 显示颜色
  • git config --global alias.st status 配置别名,示例用st代替status

查询

  • git status 查看状态
  • git log 查看日志 --oneline 用一行显示一个版本 --graph 用线显示出分支
  • git diff 查看工作区文件内容相对版本库修改 --cached 查看暂存区文件内容相对版本库修改

基本操作

  • git checkout -- file 丢弃工作区file文件的修改
  • git add {file} 添加文件从工作区到暂存区
  • git rm {file} 删除文件从工作区到暂存区
  • git reset [HEAD] {file} 从暂存区拉回到工作区
  • git commit -m “message” 提交暂存区到仓库
  • git commit [file1] [file2] -m “message” 提交指定文件更改到仓库
  • git commit -am “message” 添加所有修改并提交

时光穿越

  • git checkout {commit号} 切换HEAD指针位置,可以切到之前的commit位置,用于临时切回去查看
  • git reset --hard {commit号} 直接切换分支指针位置,用于版本回退
  • git reset --hard HEAD^^ 一个^代表HEAD指针往前退一个位置
  • git tag {标签号} 给commit(版本)打上标签,可以替代版本号

分支

  • git branch 查看分支
  • git branch {分支名} 创建分支
  • git branch -d {分支名} 删除分支
  • git switch/checkout {分支名} 切换分支
  • git merge {分支名} 将别的分支合并过来,直接合并两个分支
  • git merge --no-ff -m “message” {分支名} 把别的分支的更改加过来,别的分支还在

保存现场

  • git stash 把工作现场收拾保存起来,避免切换分支的时候丢失
  • git stash list 列出保存的工作现场
  • git stash apply [名字] 应用某个工作现场
  • git stash drop [名字] 删除某个工作现场
  • git stash pop 回到最近保存的工作现场并删除

远程

  • git clone [repository] 将远程仓库克隆下来
  • git remote add origin [repository] 将已有本地仓库与远程仓库关联起来,origin是习惯的远程名字
  • git remote 各种远程查看
  • git pull 从远程仓库中拉取变化
  • git rebase 变基,调整更改的基础,以将多个分支合并成一条
  • git push {远程库名} {本地分支名} 推送本地分支到远程仓库中
  • git push origin {本地branch}
  • git push origin {本地branch:远程branch}

进阶

  • git官网

文章作者: 万川
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 万川 !
  目录