一、工作流程

二、常用指令
1、配置git
- 配置环境变量

cmd打开命令行,输入git
查看是否配置成功。
- 设置用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱"
- 查看用户名和邮箱
git config --global user.name
git config --global user.email
- 查看所有的配置信息
git config --list
2、基础命令
1、 git add
将工作区修改的的一个或多个文件提交到暂存区
git add 单个文件名|通配符
2、git commit
提交暂存区内容到本地仓库的当前分支
git commit -m '注释内容'
3、git status
:查看修改的状态
git status 主要显示:
- 当前分支及与远程分支的关系。
- 已暂存的更改(即将提交的更改)。
- 未暂存的更改(已修改但未 git add)。
- 未跟踪的文件(新文件)。
- 合并冲突(如果有)




3、bash乱码和git status乱码
1、git status
乱码
原因:
在默认设置下,中文文件名在工作区状态输出,中文名不能正确显示,而是显示为八进制的字符编码。
解决办法:
将git配置文件 core.quotepath
项设置为false。quotepath表示引用路径,加上--global表示全局配置
java
git config --global core.quotepath false
2、bash命令乱码
${git_home}/etc/bash.bashrc 文件最后加入下面两行
java
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
三、常用操作
1、创建本地厂库
- 在本地创建一个空目录
- 进入目录,输入指令
git init
进行初始化 - 创建成功出现
.git
目录
2、git log 查看日志
命令形式:git log [option] options
- --all 显示所有分支
- --pretty=oneline 将提交信息显示为一行
- --abbrev-commit 使得输出的commitId更简短
- --graph 以图的形式显示
3、git reset --hard commitID版本回退
版本切换 git reset --hard commitID
commitID 可以使用 git log 查看
如何查看已经删除的记录?
git reflog
这个指令可以看到已经删除的提交记录

4、添加文件到忽略列表
创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式 。
每行一个忽略项
java
# 忽略所有 .log 文件
*.log
# 忽略特定文件
secret.txt
# 忽略目录(包括其子目录)
node_modules/
dist/
# 忽略特定扩展名的文件(如 .tmp)
*.tmp
# 不忽略某个特定文件(即使匹配前面的规则)
!important.log
# 注释以 # 开头
如果文件已经被 Git 跟踪(之前提交过),需要先移除 Git 的缓存:
java
git rm -r --cached . # 清除所有缓存,或者指定要清除的缓存
git add . # 重新添加文件
git commit -m "忽略某些文件"
验证 .gitignore 是否生效
java
git status --ignored # 查看被忽略的文件
5、git rm --cached 和 git rm区别

四、分支和冲突的处理
1、分支
- git branch:查看本地分支
- git branch 分支名 :创建分支
- git checkout 分支名:切换分支
- git checkout -b 分支名:切换到一个不存在的分支(创建并切换)
- git merge 分支名称:将某分支合并到当前的分支
- git branch -d b1 删除分支时,需要做各种检查
- git branch -D b1 不做任何检查,强制删除
2、解决冲突
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解
决冲突,解决冲突步骤如下:
- 处理文件中冲突的地方
- 将解决完冲突的文件加入暂存区(add)
- 提交到仓库(commit)
3、在一个分支上修改文件内容,切换到另一个分支时出现的问题
在idea里面,会直接将该分支的修改带到另一个分支上。
在命令行:

要想直接切换,可以在当前的分支使用git stash
命令。
git stash : 临时保存当前工作目录和暂存区的修改,以便切换分支或处理其他任务,而无需提交未完成的更改。

切换到master分支后(做一些其他操作...),再切换回来,如何恢复文件的内容,可以使用git stash pop
恢复最近暂存的修改(stash)并删除该 stash 记录的命令。它是 git stash apply + git stash drop 的组合操作。

如果git stash pop
时当前分支的文件与stash
内容冲突,Git 会报错,并保留 stash(不会自动删除)。
冲突文件会包含冲突标记(<<<<<<<, =======, >>>>>>>)

第一种解决方法是:
git restore file.txt 丢弃对 file.txt 的修改,再去git stash pop
第二种解决办法是:
可以先
git commit
,再去git stash pop

不难发现就是将每次的stash操作加到了栈中,每次 git stash pop
时,弹出一个,判断有没有冲突。
常见的带参数的git stash命令 | |
---|---|
命令 | 作用 |
git stash |
保存当前未提交的修改(工作区和暂存区)到 stash 栈 |
git stash push |
同上,支持更多参数(如 -u 包含未跟踪文件) |
git stash list |
查看所有 stash 记录(显示 stash@{n} 格式的列表) |
git stash apply |
恢复最新的 stash(不删除记录,默认 stash@{0} ) |
git stash pop |
恢复最新的 stash 并删除记录 (默认 stash@{0} ) |
git stash drop |
删除指定的 stash(如 git stash drop stash@{1} ,不指定则删除最新的) |
git stash clear |
清空所有 stash 记录(不可逆!) |
git stash show |
显示最新 stash 的改动概览(加 -p 查看完整 diff) |
git stash branch <名> |
基于 stash 内容创建新分支并自动 pop |
五、开发中分支的使用流程
在开发中一般就是先git pull拉取远端的代码,再git commit提交到本地仓库,再git pull拉取一下(推荐非强制),在git push推送到远端仓库中去。
分为几个分支:
master(生产)分支 线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
develop (开发)分支 是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线 要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。 feature/xxxx分支 从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完 成后合并到develop分支。
hotfix/xxxx分支, 从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、 develop分支。
还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等等。
六、gitee的使用
1、添加远程仓库
git remote add <远端名称> <仓库路径></font>
远端名称默认是origin
2、查看远程仓库
git remote
3、推送到远程仓库
git push [-f] [--set-upstream]
[远端名称 [本地分支名][:远端分支名] ]
-f 表示强制覆盖
--set-upstream推送到远端的同时并且建立起和远端分支的关联关系。
如果已经建立联系,可以直接git push
4、本地分支与远程分支的关联关系
git branch -vv

5、从远程仓库克隆
git clone <仓库路径> [本地目录]
6、从远程仓库中抓取
抓取命令:git fetch [remote name] [branch name] </font>
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并,如果不指定远端名称和分支名,则抓取所有分支。
7、从远程仓库中抓取
拉取命令:git pull [remote name] [branch name]
拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
,如果不指定远端名称和分支名,则抓取所有并更新当前分支。