- DevOps 为什么要使用 Git
- 版本控制系统是什么
- 为什么要使用版本控制
- 版本控制术语
- 集中式与分布式版本控制
- 什么是 Git
- 第 0 步:设置 Git
- 第 1 步:提交更改
- 第 2 步:分支与合并
- 第 3 步:远程协作
- 作业与挑战
Git 是一种连接开发团队和运维团队的工具。通过 Git,开发人员可以将源代码提交,自动测试和部署过程中如果发现代码有问题无法通过要求,需要通过 Git 将代码打回去。DevOps 需要编写脚本和模板,管理复杂的部署流程,使用 Git 来管理这些文件和分支。
版本控制系统用于记录版本变更,Git 是一种版本控制工具。它管理源代码的版本,记录文本文件的修改,每次修改都会生成新的版本。
- 撤销改动或回滚版本:记录每次修改,形成时间线,允许回滚到之前的状态。
- 回溯历史:团队合作时,可以查看历史记录,了解文件为何变成现在的样子。
- 协同合作:团队成员可以同时修改不同段落,Git 可以帮助合并不同的修改。
- 备份:Git 记录最新版本,当本地内容丢失时,可以拉取最新内容。
- Repository:项目仓库
- Diff:两个状态之间的差异
- Commit:项目在某个时间点的快照
- Branch:与主分支并行的修改
- Merge:将一个分支的修改引入到另一个分支
- Clone:下载项目的本地副本
- Fork:对他人项目的版本进行修改
- 集中式版本控制:依赖于中央服务器,单点故障风险高,远程提交慢。
- 分布式版本控制:没有单点故障风险,每个开发者有完整副本,可以离线提交,分支操作快。
Git 是一种分布式版本控制系统,设计用于跟踪软件开发中的源代码更改。它支持分布式、非线性的工作流,目标是速度和数据完整性。
Git 是一个命令行工具,首先确认 Git 是否已经安装,输入 git --version。
git config --global user.name "your name"
git config --global user.email "your email address"
git config --global core.editor "code --wait"使用 --global 设置全局配置,不使用 --global 则只影响当前仓库。
不加 --global 设置本地配置,优先级高于全局配置。
Git 只能管理文本文件,不能管理复杂文件(如 Word)。
mkdir learngit
cd learngit
pwd
/Users/jonny/learngit
git init或使用 git clone 克隆现有仓库。
git clone <repository-url>创建 .gitignore 文件列出不需要 Git 追踪的文件和文件夹。
更多 .gitignore 模板:GitHub .gitignore
创建 GitHub 仓库:GitHub 新建仓库
Git 提交分两步:git add 和 git commit。
git add <file>
git add . # 提交所有文件到暂存区
git commit -m "commit message"提交信息要有意义,回顾历史时可以清楚理解每次提交的用途。
- 撤销最后一次提交:
git commit --amend - 删除文件:
git rm <file> - 清理工作区:
git clean -f - 暂存修改:
git stash - 应用暂存:
git stash apply - 弹出暂存:
git stash pop stash@{0}
常用命令:
git status
git diff
git log --all --decorate --oneline --graph- 创建分支:
git branch <branch-name> - 切换分支:
git checkout <branch-name> - 删除分支:
git branch -d <branch-name> - 创建并切换分支:
git checkout -b <branch-name>
git checkout main
git merge <branch-name>
git branch -d <branch-name>如果不想解决冲突:
git merge <branch-name> --abort
git merge <branch-name> --overwrite-ignore
git merge <branch-name> --no-overwrite-ignore- 合并:
git merge <branch-name> - 变基:
git rebase <branch-name>
使用 VSCode 的 Git History 插件可视化历史记录:Git History Plugin
手动建立或删除仓库联系:
git remote add <name> <url>
git remote rm <name>
git remote rename <old-name> <new-name>git branch -u <name>/<branch>git fetch # 检查本地和远程仓库是否相同
git pullgit push <name> <branch>
git push <name> <local_branch>:<remote_branch>VSCode 中的同步操作包括 pull 和 push。
git push -d <name> <branch>
git push <name> :<branch>拉取请求(PR)允许其他人查看和评论你的修改。在 GitHub 上创建 PR:
- 创建分支
- 提交更改
- 打开拉取请求
- 讨论和审查
- 合并和部署
PR 的好处:
- 同行评审
- 充分测试,稳定性更好
- 减少冲突
- 持续交付
- 责任更明确
PR 合并策略:
- 创建分支
- 提交更改
- 打开拉取请求
讨论和审查
- 合并和部署
创建 .gitignore 文件列出不需要 Git 追踪的文件和文件夹。
- 永远不要忘记
.gitignore - 在 PR 前解决冲突
- 尽量将同一功能或 Bug 修复的代码放在一个提交中
- 确保每次提交不会破坏构建流水线,代码风格检查和单元测试通过
git push -f
git push <name> +<branch_name>
git push --force-with-lease