在工作中,git是必不可少的技能之一。之前有过学习使用,但真正在项目中使用时总是漏洞百出。比如,在实习中,前几次提交代码时,不知git commit -amend
导致code reviewer提的修改丢失,算是长了记性。
特别总结一下git的使用。
1、git & github
git是一个分布式的
Git 是一个分布式版本控制系统,最初由 Linux 之父 Linus Torvalds 开发,用于管理 Linux 内核代码。现在,它被广泛用于各种软件开发项目,尤其在多人协作和开源项目中非常流行。
Git 的特点
分布式:每个开发者的本地仓库都是一个完整的代码仓库,不依赖于网络。
快速高效:Git 操作如提交(commit)、切换分支(branch)都非常快。
数据完整性高:所有数据都有校验机制,防止数据损坏。
强大的分支管理:轻量、快速,支持多人协作开发。
Git 基本概念
Git的常用命令
# 初始化一个本地仓库
git init
# 克隆远程仓库
git clone https://github.com/user/repo.git
# 查看当前状态
git status
# 添加修改到暂存区
git add filename
# 提交改动
git commit -m "说明信息"
# 查看提交记录
git log
# 创建新分支
git branch new-branch
# 切换分支
git checkout new-branch
# 合并分支
git merge branch-name
# 推送到远程仓库
git push origin branch-name
# 拉取远程更新
git pull origin branch-name
GitHub 是什么?
GitHub 是一个基于 Git 的在线代码托管平台,提供了协作开发的环境和工具。
核心功能包括:
远程仓库托管:存储和管理 Git 仓库,支持公开和私有项目。
协作工具:如 Pull Request、Issue 跟踪、代码审查等,促进团队协作。
集成服务:与 CI/CD 工具、项目管理软件等集成,提升开发效率。
Git 与 GitHub 的关系
可以将 Git 比作本地的版本控制工具,而 GitHub 是基于 Git 的远程托管平台。
开发者使用 Git 管理本地代码变更,然后通过 GitHub 实现以下操作:
推送(push):将本地提交的更改上传到 GitHub 上的远程仓库。
拉取(pull):从 GitHub 上获取其他协作者的更新,合并到本地仓库。
克隆(clone):复制 GitHub 上的仓库到本地,开始开发。
2、创建一个项目
如图,github创建一个空的仓库learn-git
.
本地git远程链接到该仓库:
git clone https://github.com/XuWink/learn-git.git
修改readme.md
git add .
git commit -m "第一次修改"
git push -u origin main
3、git的四种工作状态
使用 git status
可以查看git的当前工作状态
未跟踪(Untracked)
文件存在于工作区,但未被 Git 管理。
使用
git add <file>
将其添加到暂存区,状态变为已暂存。
已修改(Modified)
文件已被修改,但尚未添加到暂存区。
使用
git add <file>
将其添加到暂存区,状态变为已暂存。使用
git restore <file>
可撤销修改,恢复到上次提交的状态。
已暂存(Staged)
文件的修改已添加到暂存区,准备提交。
使用
git commit -m "message"
提交更改,状态变为已提交。使用
git restore --staged <file>
可将文件从暂存区移除,状态变为已修改。
已提交(Committed)
文件的修改已提交到本地仓库。
使用
git push
将提交的更改推送到远程仓库
设置commit模板
在软件开发过程中,规范化的提交信息(commit messages)对于项目的可维护性和协作效率至关重要。Git 提供了配置 commit template 的功能,允许开发者预设一个模板,用于在提交代码时自动填充或提示提交信息
git config –global commit.template /path/to/template.txt
/path/to/template.txt改为自己的模板,模板内容可以为如下内容:
fix(<模块>): <描述>
#<具体描述>
#<问题单号>
# type 字段包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
# scope:用于说明 commit 影响的范围,比如数据层、控制层、视图层等等。
# subject:是 commit 目的的简短描述,不超过50个字符
# Body:部分是对本次 commit 的详细描述,可以分成多行
# Footer:用来关闭 Issue或以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法
然后再commit时,直接使用 git commit