git使用笔记
git下载
https://git-scm.com/download/win
git的常用名词
序号 | 名词 | 操作指令 | 解释 | 重要程度 |
---|---|---|---|---|
1 | git工作区 | working directory 是保存代码文件的地方 | ★ | |
2 | git暂存区 | staging area 是介于工作区和git仓库之间的一个区域 | ★★ | |
3 | git克隆 | git clone | 将远程仓库的代码复制到本地,并创建一个本地仓库 | ★★★★★ |
4 | git拉取 | git pull | 将远程仓库中最新的代码更新到本地仓库中,并将本地仓库中的当前分支中的代码与远程仓库中的代码合并 | ★★★★★ |
5 | git提交 | git commit | 将暂存区中的修改保存到git仓库中的操作,每次提交都需要写一个简短的提交信息 | ★★★★★ |
6 | git推送 | git push | 将本地仓库中的代码推送到远程仓库中 | ★★★★★ |
7 | git合并 | git merge | 将两个分支中的修改合并到一起的操作 | ★★★★ |
8 | git分支 | git branch | 在一个仓库中创建多个分支,每个分支都可以独立地进行开发 | ★★★★★ |
git可视化工具 sourcetree
下载地址:
https://www.sourcetreeapp.com
gitlab
拉去代码
git clone http://xxxxx/xxx.git
git分支
创建分支 git branch [branchName]
git branch testing
切换分支 git checkout [branchName]
git checkout testing
在本地创建分支dev并切换到该分支
git checkout -b dev(本地分支名称) origin/develop(远程分支名称)
本地分支合并
背景:修改了本地分支 tim
目的:把本地分支 tim 合并到开发分支 develop
准备:先重远程分支更新到develop,确保develop分支和远程分支保持一致
切换到develop分支:git checkout develop
合并分支:git merge tim
把本地分支推送到远程分支
本地创建了分支 sit , 远程参考没有分支 sit
git push --set-upstream origin sit:sit
- sit 是分支名称
查看日志记录
git log --pretty=format:"%ai , %an: %s" --since="10 day ago"
2023-06-20 11:37:33 +0800 , Steven: 素材保存更新
2023-06-18 10:47:10 +0800 , Steven: 素材权限查询
2023-06-16 16:16:27 +0800 , Steven: 11
2023-06-15 15:19:43 +0800 , Steven: 11
对比两个版本的文件差异
# 导出两个版本的差异文件名
git diff 0b488b9 8696ece --name-only > my-record.txt
# 新增的文件
git diff 0b488b9 8696ece --name-only --diff-filter=A > my-record-A.txt
# 修改的文件
git diff 0b488b9 8696ece --name-only --diff-filter=M > my-record-M.txt
# 删除的文件
git diff 0b488b9 8696ece --name-only --diff-filter=D > my-record-D.txt
–diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]]
只选择那些添加 (A), 赋值 ©, 删除 (D), 修改 (M), 重命名 ®的文件,
它们的类型(如 普通文件, 符号链接, 子模块, …) 是否改变 (T), 是否未合并 (U), 是未知 (X), 或它们的对崩溃(B). 任何过滤字符的组合(包括none)均可使用。当组合中包括All或none,如果任一文件匹配了其他选项,就选择了所有路径。如果没有文件匹配其他选项,什么都不做。
导出文件:my-record.txt
bootstrap.properties
build.gradle
gradle.properties
sz-nq-sanqle-otherservice-feigninql/src/main/java/com/sz/nq/busi/sanqle/otherservice/inql/CscSysClueService.java
sz-nq-sanqle-otherservice-feigninql/src/main/java/com/sz/nq/busi/sanqle/otherservice/inql/CscSysOrgService.java
sz-nq-sanqle-otherservice-feigninql/src/main/java/com/sz/nq/busi/sanqle/otherservice/inql/CscVehicleService.java
比较指定的两次提交 「commit1」与 「commit2」的差异 git diff commit1 commit2
–stat 显示有多少行发生变化,简洁的展示差异;
D:\acc_service>git diff 5f85f64 20103d6 --stat
.../material/controller/AccMaterialController.java | 2 +-
.../AccMaterialPermissionController.java | 39 ++---
.../controller/AccMaterialTypeController.java | 4 +-
.../material/entities/AccMaterialPermission.java | 84 +++++++---
.../service/IAccMaterialPermissionService.java | 6 +-
.../service/impl/AccMaterialPermissionService.java | 182 +++++++++++----------
.../assembly/mapper/AccMaterialMapper.xml | 50 +++---
.../mapper/AccMaterialPermissionMapper.xml | 71 +++++---
8 files changed, 259 insertions(+), 179 deletions(-)
合并分支
版本回退
git reset --hard commitId
git reset --hard ff5dc614db739159511848f928489150ce81a51a