Git学习总结

3 阅读4分钟

概述

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 #合并分支