一、工作原理 / 流程: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库
二、Git常用操作命令 1、常用操作命令 1.git clone GitLab Clone with SSH //(git clone 下载分支, ssh 地址可以直接从 project clone with ssh) git clone -b <分支名> SSH //下载对应分支
2.git branch // 查看当前所在分支
3.git branch -a // 查看所有分支
4.git branch -D // 删除相关分支
5.git branch <分支名> // 新建相关分支
6.git checkout <分支名> // 切换到相关分支
7.git status // 命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被 Git tracked 到
8.git add 文件名. // 命令将文件内容添加到索引(将修改添加到暂存区)
git add -A // 表示添加所有内容
git add . // 表示添加新文件和编辑过的文件不包括删除的文件
git add -u // 表示添加编辑或者删除的文件,不包括新添加的文件
git checkout <file> // 取消对文件的修改。还原到最近的版本,废弃本地做的修改。
git reset HEAD <file> // 取消已经暂存的文件。即,撤销先前"git add"的操作
9.git commit -m “******” // 参照公司的提交规范
10.git log // 查看 Commit 日志
11.git config --list // 查看git config 所有信息
12.git config --global user.name // 修改git用户名
13.git config --global user.email // 修改git邮箱
14.git push <远程主机名> <本地分支名>:<远程分支名> // 上传远端服务器
git push origin <分支名> // 根据远程分支名上传远端服务器
15.git pull = git fetch + git merge // 命令用于从远程获取代码并合并本地的版本。有merge会生成一个merge的提交。
git pull <远程主机名> <远程分支名>:<本地分支名> // 从团队项目代码更新fork项目代码。
git pull --rebase = git fetch + git rebase // 从远端获取代码合并,避免菱形产生。不会有merge的提交。
在git rebase 过程中,解决冲突后,用 git add 更新内容,再执行 git rebase --continue,即可继续往下合并。
16.git diff // 查看文件修改的内容。(需要在git add之前使用,否则查看不了)
17.git remote -v // 获取本地仓库对应远端版本(SSH路径)。
18.git remote add proj_master SSH //新增远程仓库SSH,并命名为 proj_master。
19.git stash // 将本地修改存储起来,git stash list 可查看所有暂存内容
git stash pop stash@{0} // 还原暂存的内容
git stash clear // 通过删除所有的暂存库来清空该列表。
git stash drop <stash_id> // 从暂存列表中删除一个特定的暂存。
20.git cherry-pick hash码 //将指定的提交应用于其他分支 (指定提交对应分支在本地库必须要有,否则无法合并)
2、代码发生冲突(git pull时冲突):
(1). git stash // 将本地修改存储起来,git stash list 可查看所有暂存内容
(2). git pull // pull下载内容
(3). git stash pop stash@{0} // 还原暂存的内容
(4). 解决冲突文件即可。
(5). 冲突解决完毕后,再git add 添加上,即可提交。
3、查看提交内容:
(1). git log //可查看所有commit日志,有一个commit字段,位于备注上面,复制hash码。
git log -- 文件名 //可查看对应文件的历史提交记录
(2). git show hash码 //可查看本次提交的所有内容
git show hash码 -- 文件名 //可查看对应提交中某个文件的提交内容
(3). 修改commit日志:
git commit --amend //操作与vim一致。 还可在客户端界面使用 amend last commit 来修改本次提交。
(4). 查找对应字符串相关的提交,格式化输出:
git log --format='%H|%cn|%s (%cr)' | grep '搜索字符串'
--graph 展示分支信息,显示 ASCII 图形表示的分支合并历史。
--stat 显示每次更新的文件修改统计信息。 无法与grep同时使用。
--format 常用参数列表如下:
%H: commit hash
%cn: 提交者名字
%s: commit 提交说明
%cr: 提交日期, 相对格式 (1 day ago)
%ce 作者的电子邮件地址
%ci: 提交日期, ISO 8601 格式,如 (2021-06-07 10:39:24 +0000)
%h: 缩短的 commit hash
%Cblue: 切换到蓝色
%Creset: 重设颜色
更多参数参考:https://ruby-china.org/topics/939
4、回退某个版本:
(1). git revert -n 版本号(hash码) //revert回退某个版本 *(而不是回退到某个版本)*,相当于将需要回退的版本逆向操作。
(2). 想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了 *(慎用)*
git reset --hard 目标版本号
(3). commit后但还未push时,需要撤销此次commit:
git reset --soft 目标版本号。
--soft:不删除工作空间的改动代码 ,撤销commit,不撤销git add file。
--hard:删除工作空间的改动代码,撤销commit且撤销add
三、Git提交规范 1.提交环境确认 使用命令: git config --list 查一下,显示的user.name 和user.emaile 是不是自己的,如果不是,则需要先进行git 相关设置 2.提交内容规范 提交模板:{任务ID task id} {类型 commit type} {标题 commit title} // 第一行,以空格分隔 {提交说明 commit explaination} // 第二行
3.说明: (1) 任务ID:使用Jira编号, 如:B2BKSGT-26 (2) 类型(该字段必填): a. feat:增加新功能; b. fix:修复bug; c. perf:提高性能的改动 等等 feat:增加新功能 fix:修复bug perf:提高性能的改动 refactor:代码重构 revert:代码回滚 style:不影响代码含义的改动,例如去掉空格、改变缩进、增加换行 docs:改动了文档相关的内容 test:测试用例修改,包括单元测试、集成测试 ci:与CI有关的改动 build:外部依赖的改动,例如webpack,npm chore:构建过程或辅助工具的变动
|