Git使用干货
1.Git背景介绍
作为分布式版本控制系统(Distribute Version Control System, DVCS),与本地版本控制系统,集中式版本控制系统相比,客户端不只获取最新的版本快照,而是把所有的代码镜像拉下来。这样的好处在于,如果服务器出现意外,可以拿任意一个本地仓库,即本地镜像恢复。
Git和其他版本控制工具相比,对待数据方式存在差异。大部分系统以文件变更历史方式存储信息,即基于差异的版本控制。如果一个文件一直未做修改,那么他一直无变化。而git则可以看做是对小型文件系统的一些列快照,每个版本都会对文件做一个版本记录。
补充:
1.1git在所有数据存储时,都会校验引用和。基于git中的文件的内容和目录结构计算出一个长度四十位的十六进制字符。
1.2git一般很难删除,可以放心操作(只要有提交,很难丢失)。如果内容出现混乱或者丢失,可以找撤销回退之术。
1.3git有三种状态:
已修改(modified),已经修改还未入库。
已提交(commited),表示数据已经安全保存到本地数据库。
已暂存(staged),已暂存,下次提交到快照中。
2.安装Git
2.1 Linux系统安装
方式一:[RPM] sudo dnf install git-all
方式二:[Ubuntu] sudo apt install git-all
3.Git配置文件
git配置文件
3.1 /etc/gitconfig:系统级配置文件 git config --system
3.2 ~/.gitconfig 或 ~/.config/git/config 文件: 只针对当前用户 --global
3.3 .git/config :当前仓库配置文件 --local
查看命令
git config --list --show-origin
4.用户配置
(官方给出的是--global的,即当前用户配置级)
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
$ git config --list
$ git help
$ git help config
注:1.编辑器也可以配置
$ git config --global core.editor emacs
(Vim、Emacs 和 Notepad++)
2. -h 很好使
5.Git基础使用
每个文件存无非就是两种状态,已跟踪和未跟踪。即已经纳入版本控制和未纳入版本控制,纳入版本控制的状态有可能是未修改,已修改和已暂存。
5.1 $ git status 检查文件状态
$ git status -s
$ git status --short
5.2 $ git add 开始跟踪文件,记录的是add时的版本,如果add后又改动了
肯定是要再add一遍的。
5.3 忽略文件名存入 .gitignore文件内
5.4 $ git diff 更加具体的展现文件内容差异
$ git diff --cached 查看已暂存起来的变化
5.5 $ git commit
$ git commit -m "xx"
简略写法,跳过暂存区
$ git commit -a -m "xx"
5.6 $ git rm xx
移除文件
$ git rm -f
如果删除之前文件已经修改或者放到暂存区,文件必须使用删除选项 -f 。这是一种安全特性,用于防止误删未添加到快照中的数据。
$ git rm --cached xx
将文件从git库删除,但是仍保留在当前工作目录中。使用场景,文件忘添加到 .gitignore 文件中去,导致误上传。
5.7 $ git mv file_from file_to
移动文件,内置一次add操作
5.8 $ git log
查看提交历史
$ git log --stat
查看每次提交的简略信息
$ git log --pretty=online
设置历史展现格式,比如当前就是每次提交一行展示,可以后面再加 --graph 展现分支,合并历史。
$ git log --since=2.weeks
限制输出长度
5.9 $ git commit --amend
文件放入暂存区后发现需要撤销。当上次提交以来还没有做任何修改,提交后马上执行此命令,快照保持不变,修改的只是提交信息。下次提交会代替撤销的提交。
5.10 $ git reset HEAD <file>
取消暂存
5.11 $ git checkout -- <file>
撤销对文件的修改
5.12 $ git remote -v
列出远程服务器分支
$ git remote add <shortname> url
添加远程仓库
$ git fetch <shortname>/<remote>
直接拉但是不会合并本地文件
$ gti push <remote> <branch>
将branch分支推送到remote远程服务器上
$ git remote show <remote>
查看远程某个仓库
$ git remote rename aa bb
改名
$ gti remote remove / git remote rm
移除
5.13 $ git tag
打标签,标签分为轻量标签和附注标签
$ git tag -a v11 -m "xx"
$ git show v11
$ git push orgin <tagname>
共享标签
$ git tag -d v1.4 / git push <remote> :refs/tags/ <tagname>
5.14 $ git checkout
指向某个版本
6 Git分支
Git 分支有五个对象:三个Blob对象(保存文件快照),一个树对象(记录目录结构和blob对象索引),一个提交对象(包含指向前述树对象的指针和所有提交信息)。
$ git branch test.
创建分支
$
补充中 。。。