Git常用命令
2024-08-19
一、环境搭建
1、安装
2、git公钥私钥生成
bash
# 配置用户名、邮箱
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
ssh-keygen
ssh-keygen -t rsa -C whatever@baidu.com
# 使用rsa加密 默认使用dsa加密
# 命令行中弹出输密码行,如果输入了,以后每次推拉代码都需输密码
3、git公钥配置
bash
# 查看公钥,并将其放置代码仓库之下,以使用ssh服务
cat ~/.ssh/id_rsa.pub
二、拉取代码
1、初次克隆代码(默认master分支)
bash
# 获取远程仓库代码
git clone git@github.com:vuejs/vue.git
# 如果没有设置公钥可使用https协议,ssh有两个优点:
# 1、速率快,因为经过压缩;
# 2、配置无需每次输入账号密码;
2、切换分支
bash
# 查看本地分支
# 查看本地所有分支
git branch
# 新建本地Dev分支并切换
git checkout -b dev
# 等价于上面的命令
git branch dev && git checkout dev
# 强行删除一个本地分支
git branch -D dev
# 分支重命名,把原来的main改成master
git branch -m main master
3、拉远程Dev分支代码
bash
# 查看各个分支最后一次提交
git branch -v
# 查看远程所有分支
git branch -r
# 拉取远程dev分支,并在本地建立dev分支与之对应;
git checkout -b dev origin/dev
# 同步远程当前分支代码
git pull
# git默认把远程称为origin
git pull origin dev
# 将远程的提交置于本地之前,rebase
git pull --rebase
# 等价于上面的命令
git fetch dev && git merge #等价于上面的命令
4、rebase(变基)
bash
# 假设你开发时是E,当在本地做了开发a,b,c;远程有同事开发的F和G已经合入,可以使用这个命令
git rebase master
# 如果有冲突,解决冲突,然后
git rebase --continue
# 或者放弃rebase
git rebase --abort
# rebase可以保证分支是一条直线,而非形成复杂的电路板状况
三、文件状态
1、文件状态的生命周期
2、 四种状态,3个流程
Untracked(未跟踪) 、 Unmodified(未修改)、 Modified(已修改) 、Staged(暂存区)
1. Untracked(未跟踪) git add > Staged(暂存区) git commit > Unmodified(未修改)
2. Modified(已修改) git add > Staged(暂存区) git commit > Unmodified(未修改)
3. Staged(暂存区) git reset > Modified(已修改)
3、文件状态
bash
git status
git status -s # short版本
git diff --staged # 查看你下次将要提交的staged文件
git diff --cache # 展示文件文件差异,同--staged
4、文件日志
bash
# 展示最近两次提交的diff
git log -p/--patch -2
# 展示每次commit的简短stat
git log --stat
git log --pretty=oneline
git log --pretty=short
git log --pretty=full
git log --pretty=fuller
git log --pretty=fomat:"%h - %an, %ar : %s"
git log --graph
四、提交代码
1、基础提交
bash
# 添加文件
git add filename
# 添加所有文件到staged,包含删除、新增、修改
git add .
# 提交代码到本地仓库
git commit -m "feat:remark"
# 提交代码至远程分支
git push origin dev:dev
# 可以使用vim修改git忽略文件
vim .ignore
vim .gitignore
# 回滚某个文件,不让他在暂存区
git restore --staged .env.dev
前端里面Husky可以做为git提前的hook,进行预执行,从而做git提前的代码风格扫描,提交的message校验; https://typicode.github.io/husky/#/?id=test-hooks
2、本地项目提交
bash
# 初始化为本地仓库
git init
# 关联一个远程仓库
git remote add origin git@server-name:path/repo-name.git
# 第一次提交,-u指定一个个默认主机,后面提交不用指定origin master
git push -u origin master
3、stash(暂存代码)
bash
# 储藏目前的进度,进行其他分支开发
git stash
# 列出Stash栈
git stash list
# 恢复但不删除stash
git stash apply
# 恢复并删除stash
git stash pop
4、reset
bash
# 回归到某次提交,慎用,能不用就不要用,因为--hard会丢失修改的内容,
git reset --hard 9c75503273c1375c7226a13ef6069c554644735c
# 回滚到某个节点,并保留节点后续的修改
git reset --soft 9c75503273c1375c7226a13ef6069c554644735c
# 撤销上一次commit
git reset HEAD~
5、cherry-pick
bash
# 合并某个分支上的某一次提交
git cherry-pick e406c36
6、提交查看
bash
# 查看commitId
git reflog
# checkout一次提交,舍弃某个文件的修改
git checkout e406c36
# 还原到最新提交,即dev指针的位置
git checkout dev
五、Tag管理
1、tag管理
bash
# 新建一个标签
git tag <tagname>
# 新建标签并注释
git tag -a <tagname> -m "commit"
# 查看所有标签
git tag
# 推送一个本地标签
git push origin <tagname>
# 推送全部本地标签
git push origin --tags
# 删除一个本地标签
git tag -d <tagname>
# 删除一个远程标签
git push origin :refs/tags/<tagname>
六、分支开发规范
- 1、开发在dev分支上,代表一次迭代,一个代码库至少含有两条分支: dev和master;
- 2、多个迭代并发时,可以创建多个dev-xxx,如:dev-map,dev-3d;
- 3、master不要推代码,只用来上线打tag,每次上线完成后需要及时打tag,便于回滚,tag的格式是 release_date_version, 如release_20230327_v4.1;
- 4、提交代码一定要写message:message一定要带上前缀,前缀是其中的一种:
如: git commit -m 'feat: 完成登录注册功能'
- 5、非特殊情况,提交不能直接合入,需要设置一个同伴打分,认真做好 code review。