git 从入门到退休
安装
软件下载
略
git 配置
git 在安装的时候,已经把环境变量配置到path 中了。
但是我们使用git 的时候,需要配置用户民和邮箱
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
# 配置完了,可以查看信息
git config -l
仓库
将一个项目的根目录
,作为仓库,仓库里的每个文件修改都有日志记录
基础指令
- 创建版本仓库
git init
生成.git
目录,保存仓库的所有内容 - 新增文件
git add xx.txt
# 添加一个
git add xx.txt xx2.txt
# 添加多个
git add abc
# 添加目录
git add .
# 添加库目录中所有文件 - 提交文件
git commit -m 'test'
# 【-m 后是对本次提交的描述】【提交添加的所有文件】
git commit xx.txt xx2.txt -m 'test'
# 提交某些文件
git commit -a -m "test"
# 自动add 并 commit 所有已跟踪并修改或删除的文件 - 文件状态
git status
# 在提交后,如果有文件改动,可以看到 - 文件改动
git diff xx.txt
# 查看该文件的改动情况(比对工作区和暂存区,若暂存区没有,比分支)
git diff head – xx.txt # 比对工作区和分支
git diff --staged xx.txt # 对比暂存和分支
日志 - 提交历史
git log
# 显示全部日志
git log --oneline
# 简洁日志显示
git log --oneline -2
# 显示最近两次日志
git log --oneline --graph
# 图形化显示
注意:此时q
可以退出日志
版本回退
git reset --hard head~
# 回退到上个版本
git reset --hard head~~
# 回退到上上个版本
git reset --hard head~5
# 回退到前5个版本
git reset --hard rewi34ooe...
# 回退到commit ID 那个版本
注意:
- 当回退版本时,git log 只能看到最早提交到 当前点提交的日志,git reflog 可以查看到全部日志。
- git add 的文件,也可以通过 git reset 回退
撤销修改
当我们文件中写了一些垃圾话的时候,可以直接用命令回退到之前保存的那个状态
- 工作区撤销
git checkout – xx.txt - 暂存区撤销
git reset head xx.txt
git checkout – xx.txt - 已提交撤销
git checkout – xx.txt # 但是工作区还是存在,所以还是直接回退版本或该文件和上个版本比对
分支
创建-切换
git branch new_branch
# 创建分支,会和当前分支保持同样的数据状态
git checkout new_branch
# 切换分支,工作区中显示当前分支的内容
git branch
# 查看当前分支
git branch -vv
# 查看分支详细信息(分支信息,所跟踪的远程分支信息,是否领先远程分支等)
合并-删除
git branch master
# 切换到主分支
git merge one_branch
# 主分支合并某一分支(任何分支都可以合并其他分支)
git branch -d newBr
# 删除分支
冲突-解决
取舍的话,取决于实际代码。
然后再 git add .
和 git commit -m ""
git merge --abort
# 中止合并,发生冲突可以选择撤销本次合并
git merge newBr -Xignore-all-space
# 避免因为空白导致冲突
远程仓库
设置ssh-key
ssh-keygen -t rsa -C "你的git登录邮箱"
C:\Users\用户民\.ssh\id_rsa.pub
存放着你的公钥- 在git 服务器上配置ssh
关联远程仓库
将本地git 库 和 远程github库建立关联,可以方便本地库和远程库pull和push
注意:当你是空文件夹时,需要git init
才可以关联
- 关联远程库
git remote add origin 库地址
# origin 是别民,可以取别的 - 查看关联的所有远程库
git remote -v
git remote show origin
# 关联远程库,本地分支和远程分支的对应关系。
git remote remove origin
# 删除关联
git remote remove origin origin2
# 重命名
push
将本地master 分支的内容上传到 关联的远程仓库
git push origin master
# 上传到master分支
git push origin dev:dev
# 将本地分支dev 上传到远程服务器的dev分支上
git push origin dev:dev dev2:dev2
# 可以一次上传多个
pull
拉取远程的新内容,并合并到当前分支
git pull origin master:master
git pull origin master
# 缺省写法
clone
下载远程仓库中的内容,注意clone操作会自动搭建关联
git clone 库名
标签
在众多的提交中,总有一些提交尤为重要,比如重大的bug解决,我们可以为此打上标签
打标签
- 创建标签
git tag v1.0.0
- 创建附注标签
git tang -a v1.1.1 -m "说明文字"
- 给历史文件打标签
git tag [-a] v1.1.1 "commitID"
查看标签
- 查看所有标签
git tag
- 查找以 v1.1 开头的标签
git tag -l "v1.1*"
标签主要用于发布打包
- 检出提交点 (通过提交点检出,不受任何分支受限)
git checkout v1.0
删除标签
- 删除标签
git tag -d v1.0
- 删除远程仓库的指令
git push origin :refs/tags/v1.1
共享标签
- 同步一个标签到git服务器
git push origin v1.1.1
- 共想所有的标签
git push origin --tags