安装
一直默认next即可
初始全局配置
建议使用github的账号信息
git config --global user.name "用户名"
git config --global user.email "邮箱"
如果不配置这些信息,就不是commit
创建仓库
在当前目录中
mkdir git_test
cd git_test
git init #初始化仓库(让仓库知道要管理当前文件夹),会创建.git隐藏目录
仓库文件介绍
在.git目录中存在以上文件(夹)功能如下:
- hooks: 里面存放着生命周期钩子,指定某个操作的时候执行额外的某个功能。以pre-commit文件为例,在执行git commit命令之前,会自动执行这个文件中的代码。
- info:包含全局性排除文件。某个文件不需要git管理时,就放在这里
- logs: 保存日志信息
- objects: 存储所有的数据内容,相当于代码的数据库。
- refs: 存储指向数据(分支)的提交对象的指针
- config: 存储当前git项目的局部配置信息。例如:
git config user.name "my_name" #将此信息存储在config文件中(注意是双引号)
git config --global user.name "my_name" #将此信息存储在系统中
#常用指令
* git status: 查看当前代码修改 状态
* git add filename: 添加到缓存区
1. git add file1 file2 file2
2. git add . :将当前目录添加到缓存区中
* git commit -m "annotation": 提交至版本库
* git checkout 用版本库里的版本替换工作区里的版本,一键替换(用于切换分支),git checkout -- 文件名:一键还原指定文件
#版本回退
1. 通过log日志查看版本信息:
git log
git log --pretty=oneline #每一行都是一个时间点
commit 后面的长串数字就是版本号,相当于时间戳,其实前7位就行。
2. 回退操作:
* git reset --hard 版本号3 回滚到指定版本
* git reset --hard HEAD^ 回滚到上一次版本
回退到版本3,版本3之后的版本号(4,5)就没了。
回到过去后,如果想再回到刚才最新的版本5,则需要使用指令去查看历史操作,以得到最新的commit id(版本号)
``` git reflog```
查看版本历史操作
#连接远程仓库
1. 创建空目录
2. 使用clone指令复制线上仓库到本地:
``` git clone 远程仓库地址```
3. 在仓库上做对应操作(提交暂存区,提交本地仓库,提交线上仓库,拉取线上仓库)
## git push
格式:git push <远程主机名> <本地分支名>:<远程分支名> 远程主机名可以使用origin来指代clone仓库时的主机
eg:
git push origin master
将本地的master分支推送到远程的master分支上(本地和远程的仓库
$ git push origin :master #删除远程master分支
# 等同于
$ git push origin --delete master
推送一个空给远程的分支,相当于将其删除。
- 拉取线上仓库:
git pull
- 登录
4.1 https连接
修改.git中的config文件中的url:
url = https://用户名:密码@github.com/qianshan1/test.git
4.2 ssh连接
- 安装openssh
- 生成公私钥对:ssh-keygen -t rsa -C "注册邮箱"
会在目录:C:Users2acm.ssh中id_rsa私钥和id_rsa.pub公钥,将公钥中的内容复制到github账户中即可。
分支操作
- 查看分支: git branch
- 创建分支: git branch 分支名
- 切换分支: git checkout 分支名
- 删除分支: git branch -d 分支名
- 合并分支: git merge 被合并的分支名
git checkout -b 本地分支名 远程分支名
git checkout -b dev/1.5.4 origin/dev/1.5.4
先创建分支dev/1.5.4,再切换到该分支
忽略文件
- touch .gitignore 新建.gitignore文件,对当前目录及其子目录生效。被过滤的在git push时不会传到远程仓库
.gitignore文件的语法
- /myfolder/ 过滤整个myfolder文件夹
- *.zip 过滤所有zip文件
- /myfolder/do.txt 过滤具体某个文件
- !index.php 不过滤具体某个文件
在文件中,以#开头的是注释