概述
git是一个分布式的版本控制工具,它可以有本地仓库和远程仓库。
安装过程直接下载安装包点next,最后加上系统环境变量。
安装完成之后,使用git --version查看版本,验证是否成功安装
git --version
安装完成之后右击,菜单会有Git GUI和Git Bash两个东西。Git GUI是图形化界面,Git Bash是命令行界面,它基于Linux的Shell窗口,支持Linux命令。
git有三个分区:工作区、暂存区、历史区
工作区:直接看到的、编辑文件的地方
暂存区:临时存放下一次提交的更改
历史区:永久存放项目的完整历史记录和版本
工作区可以通过add命令暂存更改到暂存区,暂存区可以通过commit命令提交更改到历史区,历史区可以通过push命名推送到远程仓库
配置命令
git config user.name <name>
git config user.email <email>
#设置全局的用户名和邮箱,一般设置全局用户为默认用户,仓库内再设置专属的用户
git config --global user.name <name>
git config --global user.email <email>
初始化仓库
在项目目录下使用git init命令,会生成一个.git文件夹,这个.git文件夹就是仓库了
git init
添加修改到暂存区
可以使用git add命令,主要可以跟踪新文件、暂存修改的文件、暂存删除操作
git add <file>
git add <dir>
git add . #把所有内容添加到暂存区
git add --all #把所有内容添加到暂存区
git add --patch #选择性暂存文件的部分更改
暂存区相关操作命令
git status #查看暂存区的相关内容
git rm --cached <file> #移除暂存区中内容,不影响工作区
git reset HEAD -- <file> #移除暂存区内容
提交修改到历史区
使用git commit命令提交修改到历史区,默认会打开vim编辑器来添加注释
git commit <file>
git commit <dir>
git commit *
历史区其他操作
git log #查看历史区提交记录
git commit <file> -m <提交信息> # 指定说明信息提交
git reset <修饰关键词> <版本号> # 从历史区撤回,修饰关键词有--hard、--mixed默认、--soft
修饰关键词:
--hard:同时影响暂存区和工作区
--mixed:影响暂存区,不影响工作区
--soft:不影响暂存区和工作区
git的分支
git分支的命名需要遵循命名规范,一般有以下5种分支:
master:主分支,用于生产环境部署,一般由develop和hotfix合并,不能直接修改代码
develop:开发分支,最新的或bug修复后的代码
feature:特性分支,基于develop分支创建,命名常以feature/开头
release:预上线分支,发布提测阶段会以它作为基准提测
hotfix:紧急修复分支,以hotfix/开头
分支的操作
git branch <分支名> # 创建分支
git branch #查看分支
git branch -d <分支名> #删除分支
git checkout <分支名> #切换分支
git merge <分支名> #将传入的分支合并到当前分支
git rebase <分支名> #将传入的分支线性衍合到当前分支
git stash # 临时保存当前工作区和暂存区的内容到stash条目
git stash pop #移除并应用最新的stash条目到当前工作目录和暂存区
git stash list #查看恢复列表
远程仓库
远程仓库是网络服务器上的仓库。可以在代码托管平台(如github、gitee、gitlab)创建远程仓库
git remote add origin <远程地址> #本地仓库联通远程地址
git clone <仓库地址> #克隆远程仓库的内容到本地
git push origin <分支名> #推送本地内容到远程
冲突
两个人操作同一分支的情况下,a优先进行了更改并进行推送(远程仓库版本为1),当b尝试推送时,因为远程仓库的历史已经因a的推送(版本1)领先于b的本地提交,Git会拒绝推送以保护项目历史。此时,b需要先将远程的新内容同步到本地,解决可能出现的合并冲突,才能完成推送
解决冲突
#方法一
git pull #拉取最新内容 会自动合并
手动解决冲突 (协商解决)
git push origin 分支名
#方法二
git fetch '分支名':temp #请求最新内容 并创建一个临时分支接收
git diff temp #比对分支
选择保留的内容
git merge temp #合并分支