仓库创建
-
创建本地仓库/初始化本地仓库
项目根目录下,输入命令:git init
会生成.git隐藏文件夹,就是本地仓库
-
克隆仓库
git clone ssh://{仓库地址}
信息配置
-
配置姓名&邮箱
git config user.name "{姓名}" # 配置当前仓库 git config user.email "{邮箱}" git config --global user.name "{姓名}" # 全局配置 git config --global user.email "{邮箱}"
-
查看现有配置信息
git config --list # 查看所有配置 git config user.name # 查看当前仓库 git config user.email git config --global user.name #查看全局配置 git config --global user.email
-
创建密钥
在git bash上运行命令:ssh-keygen -t rsa -C "{邮箱}"
然后连续按三次回车键,生成的密钥就在.ssh文件夹的id_rsa.pub中,把密钥上传到远程仓库中
基本操作
- 添加文件到暂存区
git add {文件名} # 上传指定文件
git add . # 上传工作区所有有修改的文件
git add * # 上传工作区所有有修改的文件
- 提交文件到仓库
git commit -m "{备注信息}"
- 查看仓库状态
红色M是工作区,绿色M是暂存区
git status
git status -s # 简洁查看
- 文件对比
当前文件和上一个版本对比,显示具体修改内容
git diff {文件名}
- 查看提交日志记录
git log # 查看所有提交记录
git log --oneline # 简洁查看
git log --author {姓名} # 查看指定人的提交记录
git blame {文件名} # 查看某个文件的提交记录,会显示具体的修改内容
- 版本回退
注意:指定版本之后的版本都会消失
git reset {版本号} # 整个项目回到指定版本号
git reset {文件名称} {版本号} # 某个文件回到指定版本号
git reset --hard 版本号 # 工作区和暂存区都会回退
git reset --soft 版本号 # 仅暂存区回退,工作区不变
git reset HEAD # 放弃暂存区的修改(HEAD:最新已提交版本)
git reset --hard HEAD # 放弃工作区和暂存区的修改
git checkout. # 放弃工作区所有修改
git checkout --{文件名称} # 放弃工作区指定文件按修改
分支管理
gitee和gitlab的默认分支都是master,github的默认分支以前是master,现在是main。
-
查看仓库的所有分支
git branch # 本地分支 git branch -r # 远程分支 git branch -a # 本地+远程分支
-
创建分支
git branch {新分支} git branch <branchname> [<start-point>] # 以start-point(可以是本地可以是远程,默认是本地当前分支)为起点分支,创建新的本地分支branchname。
-
切换分支
git checkout {分支名称} git checkout - # 切换回上一分支 git checkout -b {新分支} {起点分支} # 创建并切换到新分支,起点分支可以是本地/远程分支 git checkout -t {远程分支} # 拉取远程分支最新代码,并创建+切换到本地同名分支
-
删除分支
git branch -d {分支名称}
-
合并分支
git merge # 自动合并其他分支到当前分支 git merge {分支名称} # 自动合并本地指定分支到当前分支
-
建立本地分支与远程分支的联系
git branch --set-upstream-to=origin/{远程分支} {本地分支}
远程仓库管理
-
关联远程仓库
git remote add origin {仓库地址} # origin表示远程仓库的别名,自己命名
-
追踪关系(tracking)
2.1. 部分场景,自动建立追踪关系:
如,git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。
2.2 手动创建追踪关系:git branch --set-upstream master origin/next #指定本地master分支追踪origin/next分支
-
推送数据到远程仓库
本地分支和远程分支需要存在追踪关系git push -u {远程主机名} {本地分支名}:{远程分支名} # 第一次将本地分支推送到远程仓库的分支(没有则自动创建)上,-u参数相当于设置了远程主机的默认值 git push {远程主机名} {本地分支名}:{远程分支名} git push {远程主机名} {本地分支名} # 远程分支名可省略,表示将本地分支推送到远程主机追踪分支(一般同名),如果远程主机分支不存在,则自动创建 例:git push origin master git push # 如果当前本地分支只有一个追踪的远程分支,则可以省略主机名参数,推送到默认远程主机分支
-
线上仓库同步到本地
git fetch <远程主机名> <远程分支名>:<本地分支名> # 只是拉数据,不会自动合并 git pull <远程主机名> <远程分支名>:<本地分支名> #将远程分支获取下来并和本地分支混合。 # 拉数据+自动合并,git pull 相当于 git fetch + git merge # 若省略本地分支, 则和当前分支合并。 # 不指定追踪远程和本地分支,则当前分支自动与对应的origin主机”追踪分支”进行合并。
-
查看当前仓库的远程分支
git remote -v
解决冲突
每次提交前,先git pull最新代码,合并之后,再push
git diff # 查看冲突文件
远程仓库的使用
-
注册账号
gitee地址:https://gitee.com/
github地址:https://github.com/ -
配置远程仓库的账号
把本地电脑的密钥,添加到对应网站自己的账号设置中;配置好之后,就不需要本地登录,直接通过git连接远程仓库了- 创建密钥
- 打开并登录gitee,然后点击头像->设置->ssh公钥-把生成的密钥添加进去。
-
创建远程仓库
git的标签
标签默认只创建在本地,不会push到远程仓库
-
创建标签
标签包括:轻量标签(记录标签名字)和附录标签(可以补充更多内容)git tag {标签名称} # 轻量标签,给当前版本创建标签 git tag {标签名称} {版本号} # 给指定历史版本创建标签 git tag -a {标签名称} -m {补充内容}
-
查看标签
git tag # 查看所有标签 git tag -l {标签名称} # 搜索标签,支持模糊搜索(通配符,比如v1*) git show {标签名称} # 查看指定标签的详细信息
-
共享标签(上传标签)
git push origin {标签名称} # 上传指定标签至远程仓库 git push origin --tags # 上传所有标签至远程仓库
-
删除标签
git tag -d {标签名称} # 删除本地指定标签 git push origin --delete {标签名称} # 删除远程指定标签
-
检出标签
标签算是很特殊的分支,如果要修改已有的标签的内容,我们需要在当前的标签的基础上去创建分支,然后再修改提交。git checkout {标签名称} git checkout -b {分支名称} {标签名称} # 检出标签的同时创建新的分支。
忽略文件
要忽略某些文件不需要上传到仓库中的话,我们只需要在项目的根目录创建一个叫 .gitignore 的文件。
然后把要忽略的文件的名字写到这个文件中即可。