【入职必备】Git 入门指南
- 作者
- Name
- 青玉白露
- Github
- @white0dew
- Modified on
- Reading time
- 6 分钟
阅读:.. 评论:..
适合实习生学习使用。让我们从基础开始,逐步深入Git的核心概念和常用操作。
1. Git 是什么?
Git 是一个分布式版本控制系统,用于跟踪文件的变化,协调多人协作。想象一下,Git 就像一个时光机,让你可以穿梭于项目的不同版本之间。
## 2. 安装 Git 首先,我们需要安装 Git。访问 Git 官网 下载适合你操作系统的版本。 安装完成后,打开终端(命令行),输入:git --version
如果显示 Git 版本号,说明安装成功。
3. 配置 Git
在使用 Git 之前,我们需要进行一些基本配置:
git config --global user.name "Your Name" git config --global user.email "your_email@example.com"
这些信息会与你的提交关联。
4. 创建一个 Git 仓库
让我们创建一个新的项目并初始化 Git 仓库:
mkdir my_project cd my_project git init
这会在 my_project
文件夹中创建一个新的 Git 仓库。
5. Git 的基本工作流
Git 的工作流主要包含三个区域:
- 工作目录(Working Directory)
- 暂存区(Staging Area)
- Git 仓库(Git Repository) ## 6. 添加和提交文件 创建一个新文件:
echo "Hello, Git!" > hello.txt
将文件添加到暂存区:
git add hello.txt
提交更改:
git commit -m "Add hello.txt file"
7. 查看状态和历史
查看仓库状态:
git status
查看提交历史:
git log
8. 分支操作
创建新分支:
git branch feature
切换到新分支:
git checkout feature
或者,创建并切换到新分支:
## 9. 合并分支 假设我们在git checkout -b feature
feature
分支上完成了工作,现在要合并回 main
分支:
git checkout main git merge feature
10. 远程仓库操作
添加远程仓库:
git remote add origin https://github.com/username/repo.git
推送到远程仓库:
git push -u origin main
从远程仓库拉取:
git pull origin main
11. 解决冲突
当合并分支或拉取远程更改时,可能会遇到冲突。Git 会在文件中标记冲突区域:
<<<<<<< HEAD 你的更改 ======= 其他人的更改 >>>>>>> branch-name
手动编辑文件解决冲突,然后:
git add conflicted_file.txt git commit -m "Resolve merge conflict"
当然,我很高兴能够补充一些额外的内容,以使这个Git教程更加全面和实用。以下是一些重要的补充内容:
12. gitignore 文件
在项目中,有些文件我们不希望被Git追踪,例如编译生成的文件、临时文件或包含敏感信息的配置文件。我们可以使用 .gitignore
文件来告诉Git忽略这些文件。
创建 .gitignore
文件:
touch .gitignore
在 .gitignore
文件中添加规则,例如:
# 忽略所有 .log 文件 *.log # 忽略 node_modules 目录 node_modules/ # 忽略 .env 文件 .env
15. 撤销操作
撤销暂存的文件:
git reset HEAD <file>
撤销最后一次提交:
git commit --amend
16. Git 标签
为重要的提交添加标签,通常用于标记发布版本:
git tag -a v1.0 -m "Version 1.0"
推送标签到远程仓库:
git push origin --tags
17. Git Hooks
Git钩子是在Git执行特定事件时自动运行的脚本。例如,在提交前运行测试:
在 .git/hooks
目录下创建 pre-commit
文件:
#!/bin/sh npm test
确保脚本有执行权限:
chmod +x .git/hooks/pre-commit
18. Git 重基操作 (Rebase)
重基是一种整理和修改提交历史的方法:
git checkout feature git rebase main
这会将 feature
分支的基础移动到 main
分支的最新提交。
git stash git checkout another-branch # 做一些工作 git checkout original-branch git stash pop
附录:常见 Git 问题和解答
merge 和 rebase 的区别是什么?应该用哪个?
merge 和 rebase 都是用于整合不同分支的变更,但它们的工作方式不同。
Merge
-
创建一个新的合并提交
-
保留完整的历史记录
-
不改变现有的提交历史
#### Rebase -
将一个分支的提交移动到另一个分支的顶端
-
创建一个线性的历史记录
-
改变提交历史
#### 使用建议: -
使用 merge 当:
- 你想保留完整的历史记录
- 处理公共分支(如 main)
-
使用 rebase 当:
- 你想要一个干净的、线性的历史记录
- 处理个人的功能分支
总的来说,在团队协作中,对于公共分支通常推荐使用 merge,而在个人分支上可以使用 rebase 来保持历史整洁。
2. 如何撤销一个已经推送到远程仓库的提交?
这是一个常见但棘手的问题。以下是步骤:
- 使用
git revert
(推荐):
git revert <commit-hash> git push origin main
这会创建一个新的提交来撤销之前的更改。
- 使用
git reset
(谨慎使用):
git reset --hard <previous-commit-hash> git push origin main --force
这会彻底删除提交历史,可能会影响其他协作者。
3. 什么是 Cherry-pick,何时使用它?
Cherry-pick 允许你选择特定的提交并将其应用到另一个分支。
git cherry-pick <commit-hash>
使用场景:
- 当你只需要另一个分支的某个特定更改时
- 当你意外地在错误的分支上进行了提交时
4. 如何解决合并冲突?
- 使用
git status
查看冲突文件 - 打开冲突文件,查找冲突标记(<<<<<<, =======, >>>>>>>)
- 手动编辑文件解决冲突
- 使用
git add
标记冲突已解决 - 使用
git commit
完成合并
5. 什么是 Git 工作流(Git Flow)?
Git Flow 是一种流行的分支管理模型,定义了一套使用 Git 分支的标准流程。 主要分支:
- main:稳定的生产版本
- develop:开发分支
- feature/*:新功能分支
- release/*:发布准备分支
- hotfix/*:紧急修复分支 ### 6. 如何使用 Git 进行代码审查?
- 创建一个功能分支
- 在功能分支上进行开发
- 创建 Pull Request(GitHub)或 Merge Request(GitLab)
- 审查者审查代码,提供反馈
- 开发者根据反馈进行修改
- 审查通过后,合并到主分支