SkyBlog

Git

在多人项目中 Git 的使用教程

这篇文章发布于 2023年12月01日,星期五,01:54阅读 ? 次,0 条评论

通常情况下,未指定本地分支,默认都是当前分支。

克隆

在多人开发中,不可能在 master 分支上进行开发,而默认拉取的是 master 分支,所以使用下面命令拉取指定的一条分支

git clone -b <remote_branch> <url>

分支

# 显示分支(默认只显示本地分支);当前所在分支前用 * 标记 ## -r:查看远程分支,-a:查看所有分支,-vv:查看本地分支与远程分支的追踪关系 git branch [-r] [-a] [-vv] # 创建本地新分支(Git 会用当前分支的最后提交的快照作为新分支工作目录的内容) git branch <local_branch> ## or (and switch to new branch) git checkout -b <local_branch> # 拉取远程分支到本地并切换 git switch <remote_branch> ## or git checkout -t <remote>/<remote_branch> # 切换分支 git checkout <local_branch> # 删除本地分支 git branch <-d|-D> <local_branch> # 删除远程分支 git push <remote> :<remote_branch> # 本地分支与远程分支的追踪关系 ## 建立 git branch --set-upstream [local_branch] <remote>/<remote_branch> ## 移除 git branch --unset-upstream

拉取

# 拉取远程主机某个分支的更新,再与本地的指定分支合并 ## 1、如果省略本地分支名,默认与当前所在的本地分支合并 ## 2、如果当前分支与远程分支存在追踪关系时,可以省略远程分支名 git pull [remote] [remote_branch[:local_branch]]

git pull = git fetch + git merge

上传

# 上传本地分支 ## -u:建立追踪关系 ## -f:不拉取强制上传 ## 1、如果本地分支名与远程分支名一样,可以省略远程分支名 ## 2、如果当前分支与远程分支存在追踪关系时,还可以省略本地分支名 git push [-u] [remote] [local_branch[:remote_branch]] [-f]

撤销

# 还没有使用 git add 暂存本地修改(无法撤销新增的文件) git checkout -- <filename> # 放弃指定文件修改 git checkout . # 放弃所有文件的修改 # 已经使用了 git add 暂存本地修改 git reset HEAD <filename> # 撤销指定文件 git reset HEAD . # 放弃所有的暂存 # 已经使用了 git commit 提交到本地仓库 git reset [--mixed|--soft|--hard] HEAD^ # 回滚到上一个提交的状态 git reset [--mixed|--soft|--hard] <commit_id> # 回滚到指定的 commit ## --mixed 这是默认设置,并保持所有文件相同但取消暂存更改 ## --soft 这将保留您的文件,并自动暂存所有更改 ## --hard 这将完全破坏所有更改并将它们从本地目录中删除

其他

# 显示所有远程仓库 git remote [-v] # 查看在自上次提交之后是否有对文件进行再次修改 git status -s # 将该文件添加到暂存区 git add . # 将暂存区内容添加到本地仓库中 git commit -m <message> # 列出历史提交记录 git log --oneline # 更新了 `.gitignore` 文件,清除缓存使更新生效 git rm -r --cached .

提交规范

提交格式为 <type>[(scope)]: <subject> 注意冒号 : 后有空格。如 feat(miniprogram): 增加了小程序模板消息相关功能

  • scope:表示 commit 的作用范围,如数据层、视图层,也可以是目录名称
  • subject:用于对 commit 进行简短的描述
  • type:表示提交类型,值有以下几种:
说明
feat新功能
fix修复 bug
docs文档注释
style代码格式(不影响代码运行的变动)
refactor重构、优化(既不增加新功能,也不是修复 bug)
perf性能优化
test增加测试
chore构建过程或辅助工具的变动
revert回退
build打包