目录:
- git环境配置
- git工作流程
- git常用命令
- gitlab实战
- gitlog分析与检索
- 分支管理策略
- git合并与冲突
1.git环境配置
Git 简介:
- Git 是目前世界上最先进的分布式版本控制系统。
- Git 优点:
- 适合分布式开发,强调个体。
- 公共服务器压力和数据量都不会太大。
- 速度快、灵活。
- 任意两个开发者之间可以很容易的解决冲突。
- 离线工作。
Git 环境验证:
- Windows:
- cmd 中输入命令
git --version
。
- cmd 中输入命令
- MacOS:
- 终端中输入命令
git --version
。
- 终端中输入命令
2.git工作流程
Git 基本概念:
- 文件状态
- 未跟踪(Untracked)
- 未修改(Unmodified)
- 已修改(Modified)
- 暂存区(Staged)
- 三个工作区域
- 工作区(Working Directory)
- 暂存区(Staging Area)
- 仓库区(Repository)
- 工作树(Worktree)
Git 工作流程:
3.git常用命令
基于 Git 的远程仓库:
- GitHub https://github.com/ 世界上最主流的远程开源仓库。
- Gitee https://gitee.com/ 国内目前比较主流的开源仓库,也可以私有化部署。(推荐)
- GitLab https://gitlab.com/ 私有化部署,企业使用较多。
Git 同步命令:
克隆远程仓库:
git clone <url>
远程连接方式 特点
- HTTPS 连接使用给定 URL 即可 clone,在 push 时验证用户名和密码。
- SSH 连接 需要提前添加 SSH Key,在 push 时不需要输入用户名,配置 SSH 时设置了密码才需要输入密码。
HTTPS 连接:
- 配置全局帐号:
- 配置用户名:
git config --global user.name "your name"
- 配置邮箱:
git config --global user.email "your_email@youremail.com"
- 配置用户名:
- 验证配置结果:
git config --global --list
SSH 连接:
拉取远程仓库:
- 拉取远程仓库到本地:
git pull
初始化仓库:
- 在已存在的目录中初始化仓库:
git init
- 关联远程仓库:
git remote add origin <url>
Git 修改命令:
跟踪新文件:
- 添加文件或目录到暂存区:
git add <file>/<directory>
# 跟踪某个文件
git add new_file.txt
# 跟踪当前目录下所有文件
git add .
提交更新:
- 提交到本地仓库:
git commit -m "comments"
推送到远程仓库:
- 推送本地仓库到远程仓库:
git push
Git 常用调试命令:
检查当前文件状态:
- 查看文件状态:
git status
查看已暂存和未暂存的修改:
- 比较当前文件和暂存区域快照之间的差异:
git diff
- 查看已暂存的将要添加到下次提交里的内容:
git diff --staged
撤销操作:
- 撤销对文件的修改:
git checkout <file>
- 取消暂存:
git reset HEAD <file>
cat readme.txt
1234
update1
update2
update3
git checkout readme.txt
cat readme.txt
1234
update1
update2
git reset HEAD file.txt
git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
file.txt
nothing added to commit but untracked files present (use "git add" to track)
移除文件:
- 删除文件:
git rm -f <file>
- 移出暂存区:
git rm --cached <file>
忽略文件:
.gitignore
文件。- 有些文件无需纳入 Git 的管理。
- 比如日志文件,或者编译过程中创建的临时文件。
4.gitlab实战
GitLab 帐号:
- 申请账号。
- 申请权限。
配置公钥:
- 找到 id_rsa.pub,复制内容。
- GitLab -> 我的头像 -> Prefereces。
- SSH keys。
- 粘贴公钥,点击 add key。
5.gitlog分析与检索
Git Log 分析:
- 查看项目历史信息:
git log
Git Log 检索:
- 筛选时间:
git log --since='2023-02-02 00:00:00'
- 筛选作者:
git log --author='feier'
- 筛选描述:
git log --grep='update'
6.分支管理策略
分支管理:
- 概念:
- 每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支。
- 价值:
- 多人协作。
- 环境管理。
创建分支:
- 新建分支,但仍然停留在当前分支:
git branch 分支名
- 新建分支并直接切换至该分支:
git checkout -b 分支名
查看分支:
- 列出所有本地分支:
git branch
- 列出所有远程分支:
git branch -r
- 列出所有本地与远程分支:
git branch -a
切换分支:
- 切换到指定分支:
git checkout 分支名
删除分支:
- 删除指定分支:
git branch -d 分支名
7.git合并与冲突
分支合并应用场景:
- 合入主分支。
- 主分支合并其他分支:
- 通常使用 Merge Request 的方式。
合并分支:
- 合并指定分支到当前分支:
git merge 其他分支 本分支
- 变基:重新设置基准:
git rebase 其他分支
什么是冲突?
- 冲突:在并行工作的模式下,工作最终会发生重叠。当多个成员以不同的方式更改同一行内容时,在这种情况下,Git 无法判断哪个版本是正确的,这时就会产生冲突。
- 冲突场景:
- 多个分支代码合并到一个分支时。
- 多个分支向同一个远端分支推送代码时。
解决冲突:
- 解决冲突方式:
- IDE 中解决冲突:选择要保留的内容点击 Accept,保存代码。
- 文件中解决冲突:保留需要的内容,删除其余内容,去掉分割线,保存代码。
- 冲突解决流程:
- 在本地当前分支上,修改冲突内容。
- 执行
git add .
添加到暂存区。 - 执行
git commit -m '提交说明'
提交到本地仓库,完成合并。 - 执行
git push
提交到远程仓库。