Git学习笔记
Git的特征
1.Git每台电脑都有一个版本库,可以在本地做版本管理。
2.速度快,git的速度远超大部分版本管理系统,包括svn。
3.强大的分支管理功能。
4.活跃的开源社区,比如GitHub。
本地仓库创建
初始化一个本地仓库
git init
在同级目录下回出现一个隐藏的.git文件
查看配置
git config -l
增加配置
git config XXX
必须配置user.name 和 user.email
三级文件配置
一级:.git/config
二级:当前用户目录/.gitconfig
三级:git安装目录/etc/gitconfig
优先寻找一级配置文件,没有去找二级,再没有找三级
本地提交
提交到索引
git add -A代表全部
git add filename
git add . 把新增的文件、修改的文件都加入缓存库
git add -A 把所有的 新增、修改、删除的文件加入缓存库
提交到文件库
git commit
git commit -m ‘版本描述’
在项目文件夹中新增一个文件如’a.txt’时,该文件处于未跟踪状态(untracked)。未跟踪状态的文件使用此命令是无法提交的
git commit -am "版本描述"
git commit -a -m “版本描述” -m 不能写在 -a 前面
使用此命令则可以省略git add 把文件加入暂存区这一步
把本地缓存删除
git rm -r --cached .
git中的三类文件
被追踪的(tracked):已经加入文档库
不被追踪的(untracked):没有加入文档库
忽略的(ignored):忽略那些不需要管理的文件夹或文件
状态检查
查看状态
git status
忽略和排除
目录下建立一个.gitignore文件(可以有多个,影响范围当前文件及子文件)
touch .gitignore
在文件里添加要忽略的内容
通用模板
target/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.mvn
logs
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
front/.idea
### NetBeans ###
nbproject/private/
build/
nbbuild/
dist/
nbdist/
.nb-gradle/
/swagger-bootstrap-ui-front/.idea/
提交点
id:每一次commit都是一个提交点,唯一标识SHA1的id,id可以使用前4至7个数字表示
标签: git tag -a v0.2 4a80f64 (提交点SHA1的id的前7位)
删除标签
git tag -d wsh
日志
git log
git log --oneline 一行显示
git log --oneline --graph 会显示自己分支的提交点
创建分支
列出当前开发所有分支
git branch 默认会有master
从最新提交点上创建一个分支
git branch wsh
在指定提交点上创建一个分支
git branch wsh 提交点
切换分支
git checkout wsh
删除分支
git branch -d wsh
合并分支
git checkout master
git merge wsh
合并分支wsh 和主干master,合并后的提交点属于master
如果前面的标签和分支名冲突了merge会失败,删除标签就可以了
如果有冲突,使用指令模式merge的话,一般不能自动合并这些冲突,需要手动解决
取消合并的命令
git merge --abort
HEAD
HEAD节点代表最新的commit 显示信息git show HEAD
可用理解为节点盖楼,最新的在最上面
回退
回退: git reset 选项 提交点
选项: --hard 表示全恢复 提交点:可用ID或标签
git reset --hard v0.1
在Git中,用HEAD表示当前版本
所以回退到之前的版本是 HEAD^
上上一个版本就是HEAD^^^, 往上100个版本写100个^比较容易数不过来,所以可以写成HEAD~100
git reset --hard HEAD^
查询所有提交点
git reflog 回退后需要反悔的话,需要通过此命令查找到所有操作的提交点
合并分支的起始点(不推荐使用)
合并分支reking和主干master,合并后的提交点属于主干master
git checkout master
git rebase reking
此命令合并后
git log 查不到reking
要使用git reflog查询
git远程仓库
与github连接需要通过加密通道,ssh和https
克隆文件至本地
git clone “远程地址” “本地文件名称”
推送本地修改至远程文档库
git push -u “远程连接名” "分支名"
fetch与pull
fetch是将远程主机的最新内容拉倒本地,不进行合并
git fetch “远程连接名” "分支名"
pull 则是将远程主机的最新内容拉下来后直接合并
git pull “远程连接名” "分支名"
远程连接
1.本地新建一个远程连接
git remote add “远程连接名” https://github.com/xxxxxx/xxxx-git.git
2.查看远程连接
git remote
3.查看远程连接详情
git remote -v